![]() |
Изменяется задолженность по предприятию и работникам В течении всего года сальдо конечное в своде по зп не совпадает с сальдо на начало в следущем периоде. Точней разница между задолженностью предприятия и работниками не меняется, а вот сами задолженности разные. Где мы неправильно что делаем? |
П.С. ЗиК 7.7 |
Все правильно. Так и задумано. В бухии задолженность свернута. В ЗиКе - нет, в связи с необходимостью (согласно законодательству) отслеживать задолженности в выплатах по каждому месяцу. Хотя не все это практикуют. Но отсюда - и "разбегание". На самом деле, просто нет "свертки". Небольшая правка отчета - и ЩЯСТЯ :D |
Нет я понимаю почему она там развернута. Я не понимаю почему например: Январь: задолженность за предприятием 10руб за работниками 5руб Февраль: за предприятием 8руб за работниками 3руб. Итоговое сальдо неизменяется, но долги то почему скачут :(? Что за небольшая правка? Может уже где лежит "правленный" отчет? |
[em]Может уже где лежит "правленный" отчет?[/em] Может, и лежит. Я сам правил. Там правок-то в двух местах... |
У меня даже лежит правленная конфига. Красота! "девятки" в сальдо теперь не вылезают, и сальдо конечное всегда сходится с начальным с точностью до развернутого. |
(5,6) А подглядеть дадите :)))? |
7-SergeyY >Дам, вот выпущу ЗИК 318 fix и дам подглядеть. |
(8) Спасибо. Где ждать/искать? |
7-SergeyY > Ну, вот как я изменил [em]СводПоЗаработенойПлате[/em]: 1. Процедура Сформировать(ИмяОтчета="") В тексе запроса 4 строки заремлены, 2 вставлены: // |Функция ДолгРаботников = Сумма(Результат) когда (((Расчет=ВидРасчета.НачальноеСальдоЗадолженность)или(Расчет=ВидРасчета.НачальноеСальдоОкругления)или(Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ)) и (Результат < 0)); [em]// |Функция ДолгПредприятия = Сумма(Результат) когда (((Расчет=ВидРасчета.НачальноеСальдоЗадолженность)или(Расчет=ВидРасчета.НачальноеСальдоОкругления)или(Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ)) и (Результат > 0)); |Функция ЗадолженностьПредприятия = Сумма(Результат) когда ((Расчет=ВидРасчета.НачальноеСальдоЗадолженность) и (Результат > 0)); // |Функция СальдоОкругленияРаботников = Сумма(Результат) когда ((Расчет=ВидРасчета.НачальноеСальдоОкругления) и (Результат < 0)); // |Функция СальдоОкругленияПредприятия = Сумма(Результат) когда ((Расчет=ВидРасчета.НачальноеСальдоОкругления) и (Результат > 0)); |Функция СальдоОкругления = Сумма(Результат) когда ((Расчет=ВидРасчета.НачальноеСальдоОкругления) и (Результат <> 0));[/em] Далее (легко найти, где удаленные поля запроса использовались): [em] Если (ОтбиратьПоИФ = 0) и (ОтбиратьПоФКР = 0) и (ОтбиратьПоБД = 0) Тогда //ДолгПредприятияНаНачалоМесяца = Запрос.ДолгПредприятия; //VZ. Будем формировать динамически //ДолгРаботниковНаНачалоМесяца = -Запрос.ДолгРаботников; //VZ. Будем формировать динамически ТаблицаЗапроса = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТаблицаЗапроса); //ТаблицаЗапроса.Свернуть("ОсновнойЭлемент", "СуммаНачисления,СуммаУдержания,СуммаВыплаты,СуммаВыплатыШтрафа,ВозвратВКассу,ДолгРаботников,ДолгПредприятия,ЗадолженностьПредприятия"); ТаблицаЗапроса.Свернуть("ОсновнойЭлемент", "СуммаНачисления,СуммаУдержания,СуммаВыплаты,СуммаВыплатыШтрафа,ВозвратВКассу,ЗадолженностьПредприятия,СальдоОкругления,ПереплатаНДФЛПредприятия"); //VZ. Изменение. ТаблицаЗапроса.ВыбратьСтроки(); Пока ТаблицаЗапроса.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(ТаблицаЗапроса.ОсновнойЭлемент) = 0 тогда //VZ - изменил формирование долгов. Начало Долг = ТаблицаЗапроса.ЗадолженностьПредприятия+ТаблицаЗапроса.СальдоОкругления+ТаблицаЗапроса.ПереплатаНДФЛПредприятия; Если Долг>0 Тогда ДолгПредприятияНаНачалоМесяца = ДолгПредприятияНаНачалоМесяца + Долг; Иначе ДолгРаботниковНаНачалоМесяца = ДолгРаботниковНаНачалоМесяца - Долг; КонецЕсли; //VZ - изменил формирование долгов. Окончание Оборот = ТаблицаЗапроса.СуммаНачисления - ТаблицаЗапроса.СуммаУдержания - ТаблицаЗапроса.СуммаВыплаты + ТаблицаЗапроса.ВозвратВКассу; //- ТаблицаЗапроса.СуммаВыплатыШтрафа Если РасширенноеСальдо = 0 Тогда //VZ - заремленное - изменено //ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + Макс(ТаблицаЗапроса.ДолгПредприятия + ТаблицаЗапроса.ДолгРаботников + Оборот, 0); //ДолгРаботниковНаКонецМесяца = ДолгРаботниковНаКонецМесяца + Мин(ТаблицаЗапроса.ДолгПредприятия + ТаблицаЗапроса.ДолгРаботников + Оборот, 0); ДолгВКонцеМесяца = Долг + Оборот; Если ДолгВКонцеМесяца>0 Тогда ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + ДолгВКонцеМесяца; Иначе ДолгРаботниковНаКонецМесяца = ДолгРаботниковНаКонецМесяца + ДолгВКонцеМесяца; КонецЕсли; Иначе СальдоОкрСледПериода = глСальдоОкругления(ТаблицаЗапроса.ОсновнойЭлемент,ДатаАктуальности+1); Если ТаблицаЗапроса.ЗадолженностьПредприятия > 0 Тогда //ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + Макс(ТаблицаЗапроса.ДолгПредприятия + ТаблицаЗапроса.ДолгРаботников + Оборот-СальдоОкрСледПериода, 0); ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + Макс(Долг + Оборот-СальдоОкрСледПериода, 0); Иначе //ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + Макс(ТаблицаЗапроса.ДолгПредприятия + ТаблицаЗапроса.ДолгРаботников + Оборот, 0); ДолгПредприятияНаКонецМесяца = ДолгПредприятияНаКонецМесяца + Макс(Долг + Оборот, 0); КонецЕсли; ДолгРаботниковНаКонецМесяца = ДолгРаботниковНаКонецМесяца + ?(СальдоОкрСледПериода < 0,СальдоОкрСледПериода,0); КонецЕсли; КонецЕсли; КонецЦикла; Иначе[/em] ................... Ну, и в функции [em]ПолучитьРасшифровкуСальдо()[/em] делаем в двух местах (разделенных [em]Иначе[/em]) пару одинаковых замен: [em]//РасшифровкаСписка.Установить("СуммаСальдоОкругления", Запрос.СальдоОкругленияРаботников + Запрос.СальдоОкругленияПредприятия); РасшифровкаСписка.Установить("СуммаСальдоОкругления", Запрос.СальдоОкругления); //VZ[/em] Все, собственно :) |
(11) Спасибо. Попробую |
9-SergeyY >Да собственно вот [url]http://forums.kuban.ru/showthread.php?t=1438382[/url] (пост 11 Кондрат2) |
Текущее время: 21:25. Часовой пояс GMT +3. |