Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Изменяется задолженность по предприятию и работникам (http://forums.kuban.ru/f1040/izmenyaetsya_zadolzhennost-_po_predpriyatiyu_i_rabotnikam-1984862.html)

SergeyY 22.12.2011 12:54

Изменяется задолженность по предприятию и работникам
 
В течении всего года сальдо конечное в своде по зп не совпадает с сальдо на начало в следущем периоде. Точней разница между задолженностью предприятия и работниками не меняется, а вот сами задолженности разные. Где мы неправильно что делаем?

SergeyY 22.12.2011 12:56

П.С. ЗиК 7.7

VZ 22.12.2011 13:21

Все правильно. Так и задумано.
В бухии задолженность свернута. В ЗиКе - нет, в связи с необходимостью (согласно законодательству) отслеживать задолженности в выплатах по каждому месяцу.
Хотя не все это практикуют. Но отсюда - и "разбегание". На самом деле, просто нет "свертки".
Небольшая правка отчета - и ЩЯСТЯ :D

SergeyY 22.12.2011 13:36

Нет я понимаю почему она там развернута. Я не понимаю почему например:
Январь: задолженность за предприятием 10руб
за работниками 5руб
Февраль: за предприятием 8руб
за работниками 3руб.
Итоговое сальдо неизменяется, но долги то почему скачут :(? Что за небольшая правка? Может уже где лежит "правленный" отчет?

VZ 22.12.2011 13:45

[em]Может уже где лежит "правленный" отчет?[/em]
Может, и лежит. Я сам правил. Там правок-то в двух местах...

victuan 22.12.2011 16:07

У меня даже лежит правленная конфига. Красота! "девятки" в сальдо теперь не вылезают, и сальдо конечное всегда сходится с начальным с точностью до развернутого.

SergeyY 23.12.2011 08:41

(5,6) А подглядеть дадите :)))?

victuan 23.12.2011 09:18

7-SergeyY >Дам, вот выпущу ЗИК 318 fix и дам подглядеть.

SergeyY 23.12.2011 11:45

(8) Спасибо. Где ждать/искать?

VZ 23.12.2011 18:40

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]
Все, собственно :)

SergeyY 26.12.2011 07:13

(11) Спасибо. Попробую

victuan 26.12.2011 08:05

9-SergeyY >Да собственно вот [url]http://forums.kuban.ru/showthread.php?t=1438382[/url] (пост 11 Кондрат2)


Текущее время: 21:25. Часовой пояс GMT +3.