Как вывести полное наименование организации в 1С:Управление торговлей 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При разработке и кастомизации печатных форм в конфигурации «1С:Управление торговлей, редакция 10.3» (УТ 10.3) разработчики часто сталкиваются с задачей вывода официального юридического названия компании. По умолчанию в различных списках и журналах документов отображается краткое (рабочее) наименование, например, ООО "Вега". Однако для регламентированных документов (таких как ТОРГ-12, Счет-фактура или Акт об оказании услуг) законодательство требует указывать полное юридическое название — Общество с ограниченной ответственностью "ВЕГА".

В этой статье мы подробно разберем, как устроено хранение этих данных в системе, проанализируем различные программные методы получения полной строки названия организации и выясним, какой из способов является наиболее производительным и правильным с точки зрения стандартов разработки «1С».

Понимание структуры данных: краткое vs. полное наименование

Для начала проанализируем структуру справочника Организации (а также аналогичного ему справочника Контрагенты). В системе за хранение названия организации отвечают два разных реквизита:

  1. Наименование (синоним в конфигураторе — Рабочее наименование) — это строка ограниченной длины (обычно до 150 символов), предназначенная для быстрого поиска, отборов, группировок и отображения в экранных формах списков. Именно здесь пишется удобное для пользователей ООО "Вега".
  2. НаименованиеПолное (синоним в конфигураторе — Полное наименование) — это реквизит типа Строка неограниченной длины (или очень большой длины), куда заносится официальное наименование организации согласно учредительным документам. Именно этот реквизит используется для подстановки в печатные формы.

Давайте пошагово рассмотрим четыре различных способа вывода этого реквизита в печать, начиная от самых простых и заканчивая профессиональными решениями, использующими механизмы конфигурации.

Способ №1: Прямое обращение через точку в коде (Быстрый, но неоптимальный)

Если вам необходимо быстро внести изменения в несложную внешнюю печатную форму, самым очевидным решением кажется получение значения напрямую из ссылки на объект. Мы можем обратиться к реквизиту НаименованиеПолное через точку от реквизита организации в документе.

Рассмотрим пример кода:


// Получаем ссылку на организацию из документа
ОрганизацияСсылка = СсылкаНаОбъект.Организация;

// Напрямую считываем полное наименование
ПолноеНазвание = ОрганизацияСсылка.НаименованиеПолное;

// Выводим результат в параметр макета печатной формы
ОбластьМакета.Параметры.НазваниеОрганизации = ПолноеНазвание;

Важная деталь: Этот метод чрезвычайно прост в написании, но имеет существенный архитектурный недостаток. Обращение «через точку» к реквизитам ссылочного типа (Организация.НаименованиеПолное) заставляет платформу выполнять скрытый отдельный SQL-запрос к базе данных для извлечения информации. Если этот код будет выполняться внутри цикла (например, при групповой печати десятков документов), система начнет генерировать сотни лишних запросов, что критически снизит производительность.

Способ №2: Получение наименования через Запрос (Best Practice для оптимизации)

Чтобы избежать падения производительности при пакетной обработке данных, правильным решением будет получение полного наименования организации в общем запросе печатной формы. Этот метод позволяет за один единственный запрос к СУБД получить все нужные данные документа вместе с реквизитами связанных справочников.

Рассмотрим структуру такого запроса:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    |	РеализацияТоваровУслуг.Организация.НаименованиеПолное КАК ПолноеНаименованиеОрганизации
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";

Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    // Заполняем параметр области макета значением из выборки запроса
    ОбластьМакета.Параметры.ПредставлениеПоставщика = Выборка.ПолноеНаименованиеОрганизации;
КонецЕсли;

Использование запросов — это стандарт разработки «1С». СУБД моментально соединяет таблицы документов и справочников на сервере и возвращает готовое текстовое поле, что обеспечивает максимальное быстродействие.

Способ №3: Использование стандартных функций общего модуля (Рекомендуемый стандарт)

В типовых конфигурациях, включая «Управление торговлей 10.3», разработчики фирмы «1С» заложили универсальные механизмы получения сведений о контрагентах и организациях. Главное преимущество этого подхода заключается в том, что юридические сведения организации (включая название, адреса, телефоны, ИНН и КПП) могут меняться с течением времени. Стандартные функции учитывают историю изменений на определенную дату.

Для извлечения сведений об организации используется специализированный общий модуль УправлениеКонтактнойИнформацией и его функция СведенияОЮрФизЛице. Она возвращает структуру, в которой содержатся все необходимые реквизиты, актуальные на дату проведения документа.

Посмотрим на пример практической реализации данного метода:


// 1. Получаем структуру сведений на точную дату документа
ДатаДокумента = СсылкаНаОбъект.Дата;
ОрганизацияСсылка = СсылкаНаОбъект.Организация;

СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ОрганизацияСсылка, ДатаДокумента);

// 2. Извлекаем полное наименование из полученной структуры
// В структуре за полное название отвечает свойство "ПолноеНаименование"
ПолноеНазваниеОрг = СведенияОбОрганизации.ПолноеНаименование;

// 3. Передаем значение в макет
ОбластьМакета.Параметры.Поставщик = ПолноеНазваниеОрг;

Почему этот способ лучше остальных? Внутри функции СведенияОЮрФизЛице происходит не просто чтение реквизита. Функция обращается кэшированно к регистрам сведений, считывает информацию о контактных лицах, ответственных сотрудниках и юридическом названии компании, учитывая периодичность данных. Если полгода назад ваше предприятие переименовалось, то при печати старых документов программа выведет старое название, а при печати новых — новое.

Способ №4: Форматирование вывода через модуль ФормированиеПечатныхФорм

Зачастую в печатных формах требуется вывести не просто название организации, а целую информационную строку, включающую ИНН, КПП, адрес и телефон (например: Общество с ограниченной ответственностью "ВЕГА", ИНН 7701020304, КПП 770101001, 101000, г. Москва, ул. Ленина, д. 1).

Для красивого форматирования и сборки такой строки в УТ 10.3 предусмотрена замечательная функция общего модуля ФормированиеПечатныхФорм.ОписаниеОрганизации. Она принимает структуру сведений, полученную на предыдущем шаге, и собирает из нее строку по заданному шаблону.

Проанализируем пример комплексного формирования строки поставщика:


// Шаг 1: Получаем структуру сведений
СведенияОбОрг = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);

// Шаг 2: Формируем строку, содержащую Полное наименование, ИНН и КПП организации
// Во втором параметре через запятую перечисляем свойства, которые нужно включить в строку
СтрокаОписания = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрг, "ПолноеНаименование,ИНН,КПП");

// Шаг 3: Если нужно вывести только полное наименование без реквизитов:
// СтрокаОписания = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрг, "ПолноеНаименование");

// Выводим подготовленную красивую строку в параметры печати
ОбластьМакета.Параметры.ПоставщикПредставление = СтрокаОписания;

Данный подход позволяет гибко настраивать состав выводимой информации без ручной конкатенации строк, проверки на пустые значения ИНН/КПП и расстановки запятых — встроенная функция модуля сделает все проверки автоматически и сформирует красивый, презентабельный текст.

Резюме и рекомендации по выбору метода

Для закрепления материала определимся, когда какой метод следует применять:

← На главную