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