Где найти и как работает команда изменения подразделений в документе отражения зарплаты в 1С:ЗУП?

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

При сопровождении или доработке конфигурации 1С:Зарплата и управление персоналом 3.1 разработчики нередко сталкиваются с ситуацией: в интерфейсе документа Отражение зарплаты в бухгалтерском учете по кнопке Еще доступно действие (например, «Изменение подразделения в табличных частях»), однако глобальный поиск по конфигурации не дает никаких результатов. Проанализируем, где физически находится этот функционал, как работает подсистема подключаемых команд и какие нюансы нужно учитывать при модификации строк документа.

1. Почему действие не находится в конфигураторе: механизм подключаемых команд БСП

Разберем по шагам причину, по которой поиск по тексту или именам элементов формы не дает результата. В типовых решениях на платформе 1С:Предприятие 8 активно используется библиотека стандартных подсистем (БСП), в частности подсистема «Дополнительные отчеты и обработки».

Команды такого типа не зашиты в форму документа на этапе разработки конфигурации, а подключаются динамически в момент открытия формы. Если функционал отсутствует в типовом решении и не находится в расширениях, значит, он загружен в базу данных в режиме «1С:Предприятие» как внешняя обработка с видом Заполнение объекта.

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

  1. Перейдем в раздел Администрирование → Печатные формы, отчеты и обработки.
  2. Откроем справочник Дополнительные отчеты и обработки.
  3. Найдем элемент, у которого в таблице назначения указан документ Отражение зарплаты в бухгалтерском учете, а вид определен как Заполнение объекта.
  4. Сохраним обработку на диск для анализа программного кода.

2. Как устроен код внешней обработки для заполнения объекта

Рассмотрим подробнее программную архитектуру подключаемой обработки БСП. Для того чтобы команда появилась в меню формы, модуль объекта внешней обработки должен содержать экспортную функцию СведенияОВнешнейОбработке().

Посмотрим на пример описания регистрационных данных:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.2.0");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
    ПараметрыРегистрации.Назначение.Добавить("ДокументСсылка.ОтражениеЗарплатыВБухучете");
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    // Описание команды
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Изменение подразделения в табличных частях'");
    Команда.Идентификатор = "ИзменитьПодразделениеВТаблицах";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.СпособВызоваКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;
    
    Возврат ПараметрыРегистрации;

КонецФункции

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

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


Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт

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

КонецПроцедуры

3. Зачем нужна подмена подразделений и сопутствующие риски

Выясним причину, почему предприятия прибегают к подобным обработкам. В типовой конфигурации документ Отражение зарплаты в бухгалтерском учете подставляет в строку начислений кадровое подразделение, к которому привязан сотрудник. При синхронизации с бухгалтерской программой субконто затратных счетов (20, 25, 26, 44) транслируется именно из этой колонки.

Если управленческая структура предприятия детальнее бухгалтерской, либо если требуется отнести затраты по сотрудникам одного подразделения на другое без изменения кадровых приказов, типовой функционал ЗУП не предоставляет гибкой настройки подмены подразделения «на лету».

При эксплуатации подобных обработок важно помнить о следующих рисках:

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

4. Альтернативные варианты решения без внешних обработок

Если необходимо скорректировать аналитику, не создавая отдельную обработку, рассмотрим стандартные возможности системы:

  1. Групповое изменение реквизитов: В меню Функции для технического специалиста можно открыть стандартную обработку Групповое изменение реквизитов. Включив в дополнительных параметрах пункт «Изменять реквизиты табличных частей», можно массово отобрать нужные строки документа и установить требуемое подразделение.
  2. Правила сопоставления при синхронизации: Если различие состоит лишь в том, что в ЗУП подразделений больше, сопоставление можно настроить в правилах конвертации на этапе интеграции с бухгалтерской программой.
← На главную