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