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