В конфигурации 1С:ЗУП (1С:ЗУП КОРП), имеется функционал по подписантам. Этот функционал завязан на форму документа. А что делать, если есть необходимость программно создать документ, и заполнить в нем подписантов? Далее будет представлен код, который получает подписантов в структуру, которую в дальнейшем можно использовать для заполнения реквизитов в создаваемом документе. Надеюсь материал будет полезным, и позволит сэкономить время на реализацию такого требования.
Для документов созданы реквизиты содержащие ответственных лиц, подписантов. Рассмотрим на примере документа "Доход в натуральной форме".
При создании нового документа, в процедуре "ПриСозданииНаСервере" происходит вызов процедуры общего модуля, где происходит заполнение подписантов в форме:
Этот механизм завязан на наличие формы. Можно, конечно, просто получить ответственных запросом, но на мой взгляд правильней получать через уже реализованные методы. Далее представлен код, который заполняет подписантов в структуру для конкретного документа:
СтруктураОбъектаПодписи = Новый Структура;
СтруктураОбъектаПодписи.Вставить("Организация", Объект.Организация);
СтруктураОбъектаПодписи.Вставить("Дата", ТекущаяДатаСеанса());
СтруктураОбъектаПодписи.Вставить("Ссылка", Документы.ДоходВНатуральнойФорме.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("Руководитель", Справочники.ФизическиеЛица.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ДолжностьРуководителя", Справочники.Должности.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ОснованиеПодписиРуководителя", "");
СтруктураОбъектаПодписи.Вставить("ГлавныйБухгалтер", Справочники.ФизическиеЛица.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ДолжностьГлавногоБухгалтера", Справочники.Должности.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ОснованиеПодписиГлавногоБухгалтера", "");
СтруктураОбъектаПодписи.Вставить("Исполнитель", Справочники.ФизическиеЛица.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ДолжностьИсполнителя", Справочники.Должности.ПустаяСсылка());
СтруктураОбъектаПодписи.Вставить("ОснованиеПодписиИсполнителя", "");
СтруктураФормы = Новый Структура;
СтруктураФормы.Вставить("Объект", СтруктураОбъектаПодписи);
СтруктураФормы.Вставить("Элементы", Новый Массив);
СтруктураФормы.Вставить("ЕстьПравоИзмененияОснованийПолномочий", Истина);
ОписаниеПодписей = ПодписиДокументов.ОписаниеТаблицыПодписей();
ОписаниеПодписиРуководитель = ПодписиДокументов.ОписаниеРеквизитовПодписанта();
ОписаниеПодписиРуководитель.ФизическоеЛицо = "Руководитель";
ОписаниеПодписиРуководитель.Должность = "ДолжностьРуководителя";
ОписаниеПодписиРуководитель.ОснованиеПодписи = "ОснованиеПодписиРуководителя";
ПереопределяемыеИмена = Новый Соответствие;
ПереопределяемыеИмена.Вставить("Руководитель", ОписаниеПодписиРуководитель);
ПодписиДокументов.ДобавитьОписаниеПодписейОрганизации(
ОписаниеПодписей,
"Руководитель, ГлавныйБухгалтер, Исполнитель",
ПереопределяемыеИмена);
ОписаниеПодписейМассив = Новый ФиксированныйМассив(ОбщегоНазначения.ТаблицаЗначенийВМассив(ОписаниеПодписей));
СтруктураФормы.Вставить("ОписаниеПодписейДокумента", ОписаниеПодписейМассив);
СтруктураФормы.Вставить("СведенияОбОтветственныхРаботниках", Новый Соответствие);
// ЗарплатаКадрыПодсистемы.ПодписиДокументов
ПодписиДокументов.ЗаполнитьПодписиПоОрганизации(СтруктураФормы);
// Конец ЗарплатаКадрыПодсистемы.ПодписиДокументов
Для демонстрации прикладываю обработку.
Проверено на платформе: 1С:Предприятие 8.3 (8.3.23.1912)
На конфигурации: Зарплата и управление персоналом, редакция 3.1 (3.1.28.84).