При сопровождении или доработке конфигурации 1С:Зарплата и управление персоналом 3.1 разработчики нередко сталкиваются с ситуацией: в интерфейсе документа Отражение зарплаты в бухгалтерском учете по кнопке Еще доступно действие (например, «Изменение подразделения в табличных частях»), однако глобальный поиск по конфигурации не дает никаких результатов. Проанализируем, где физически находится этот функционал, как работает подсистема подключаемых команд и какие нюансы нужно учитывать при модификации строк документа.
Разберем по шагам причину, по которой поиск по тексту или именам элементов формы не дает результата. В типовых решениях на платформе 1С:Предприятие 8 активно используется библиотека стандартных подсистем (БСП), в частности подсистема «Дополнительные отчеты и обработки».
Команды такого типа не зашиты в форму документа на этапе разработки конфигурации, а подключаются динамически в момент открытия формы. Если функционал отсутствует в типовом решении и не находится в расширениях, значит, он загружен в базу данных в режиме «1С:Предприятие» как внешняя обработка с видом Заполнение объекта.
Чтобы проверить наличие таких команд в информационной базе, выполним следующие действия:
Отражение зарплаты в бухгалтерском учете, а вид определен как Заполнение объекта.Рассмотрим подробнее программную архитектуру подключаемой обработки БСП. Для того чтобы команда появилась в меню формы, модуль объекта внешней обработки должен содержать экспортную функцию СведенияОВнешнейОбработке().
Посмотрим на пример описания регистрационных данных:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.2.0");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
ПараметрыРегистрации.Назначение.Добавить("ДокументСсылка.ОтражениеЗарплатыВБухучете");
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
// Описание команды
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Изменение подразделения в табличных частях'");
Команда.Идентификатор = "ИзменитьПодразделениеВТаблицах";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.СпособВызоваКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
В зависимости от значения поля Использование логика может выполняться либо напрямую на сервере (значение ВызовСерверногоМетода), либо через вызов диалогового окна обработки (значение ОткрытиеФормы), где пользователь интерактивно указывает исходное и новое подразделения.
При вызове серверной процедуры обработчик получает ссылку на целевой документ или контекст формы через переданную структуру параметров, обходит строки табличных частей и перезаписывает реквизит Подразделение:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
Для Каждого СсылкаНаДокумент Из ОбъектыНазначения Цикл
ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
// Обработка основной табличной части начислений
Для Каждого СтрокаТЧ Из ДокументОбъект.НачисленнаяЗарплатаИВзносы Цикл
// Логика сопоставления и замены подразделения
// СтрокаТЧ.Подразделение = НовоеПодразделение;
КонецЦикла;
// Обработка удержаний и прочих вкладок
Для Каждого СтрокаТЧ Из ДокументОбъект.Удержания Цикл
// СтрокаТЧ.Подразделение = НовоеПодразделение;
КонецЦикла;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
КонецПроцедуры
Выясним причину, почему предприятия прибегают к подобным обработкам. В типовой конфигурации документ Отражение зарплаты в бухгалтерском учете подставляет в строку начислений кадровое подразделение, к которому привязан сотрудник. При синхронизации с бухгалтерской программой субконто затратных счетов (20, 25, 26, 44) транслируется именно из этой колонки.
Если управленческая структура предприятия детальнее бухгалтерской, либо если требуется отнести затраты по сотрудникам одного подразделения на другое без изменения кадровых приказов, типовой функционал ЗУП не предоставляет гибкой настройки подмены подразделения «на лету».
При эксплуатации подобных обработок важно помнить о следующих рисках:
НачисленнаяЗарплатаИВзносы, но и Удержания, а также данные по резервам. Если обработка не корректирует подразделения во всех зависимых таблицах, в бухгалтерском учете возникнет расхождение аналитики между начисленной оплатой труда, НДФЛ и взносами.Если необходимо скорректировать аналитику, не создавая отдельную обработку, рассмотрим стандартные возможности системы:
Групповое изменение реквизитов. Включив в дополнительных параметрах пункт «Изменять реквизиты табличных частей», можно массово отобрать нужные строки документа и установить требуемое подразделение.