Переход с редакции "Зарплата и Управление Персоналом 2.5" на редакцию 3.1 — это не просто обновление, а смена всей парадигмы учета. Одной из самых частых проблем, с которой сталкиваются программисты при адаптации внешних обработок и отчетов, является поиск соответствий объектов метаданных. Классический вопрос звучит так: «В ЗУП 2.5 я брал данные из регистра расчета БУОсновныеНачисления, но в ЗУП 3.1 такого регистра нет. Где теперь лежат эти данные?».
В этой статье мы подробно разберем архитектурные отличия подсистемы учета зарплаты, выясним, куда исчезли регистры бухгалтерского учета, и сформируем правильный подход к получению данных в новой редакции.
В редакции 2.5 существовал механизм так называемого "двойного расчета". Система вела параллельный учет:
ОсновныеНачисления и ДополнительныеНачисления. Здесь хранились результаты расчета для выплаты зарплаты.БУОсновныеНачисления и БУДополнительныеНачисления. Здесь дублировались записи, но уже с привязкой к бухгалтерским проводкам (Счет Дт, Субконто и т.д.).В ЗУП 3.1 (и 3.0) разработчики 1С отказались от этой концепции в пользу оптимизации и устранения дублирования данных. Давайте рассмотрим ключевые изменения:
Начисления.НачислениеЗарплаты), система не формирует проводки и не фиксирует жестко счета учета в регистре расчета. Проводки формируются только в конце месяца сводно.СпособыОтраженияЗарплатыВБухУчете.Ответ на вопрос "где данные?" зависит от того, какую именно задачу решала ваша обработка в ЗУП 2.5. Рассмотрим два основных сценария.
Если ваша задача — получить суммы начислений, сгруппированные по тому, как они лягут в бухгалтерском учете (например, собрать затраты по счетам 20, 26 и т.д.), то обращаться к регистрам расчета напрямую в ЗУП 3.1 — ошибка. В регистре расчета Начисления нет информации о том, на какой счет упадет конкретная сумма, так как эта информация вычисляется динамически.
В ЗУП 3.1 финальное распределение по бухгалтерскому учету происходит в документе ОтражениеЗарплатыВБухучете. Именно этот документ собирает все начисления, применяет сложную иерархию настроек и формирует итоговую таблицу для выгрузки в "Бухгалтерию предприятия".
Если вам нужно построить отчет по факту отражения, используйте табличную часть этого документа или данные регистра накопления НачисленияУдержанияПоСотрудникам, соединяя их с настройками бухучета (но это сложный путь). Самый надежный источник уже распределенных сумм — это именно результаты проведения документа отражения.
Если в ЗУП 2.5 мы смотрели в регистр БУОсновныеНачисления и видели там реквизит "СчетДт", то в ЗУП 3.1 способ отражения определяется "на лету" по приоритету от частного к общему. Если вам нужно программно определить, куда пойдет начисление, вам придется воспроизвести логику системы.
Алгоритм определения способа отражения в ЗУП 3.1 выглядит следующим образом (по убыванию приоритета):
Премия).Начисления (вкладка "Налоги, взносы, бухучет").БухучетНачисленийСотрудников.ПодразделенияОрганизаций).БухучетНачисленийОрганизаций или настройки учетной политики).Таким образом, простого запроса к одной таблице больше не существует. Чтобы получить "счет учета" для конкретной строки начисления, нужно проверить все эти уровни.
Допустим, в ЗУП 2.5 у вас был запрос, который выбирал базу для распределения затрат:
// Код ЗУП 2.5 (Устаревший)
Запрос.Текст = "
|ВЫБРАТЬ
| БУОсновныеНачисления.Результат,
| БУОсновныеНачисления.Субконто1 КАК Подразделение,
| БУОсновныеНачисления.СчетДт
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
| БУОсновныеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода";
В ЗУП 3.1 прямой перенос невозможен. Мы должны обращаться к универсальному регистру накопления, где собираются все начисления. Чаще всего используется регистр накопления НачисленияУдержанияПоСотрудникам. Однако, там нет счетов. Есть только СтатьяФинансирования и СтатьяРасходов (если включен соответствующий функционал).
Адаптированный запрос для получения сумм начислений (без точной бухгалтерской аналитики, так как она живет отдельно) будет выглядеть так:
// Код ЗУП 3.1 (Примерный аналог получения базы)
Запрос.Текст = "
|ВЫБРАТЬ
| НачисленияУдержания.Сумма,
| НачисленияУдержания.Подразделение,
| НачисленияУдержания.Сотрудник,
| НачисленияУдержания.НачислениеУдержание
|ИЗ
| РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержания
|ГДЕ
| НачисленияУдержания.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И НачисленияУдержания.ГруппаНачисленияУдержания = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начисление)";
Обратите внимание: если вам критически важно отобрать данные именно по Способу отражения (аналог Счета Дт), то вам придется либо анализировать документ ОтражениеЗарплатыВБухучете, либо использовать программные методы общего модуля, которые рассчитывают бухучет.
Поскольку вы столкнулись с задачей переноса обработки, рекомендуем следующий план действий:
НачисленияУдержанияПоСотрудникам.ОтражениеЗарплатыВБухучете.БухучетНачисленийСотрудников и справочника Начисления.Резюме: Регистра БУОсновныеНачисления в ЗУП 3.1 нет. Вместо него используется комбинация регистра расчета Начисления (для сумм) и справочника СпособыОтраженияЗарплатыВБухУчете (для аналитики), связь между которыми устанавливается динамически через систему приоритетов настроек.