1.Индексные функции в расчете Зарплаты
Данная возможность позволяет использовать функции описанные в библиотеке в случае, когда не используется формула в настройке
кода начисления,удержания или вычета.
например. Код "004" Тариф может считаться как X*H гда X- ставка,H - отработанные часы.
Однако если используется нарядная система начислений то подключаем функцию
ФУНКЦИЯ ТИП_ЧИСЛО:Начисление004(ТИП_ЧИСЛО:P1,P2,P3,P4,P5,P6,P7;ТИП_СТРОКА:S1,S2,S3;ТИП_ЛОГИКА:L1) нм=ДАТА(1,ЗНАЧ!(ПОДСТР(S1,1,2)),ЗНАЧ!(ПОДСТР(S1,3)) ) км=ДАТА(1,ЗНАЧ!(ПОДСТР(S1,1,2))+1,ЗНАЧ!(ПОДСТР(S1,3)) ) Сз=0 ОКРУГЛЕНИЕ(2) ЦИКЛ ПО ЖУРНАЛУ б_кнНаряды ,б_кнНарРасп,СУММА(сумма)Ит,СУММА(отраб_дней)Дн,СУММА(отраб_час)Чс,СУММА(сумма_фикс)Сф (дата>=нм И дата<км И таб_н=P1 ) {Дн+=д.дни Чс+=д.часы Ит+=д.сумма_нач} Ит=Ит+Сф КОНЕЦ_ЦИКЛА
P3=Ит P7=Дн P4=Чс P2=Ит
Начисление004=ОКРУГЛЕНИЕ(МАКС(P2,P3),2)
КОНЕЦ_ФУНКЦИИ 2.Процедура расчета остатков использующая коэффициенты движения
Известны разные способы расчета остатков товара,особо распостраненный метод хранения информации,использующий триггеры.
но при высоком быстродействии есть недостаток,что хранящиеся данные могут быть утеряны,уничтожены,неверная сработка триггера.
Мы используем другой метод - "операционный расчет",т.е. каждый раз остатки расчитываются на дату операции,исключающие текущую(выбранную).Т.о. исключено формирование данных которые могут быть внесены поздней датой.
Например в некоторых настройках ИП вы можете проверить: Внесите приход 1.02.2010 100 ед.товара...02.02.2010 сделайте расход 20 шт,
а 28.02.2010 приход еще 50 единиц. как вы думаете какой остаток будет виден 20.02.2010?- 130...Бред?конечно,но зато быстро.
Такая схема звучит - Я тебе сейчас отдам деньги ,которые у меня будут завтра,но сейчас у меня их нет.
А если бы вы видели исходный код таких расчетов....
Вот альтернатива :
FOR SELECT DISTINCT D_DVMA.kod22 ,SUM(d_dvma.summa* N_UCMA.KOYEF_POL2 )AS SUMMA,SUM(D_DVMA.KOLICHESTVO * N_UCMA.KOYEF_POL2 )AS OSTATOK FROM D_DVMA INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID and DVMATV.ip$firm like :FF) INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII ) WHERE ( DVMATV.ip$firm like :FF and (N_UCMA.SPRMATOTVPOLUCH = 1 ) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol_pol=:mol) and (DVMATV.data2<=:dta) ) GROUP BY D_DVMA.kod22 INTO :KOD,:SUMMA,:OSTATOK DO begin if (round(:OSTATOK,4)<>0) then cena_param=abs(:summa/:OSTATOK) ; /*kod_param=kod; OSTS_PARAM=ostatok; SUMMA_PARAM=summa; name_PARAM=nazvanie2;*/ suspend; end for /* Ýòî ðàñ÷åò ðàñõîäà òîâàðà*/ SELECT DISTINCT D_DVMA.kod22,SUM(d_dvma.summa_ucheta* N_UCMA.KOYEF_POst2 )AS SUMMA, SUM( D_DVMA.KOLICHESTVO * N_UCMA.koyef_post2 )AS OSTATOK FROM D_DVMA INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID and DVMATV.ip$firm like :FF) INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII) WHERE ( DVMATV.ip$firm like :FF and (N_UCMA.SPRMATOTVPOL = 1 ) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol=:mol) and (DVMATV.data2<=:dta) ) GROUP BY D_DVMA.kod22 INTO :KOD,:SUMMA,:OSTATOK DO begin if (round(:OSTATOK,4)<>0) then cena_param=abs(:summa/:OSTATOK) ; /*kod_param=kod; OSTS_PARAM=ostatok; SUMMA_PARAM=summa; name_PARAM=nazvanie2;*/ suspend; end END Просто и точно ...а потому что просто у вида операции добавлены 2 поля - Коэф.отправителя и Коэф.получателя...

3.Внешняя 3.Настройка проводок к операциям.
Как видно из рисунка - проводки настраиваются в детализации справочника.используя тот или иной аргумент оперативно устанавливается нужный алгоритм.
4.Технология динамических контекстных меню.
В журнале движения ТМЦ и услуг очень удобно использовать такую методику.Ведь можно оперативно добавлять первичные документы
относящиеся к данному типу операций.
В детализации Настройки видно какие бланки(первичные формы) используются для данной операции...
В некоторых настройках я видел бесконечные ЕСЛИ ИНАЧЕ....спрашивается, А зачем?Наверно от большого ума.
5.Технология связей
используется в модулях Призводство,Торговля,Автосервис...
Идея такова: Есть общий журнала движения ТМЦ и Услуг.Остатки и проводки формируются по его данным..Но для удобства работы и ограничения доступа была разработана схема :
Упрощенная схема технологии связей журналов
Сторонний журнал имеет свои специфические поля которые не нужны в общем журнале ТМЦ,но необходимы для создания записей в нем.
Тут видно ... что выполняется выпуск изделия из компонентов. в итоге должно сфоримроваться несколько операций в журнале ТМЦ.
При условии если Склад и Цех разные материально-ответственные лица, то получается 3 операции
1.Внутреннее перемещение компонентов со Склада в Цех
2.Списание компонентов с Цеха на счет затрат
3.Сборка(выпуск)
Что видно из справочника Настройка Производства.
А вот что можно увидеть с помощью сервисной типовой операции...
Но как это реализовано? С помощью Журнала связи..Который устанавливает зависимость записи Источник с Приемником...Т.о. реализуется отношение Один-Ко Многим...
Можно привязывать различные журналы...так в модуле Автосервис к записи в журнале Авторемонтов привязывается еще и к Кассовому журналу,что позволяет контролировать оплату и исключает возможность двойной оплаты.
Пока что все...вот такие наработки делаются в сельской местности....
|