Как сопоставить показатели расчета при переходе с ЗУП 2.5 на ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При переходе с редакции 2.5 на 3.1 конфигурации «Зарплата и управление персоналом» одной из самых сложных задач является перенос специфических начислений, содержащих несколько показателей. В старой редакции документ ПремииРаботниковОрганизации позволял хранить значения до шести показателей непосредственно в строках табличной части. В новой редакции 3.1 архитектура хранения данных кардинально изменилась. Давайте подробно разберем, как состыковать эти данные и правильно организовать перенос.

Различия в архитектуре хранения показателей

Проанализируем ситуацию: в ЗУП 2.5 показатели жестко привязаны к плану видов расчета ДополнительныеНачисленияОрганизации. В документе премии они отображаются как колонки. В ЗУП 3.1 структура стала более гибкой, но и более сложной для понимания:

  1. Вертикальное хранение: В документе Премия (и многих других расчетных документах) показатели вынесены в отдельную табличную часть Показатели. Если у одного сотрудника в расчете участвуют шесть показателей, то в таблице Начисления будет одна строка, а в таблице Показатели — шесть строк.
  2. Связь через ключ: Связь между сотрудником и его набором показателей осуществляется через техническое поле КлючСвязи. Это целое число, которое должно совпадать в обеих табличных частях.
  3. Независимость показателей: Показатели в 3.1 могут существовать отдельно от видов расчета и использоваться в различных формулах.

Методика сопоставления данных (Мэппинг)

Перед тем как приступать к написанию кода переноса, нам необходимо составить таблицу соответствия. Рассмотрим рекомендуемый алгоритм подготовки:

  1. Создание таблицы в Excel: Выпишем все виды расчета из ЗУП 2.5 и соответствующие им показатели. Напротив каждого показателя укажем его будущий аналог в ЗУП 3.1.
  2. Использование регистров сведений: Для автоматизации процесса сопоставления при программной загрузке создадим в одной из баз вспомогательный регистр сведений. В нем пропишем колонки: «Вид расчета 2.5», «Показатель 2.5», «Вид расчета 3.1», «Показатель 3.1».
  3. Идентификация показателей: В ЗУП 3.1 при поиске показателя кодом крайне важно использовать реквизит Идентификатор, а не наименование. Идентификатор используется в формулах и остается неизменным, даже если пользователь переименует показатель в интерфейсе.

Программное заполнение документа «Премия» в ЗУП 3.1

При написании собственного алгоритма переноса данных нам нужно уделить особое внимание заполнению табличных частей. Разберем пример логики заполнения:

Сначала мы добавляем строку в таблицу Начисления, фиксируем КлючСвязи, а затем в цикле добавляем все связанные показатели в таблицу Показатели. Рассмотрим схематичный пример кода:


// Создаем новую строку начисления
НоваяСтрокаНачисления = ДокументОбъект.Начисления.Добавить();
НоваяСтрокаНачисления.Сотрудник = СсылкаНаСотрудника;
НоваяСтрокаНачисления.КлючСвязи = ТекущийКлюч; // Уникальное число в рамках документа

// Добавляем показатели для этой строки
Для Каждого ТекПоказатель Из СписокПоказателей25 Цикл
    НоваяСтрокаПоказателя = ДокументОбъект.Показатели.Добавить();
    НоваяСтрокаПоказателя.КлючСвязи = ТекущийКлюч;
    НоваяСтрокаПоказателя.Показатель = НайтиПоказательПоИдентификатору(ТекПоказатель.Имя);
    НоваяСтрокаПоказателя.Значение = ТекПоказатель.Значение;
КонецЦикла;

Настройка формул и видов начислений

Чтобы показатели корректно отображались и рассчитывались в документе, выясним причины возможных ошибок в настройках справочника Начисления:

Альтернативный вариант: Шаблоны ввода исходных данных

Если структура премии слишком сложна, или вы хотите, чтобы интерфейс ввода был максимально похож на ЗУП 2.5 (где показатели идут колонками), рассмотрим механизм «Шаблоны ввода исходных данных»:

  1. Создаем новый шаблон в меню «Настройка».
  2. На закладке «Показатели зарплаты» выбираем все шесть нужных нам показателей.
  3. Настраиваем способ вывода: «В виде таблицы (в несколько колонок)».
  4. После этого используем документ Данные для расчета зарплаты. В нем показатели будут отображаться горизонтально, что значительно упрощает визуальную сверку при переносе данных вручную или программно.

Особенности разработки печатных форм

При создании печатных форм в ЗУП 3.1 нам придется изменить подход к выборке данных. В 2.5 мы просто обращались к реквизитам строки. Теперь же нам нужно выполнять группировку. Проанализируем, как это сделать:

Данные из табличной части Показатели нужно «развернуть» обратно в горизонтальную строку. Для этого удобно использовать запрос с соединением таблицы Начисления и нескольких временных таблиц (или левых соединений) таблицы Показатели, где каждое соединение фильтруется по конкретному идентификатору показателя. Также можно использовать программную обработку результата запроса, обходя коллекцию строк и собирая соответствие КлючСвязи -> СтруктураПоказателей.

Помните, что платформа 1С v8.3 стабильно работает с большим количеством показателей, но для удобства пользователей старайтесь не перегружать одну формулу более чем 6-10 переменными, чтобы не затруднять проверку результатов через окно «Показать подробности расчета».

← На главную