Как в конфигурации 1С:Бухгалтерия государственного учреждения 2.0 получить сведения о контрагенте или организации для печатной формы?

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

При переносе внешних печатных форм или обработок из конфигурации «Бухгалтерия предприятия 3.0» (БП) в «Бухгалтерию государственного учреждения 2.0» (БГУ) разработчики часто сталкиваются с тем, что привычные общие модули и функции отсутствуют. Одним из самых популярных инструментов в БП является функция БухгалтерскийУчётПереопределяемый.СведенияОЮрФизЛице, которая возвращает готовую структуру с реквизитами (ИНН, КПП, наименование, адреса). В БГУ 2.0 архитектура получения данных построена иначе. Рассмотрим подробно, какими методами можно заменить этот функционал, разберем программный код и проанализируем типичные ошибки.

Метод 1: Использование модуля «ФормированиеПечатныхФорм» — прямой аналог

Наиболее точным функциональным эквивалентом для разработчика в БГУ 2.0 является общий модуль ФормированиеПечатныхФорм. Проанализируем его основную функцию СведенияОЮрФизЛице. Она спроектирована специально для заполнения параметров макетов печати.

Рассмотрим пример вызова этой функции:


// Определяем объект (Контрагент или Организация), дату и нужные поля
ОбъектДанных = СсылкаНаДокумент.Контрагент;
ДатаСведений = СсылкаНаДокумент.Дата;
СписокПолей = "НаименованиеПолное,ИНН,КПП,ЮридическийАдрес,Телефоны";

// Получаем структуру данных
Сведения = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ОбъектДанных, ДатаСведений, СписокПолей);

// Теперь данные можно использовать для заполнения параметров макета
ОбластьМакета.Параметры.ИннКлиента = Сведения.ИНН;

Важный нюанс: в отличие от БП 3.0, состав полей в возвращаемой структуре БГУ может зависеть от версии конфигурации и БСП. Рекомендуем предварительно проверить доступные поля через отладчик, вызвав метод с пустым списком полей или изучив код функции в конфигураторе.

Метод 2: Универсальный подход через «ЭлектронныеДокументыБГУ»

Как показала практика обсуждений на форумах, часто предлагается использовать модуль ЭлектронныеДокументыБГУ. Этот метод удобен тем, что он является «всеядным» и корректно обрабатывает как юридические лица, так и индивидуальных предпринимателей или физических лиц. Посмотрим, как правильно вызвать этот метод, чтобы не допустить падения системы.

Разберем по шагам правильный алгоритм:

  1. Сначала необходимо инициализировать пустую структуру, в которую функция запишет результат.
  2. Затем вызвать метод, передав ссылку на объект и дату.

// 1. Создаем структуру-контейнер
СведенияОбУчастнике = Новый Структура;

// 2. Вызываем метод. 
// Параметры: Ссылка, Структура (куда писать), Дата, ЭтоОрганизация (Ложь для контрагента)
ЭлектронныеДокументыБГУ.ПолучитьДанныеЮрФизЛица(
    СсылкаНаДокумент.Контрагент, 
    СведенияОбУчастнике, 
    СсылкаНаДокумент.Дата, 
    Ложь
);

// Теперь СведенияОбУчастнике заполнены реквизитами

Внимательно проанализируем ситуацию с ошибкой «Поле объекта недоступно для записи (Дата)», которая часто встречается у начинающих программистов. Она возникает, если вместо структуры во второй параметр передать дату документа. Система пытается записать результат (структуру) в переменную даты, что приводит к исключению. Всегда проверяйте типы передаваемых аргументов!

Метод 3: Получение данных через встроенные методы справочников

В БГУ 2.0 широко применяется объектный подход. Многие справочники имеют экспортные методы в своих модулях менеджера. Например, для получения данных контрагента можно обратиться напрямую к справочнику Контрагенты.

Выясним, как это реализовать программно:


СтруктураКонтрагента = Новый Структура;
// Обязательно добавляем ссылку на объект в структуру параметров
СтруктураКонтрагента.Вставить("СсылкаНаОбъект", СсылкаНаДокумент.Контрагент);
// Можно добавить поля для ФизЛица, если это актуально
СтруктураКонтрагента.Вставить("Фамилия", "");
СтруктураКонтрагента.Вставить("Имя", "");
СтруктураКонтрагента.Вставить("Отчество", "");

Справочники.Контрагенты.ПолучитьДанныеКонтрагента(СтруктураКонтрагента);
// После выполнения метода структура заполнится данными

Для нашей собственной организации в БГУ используется аналогичный подход:

Справочники.Организации.ПолучитьДанныеОрганизации(Организация, Дата)

Метод 4: Работа с контактной информацией (Адреса и телефоны)

Одной из главных проблем при переносе кода является получение строкового представления адреса. В БГУ адреса могут храниться в различных форматах (включая JSON или XML в зависимости от версии БСП). Чтобы получить красивую строку для печати, мы должны использовать специализированный модуль УправлениеКонтактнойИнформацией.

Рассмотрим пример получения юридического адреса:


ВидАдреса = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ПредставлениеАдреса = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(
    СсылкаНаДокумент.Контрагент, 
    ВидАдреса, 
    СсылкаНаДокумент.Дата
);

Этот способ гарантирует, что вы получите актуальный адрес на дату документа, даже если контрагент его менял в истории.

Метод 5: Оптимизированное получение базовых реквизитов

Если нам не нужны сложные форматированные данные (например, только ИНН и КПП), использование тяжелых функций формирования сведений может замедлить работу обработки. В этом случае проанализируем использование универсального метода БСП.


// Получаем только то, что действительно нужно
Данные = ОбщегоНазначенияБГУ.ЗначенияРеквизитовОбъекта(
    СсылкаНаДокумент.Контрагент, 
    "ИНН, КПП, НаименованиеПолное"
);

// Использование
ТекстИнн = Данные.ИНН;

Этот метод работает значительно быстрее, так как выполняет прямой запрос к базе данных без инициализации сложных объектов и выполнения тяжелых алгоритмов формирования «печатных» представлений.

Резюме и рекомендации

Подведем итог нашего анализа. Если вы адаптируете печатную форму из БП в БГУ:

  1. Для максимального соответствия логике БП используйте ФормированиеПечатныхФорм.СведенияОЮрФизЛице.
  2. Если нужно быстро получить реквизиты для заполнения структуры в коде — используйте ЭлектронныеДокументыБГУ.ПолучитьДанныеЮрФизЛица, но помните о предварительном создании структуры.
  3. Для получения адресов всегда обращайтесь к модулю УправлениеКонтактнойИнформацией.
  4. Для вывода банковских реквизитов используйте метод Справочники.БанковскиеСчета.ПолучитьДанныеБанковскогоСчета(БанковскийСчет, Дата).

Применяя эти методы в зависимости от конкретной задачи, вы сможете создать надежную и быстродействующую печатную форму, полностью совместимую со стандартами разработки в 1С:БГУ 2.0.

← На главную