Доработка правил конвертации ЗУП->Бух1.2: выгрузка отражения зарплаты

Задача: реализовать в обработке обмена между конфигурациями Зарплата и Управление Персоналом 2.1 и Бухгалтерия для Украины 1.2 выгрузку начислений и движений по регистру "Взаиморасчеты с работниками организаций"

Конфигурации: Зарплата и Управление Персоналом для Украины, редакция 2.1 (2.1.47.1) и Бухгалтерия для Украины, редакция 1.2 (1.2.25.1) 

Изучение задачи

Для обмена между ЗиУП и другими бухгалтерскими конфигурациями предусмотрена обработка "Выгрузка данных в 1С:Бухгалтерию", которая входит в состав ЗиУП.

Бухгалтерию 8 для Украины"

Для формирования проводок по бухгалтерскому учету начисленной зарплаты в конфигурации ЗиУП существует документ "Отражение зарплаты в регл. учете". При помощи правила конвертации объектов (ПКО) "Проводки", он выгружается в Бухгалтерию 1.2 в виде документа "Начисление зарплаты работникам организаций".

Правило конвертации объекта "Проводки"

Проблема: в регистре "Взаиморасчеты с работниками организаций" накапливаются не существующие долги перед сотрудниками. Расходный кассовый ордер с типом операции "Выплата зарплаты по ведомостям" добавляет в регистр взаиморасчетов записи с видом движения "Расход". Документ начисления зарплаты (не предварительный расчет) создает записи по регистру взаиморасчетов с видом "Приход". Однако, выгруженный через обмен, этот документ имеет заполненную только табличную часть "ОтражениеВУчете" и таких записей не делает.

Решение: доработать правила обмена между двумя конфигурациями т. о., чтобы выгруженный документ начисления зарплаты формировал все движения. В нашем случае это:

  1. бухгалтерские проводки;
  2. регистр "Взаиморасчеты с работниками организаций";
  3. регистры расчета "Начисления"
  4. регистр расчета "Отражения".

После изучения конфигурации "Бухгалтерия для Украины", очевидно, что для 2 и 3 пунктов необходима заполненная ТЧ "Начисления", а для пункта 4 заполненная ТЧ "ПроводкиНачисления" документа начисления зарплаты.

Редактируем правила конвертации объектов

Выгружаем табличную часть "Начисления"

Для выгрузки ТЧ "Начисления" создадим правила конвертации группы свойств (ПКГС). Большинство своств совпадают по имени и проблемы это не составит. Свойства "БазовыйПериодНачало" и "БазовыйПериодКонец" присвоим равными дате начала и дате окончания соответственно:

ПКС "Базовый период конец"

ПКГС "Начисления"

В конфигурации ЗиУП бухгалтер использует несколько видов начислений и несколько видов премий. При выгрузке, нам необходимо любые начисления заменять на "Оклад по дням", а любые премии на "Премия". Для того чтобы определить, является ли выгружаемый вид расчета премией или нет, будем использовать его реквизит "ПоказателиВидовОплатыТруда". В ПКС "Вид расчета" в событие перед выгрузкой добавляем следующий код:

Премия = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Премия");
ОкладПоДням = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням;

Если НЕ ЗначениеЗаполнено(Премия) Тогда
	Премия = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.Месячная;	
КонецЕсли; 

Если ОбъектКоллекции.ВидРасчета.ПоказателиВидовОплатыТруда = Справочники.СтатьиНалоговыхДеклараций.ОтчетПоТруду_Премии Тогда
	Значение = Премия;
Иначе
	Значение = ОкладПоДням;
КонецЕсли;

Сворачиваем табличную часть

После подмены видов расчета в выгруженной табличной части может быть несколько одинаковых строк с отличающимися суммами. Поэтому при загруке необходимо свернуть табличную часть "Начисления". Для этого удобно использовать справочник "Алгоритмы". Каждый элемент которого описывает алгоритм, который может многократно использоваться в любых обработчиках событий выгрузки и загрузки данных в правилах обмена. Создадим алгоритм "СвернутьТЗ" с флагом "Используется при загрузке":

ГруппКолонки = "";
СуммКолонки = "";

Для каждого Колонка Из ТЗ.Колонки Цикл
	Если Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
		СуммКолонки = Строка(СуммКолонки) + Колонка.Имя + ", ";
	Иначе
		ГруппКолонки = Строка(ГруппКолонки) + Колонка.Имя + ", ";	
	КонецЕсли; 	
КонецЦикла; 

//Обрезаем последние ", "
ГруппКолонки = ?(ПустаяСтрока(ГруппКолонки),"",Лев(ГруппКолонки, СтрДлина(ГруппКолонки)-2));
СуммКолонки = ?(ПустаяСтрока(СуммКолонки),"",Лев(СуммКолонки, СтрДлина(СуммКолонки)-2));

ТЗ.Свернуть(ГруппКолонки, СуммКолонки);

Далее в событие "После загрузки" ПКО "Проводки" просто добавляем:

ТЗ = Объект.Начисления.Выгрузить(); 
Выполнить(Алгоритмы.СвернутьТЗ);
Объект.Начисления.Загрузить(ТЗ);

Выгружаем табличную часть "НачисленияПроводки"

После изучения кода документа "Начисление зарплаты" можно сделать следующий вывод: для заполнения ТЧ "НачисленияПроводки" мы можем воспользоваться экспортной процедурой "РассчитатьНачисленияПроводки" из модуля объекта документа. В нее мы должны передать список сотрудников. Т. о. в событие "После загрузки" ПКО "Проводки" добавляем:

мСотрудники = Новый СписокЗначений;
мСотрудники.ЗагрузитьЗначения(Объект.РаботникиОрганизации.ВыгрузитьКолонку("Сотрудник"));
Объект.НачисленияПроводки.Очистить();
Объект.Записать(РежимЗаписиДокумента.Запись);
Объект.РассчитатьНачисленияПроводки(мСотрудники);

Результат работы

Теперь документ "Начисление зарплаты работникам организаций", выгруженный из ЗиУП через правила обмена, производит все необходимые нам движения:

5.png


Похожие материалы

Комментарии