При разработке или модификации печатных форм в конфигурациях 1С:Предприятие 8 часто возникает задача изменить формат вывода данных об организации. По умолчанию многие типовые механизмы настроены на вывод юридически значимого Полного наименования (например, Общество с ограниченной ответственностью «Торговый Дом»), однако для компактности документов или в соответствии с внутренними регламентами может потребоваться вывод Краткого наименования (например, ООО «Торговый Дом»).
В этой статье мы подробно разберем, как работает механизм формирования сведений об организации на примере конфигураций на обычных формах (таких как УПП 1.3, КА 1.1 или БП 2.0) и выясним, какой параметр нужно передать системе, чтобы получить желаемый результат.
Рассмотрим типовую ситуацию. Для получения данных об организации в коде часто используется функция СведенияОЮрФизЛице (или ее аналоги в общих модулях УправлениеКонтактнойИнформацией или ОбщегоНазначения). Эта функция принимает на вход ссылку на организацию, дату и строку с перечислением необходимых полей.
Проанализируем пример кода, вызывающий затруднения у разработчиков:
СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(
Шапка.ЮрФизЛицо,
Шапка.ДатаДокумента,
"НаименованиеДляПечатныхФорм,ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет"
);
В данном случае, если в строке параметров указано ПолноеНаименование, система обращается к соответствующему реквизиту справочника «Организации» и возвращает развернутое название. Попытки заменить его на интуитивно понятные СокращенноеНаименование или КраткоеНаименование часто приводят к тому, что функция возвращает пустое значение. Это происходит потому, что функция формирования сведений работает со строго определенным набором ключей (параметров), и произвольные имена реквизитов из метаданных туда подставлять нельзя.
Чтобы понять, почему стандартные наименования полей не работают, нужно заглянуть «под капот» общего модуля. Выясним причину такого поведения: функция не просто считывает данные из справочника, она формирует динамический запрос. Внутри этого запроса прописаны псевдонимы полей, которые и должны использоваться в строке параметров.
Проанализируем основные ключи, которые обычно доступны в этой функции для юридических лиц:
Наименование в справочнике).Важный нюанс: В системе 1С у справочника «Организации» есть стандартный реквизит Наименование (длиной до 150 символов), который используется для поиска в списках, и дополнительный реквизит ПолноеНаименование (неограниченной длины). Именно Наименование обычно содержит краткую форму записи.
Как показала практика и обсуждение специалистов, для вывода сокращенного названия ООО «Организация» в параметрах функции необходимо использовать слово Представление. Рассмотрим, как должен выглядеть исправленный код:
// Вместо ПолноеНаименование используем Представление
СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(
Шапка.ЮрФизЛицо,
Шапка.ДатаДокумента,
"НаименованиеДляПечатныхФорм,Представление,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,БИК,КоррСчет"
);
После этого изменения в структуре СведенияОГрузоотправителе по ключу Представление (или в итоговой строке формирования печатной формы) будет содержаться краткое название организации.
Рассмотрим процесс внесения изменений в печатную форму по шагам, чтобы ничего не упустить:
Печать.СведенияОЮрФизЛице или ОписаниеОрганизации.ПолноеНаименование и добавьте Представление.
ОбластьМакета.Параметры.Грузоотправитель = СведенияОГрузоотправителе.ПолноеНаименование;
ОбластьМакета.Параметры.Грузоотправитель = СведенияОГрузоотправителе.Представление;
Проанализируем еще один способ, характерный для конфигураций типа УПП 1.3. Часто программисты используют «обертку» над сведениями — функцию ОписаниеОрганизации. Она удобна тем, что позволяет одной строкой получить готовое текстовое описание (Наименование + ИНН + Адрес + Телефон).
Эта функция часто имеет следующий синтаксис: ОписаниеОрганизации(Сведения, СписокПолей, ВыводитьПолноеНаименование, ...). Обратите внимание на третий параметр. Если передать туда Ложь, функция сама подставит краткое наименование в итоговую строку:
// Пример получения краткого описания через обертку
ТекстГрузоотправителя = ОбщегоНазначения.ОписаниеОрганизации(СведенияОГрузоотправителе, , Ложь);
Использование таких стандартных механизмов позволяет избежать «хардкода» и делает код более устойчивым к обновлениям конфигурации.
Выясним причины, по которым решение может не сработать с первого раза, и как их устранить:
Совет эксперта: Чтобы точно узнать, какие поля доступны в вашей версии конфигурации, используйте клавишу F12 (Перейти к определению), установив курсор на названии функции СведенияОЮрФизЛице. В открывшемся программном коде вы увидите текст запроса, где перечислены все допустимые псевдонимы полей.