Где найти аналог регистра БУОсновныеНачисления в ЗУП 3.1 при переносе доработок из ЗУП 2.5?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Переход с редакции "Зарплата и Управление Персоналом 2.5" на редакцию 3.1 — это не просто обновление, а смена всей парадигмы учета. Одной из самых частых проблем, с которой сталкиваются программисты при адаптации внешних обработок и отчетов, является поиск соответствий объектов метаданных. Классический вопрос звучит так: «В ЗУП 2.5 я брал данные из регистра расчета БУОсновныеНачисления, но в ЗУП 3.1 такого регистра нет. Где теперь лежат эти данные?».

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

Фундаментальное отличие архитектуры: почему нельзя просто найти замену

В редакции 2.5 существовал механизм так называемого "двойного расчета". Система вела параллельный учет:

  1. Управленческо-расчетный контур: Регистры расчета ОсновныеНачисления и ДополнительныеНачисления. Здесь хранились результаты расчета для выплаты зарплаты.
  2. Бухгалтерский контур: Регистры расчета БУОсновныеНачисления и БУДополнительныеНачисления. Здесь дублировались записи, но уже с привязкой к бухгалтерским проводкам (Счет Дт, Субконто и т.д.).

В ЗУП 3.1 (и 3.0) разработчики 1С отказались от этой концепции в пользу оптимизации и устранения дублирования данных. Давайте рассмотрим ключевые изменения:

Где теперь искать данные?

Ответ на вопрос "где данные?" зависит от того, какую именно задачу решала ваша обработка в ЗУП 2.5. Рассмотрим два основных сценария.

Сценарий 1. Вам нужны итоговые суммы в разрезе способов отражения (проводок)

Если ваша задача — получить суммы начислений, сгруппированные по тому, как они лягут в бухгалтерском учете (например, собрать затраты по счетам 20, 26 и т.д.), то обращаться к регистрам расчета напрямую в ЗУП 3.1 — ошибка. В регистре расчета Начисления нет информации о том, на какой счет упадет конкретная сумма, так как эта информация вычисляется динамически.

В ЗУП 3.1 финальное распределение по бухгалтерскому учету происходит в документе ОтражениеЗарплатыВБухучете. Именно этот документ собирает все начисления, применяет сложную иерархию настроек и формирует итоговую таблицу для выгрузки в "Бухгалтерию предприятия".

Если вам нужно построить отчет по факту отражения, используйте табличную часть этого документа или данные регистра накопления НачисленияУдержанияПоСотрудникам, соединяя их с настройками бухучета (но это сложный путь). Самый надежный источник уже распределенных сумм — это именно результаты проведения документа отражения.

Сценарий 2. Вам нужно понять, как настроен бухучет для сотрудника или начисления

Если в ЗУП 2.5 мы смотрели в регистр БУОсновныеНачисления и видели там реквизит "СчетДт", то в ЗУП 3.1 способ отражения определяется "на лету" по приоритету от частного к общему. Если вам нужно программно определить, куда пойдет начисление, вам придется воспроизвести логику системы.

Алгоритм определения способа отражения в ЗУП 3.1 выглядит следующим образом (по убыванию приоритета):

  1. Документ. Настройка, указанная непосредственно в шапке или табличной части документа начисления (например, в документе Премия).
  2. Вид начисления. Настройка в справочнике Начисления (вкладка "Налоги, взносы, бухучет").
  3. Сотрудник. Индивидуальная настройка для сотрудника. Хранится в регистре сведений БухучетНачисленийСотрудников.
  4. Подразделение. Настройка бухучета для подразделения (справочник ПодразделенияОрганизаций).
  5. Территория. Если в организации ведется учет по территориям, настройки могут быть привязаны к ним.
  6. Организация. Глобальная настройка для всей организации (регистр сведений БухучетНачисленийОрганизаций или настройки учетной политики).

Таким образом, простого запроса к одной таблице больше не существует. Чтобы получить "счет учета" для конкретной строки начисления, нужно проверить все эти уровни.

Практический пример адаптации кода

Допустим, в ЗУП 2.5 у вас был запрос, который выбирал базу для распределения затрат:


// Код ЗУП 2.5 (Устаревший)
Запрос.Текст = "
|ВЫБРАТЬ
|	БУОсновныеНачисления.Результат,
|	БУОсновныеНачисления.Субконто1 КАК Подразделение,
|	БУОсновныеНачисления.СчетДт
|ИЗ
|	РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
|   БУОсновныеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода";

В ЗУП 3.1 прямой перенос невозможен. Мы должны обращаться к универсальному регистру накопления, где собираются все начисления. Чаще всего используется регистр накопления НачисленияУдержанияПоСотрудникам. Однако, там нет счетов. Есть только СтатьяФинансирования и СтатьяРасходов (если включен соответствующий функционал).

Адаптированный запрос для получения сумм начислений (без точной бухгалтерской аналитики, так как она живет отдельно) будет выглядеть так:


// Код ЗУП 3.1 (Примерный аналог получения базы)
Запрос.Текст = "
|ВЫБРАТЬ
|	НачисленияУдержания.Сумма,
|	НачисленияУдержания.Подразделение,
|	НачисленияУдержания.Сотрудник,
|	НачисленияУдержания.НачислениеУдержание
|ИЗ
|	РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержания
|ГДЕ
|	НачисленияУдержания.Период МЕЖДУ &НачалоПериода И &КонецПериода
|	И НачисленияУдержания.ГруппаНачисленияУдержания = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начисление)";

Обратите внимание: если вам критически важно отобрать данные именно по Способу отражения (аналог Счета Дт), то вам придется либо анализировать документ ОтражениеЗарплатыВБухучете, либо использовать программные методы общего модуля, которые рассчитывают бухучет.

Рекомендации по разработке обработки

Поскольку вы столкнулись с задачей переноса обработки, рекомендуем следующий план действий:

  1. Забудьте про структуру 2.5. Попытка найти прямые соответствия регистров (особенно начинающихся на "БУ...") приведет в тупик. Структура 3.1 нормализована и отличается принципиально.
  2. Определите бизнес-цель. Что именно должна делать обработка? Считать свод? Формировать файл выгрузки? Проверять корректность?
    • Если нужен свод начислений — используйте данные регистра накопления НачисленияУдержанияПоСотрудникам.
    • Если нужны данные для бухгалтерии — берите данные из проведенных документов ОтражениеЗарплатыВБухучете.
    • Если нужно получить настройки — используйте виртуальные таблицы среза последних для регистров сведений БухучетНачисленийСотрудников и справочника Начисления.
  3. Используйте типовой функционал. В ЗУП 3.1 многие задачи, для которых в 2.5 писали внешние обработки, решаются настройками отчетов или универсальными отчетами. Проверьте, возможно, вашу задачу можно решить без кодирования.

Резюме: Регистра БУОсновныеНачисления в ЗУП 3.1 нет. Вместо него используется комбинация регистра расчета Начисления (для сумм) и справочника СпособыОтраженияЗарплатыВБухУчете (для аналитики), связь между которыми устанавливается динамически через систему приоритетов настроек.

← На главную