При разработке собственных печатных форм в конфигурации 1С:Бухгалтерия предприятия 3.0 разработчики часто сталкиваются с тем, что стандартные функции для получения данных организации возвращают пустые значения. Давайте разберем, почему это происходит и как правильно организовать получение сведений о юридическом или физическом лице для заполнения макета.
Основная проблема при использовании стандартных механизмов БП 3.0, таких как БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице, заключается в отсутствии контекста. Функция ожидает на вход конкретную ссылку на элемент справочника Организации. Если передать пустой параметр, функция не сможет определить, сведения о какой именно организации необходимо сформировать.
Также часто возникают ошибки при работе с РезультатЗапроса. Попытка обратиться к данным вне цикла Выборка.Следующий() приводит к тому, что параметры остаются неинициализированными.
Прежде всего, убедимся, что данные из запроса корректно извлекаются. Необходимо использовать цикл Пока, чтобы перебрать результат запроса. Даже если в документе одна организация, 1С требует явного обращения к выборке.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПринятиеКУчетуНМА.Организация КАК Организация
|ИЗ
| Документ.ПринятиеКУчетуНМА КАК ПринятиеКУчетуНМА";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Здесь мы работаем с конкретной ссылкой на организацию
СсылкаНаОрганизацию = Выборка.Организация;
КонецЦикла;
После того как мы получили ссылку, вызываем функцию общего модуля. Важно помнить, что БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице принимает первым аргументом ссылку на организацию. Если вы используете вызов без параметров, результат будет пустым.
Рассмотрим, как правильно подготовить структуру для печатной формы:
// Получаем сведения с учетом переданной ссылки
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СсылкаНаОрганизацию);
// Формируем структуру параметров, имена ключей должны совпадать с параметрами макета
ПараметрыОрганизации = Новый Структура("АдресПолучателя");
ПараметрыОрганизации.АдресПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОбОрганизации,
"ЮридическийАдрес,Телефоны,"
);
Когда структура подготовлена, воспользуемся методом Заполнить области макета. Это наиболее эффективный и читаемый способ заполнения параметров табличного документа.
Важное примечание: При именовании параметров в макете MXL строго соблюдайте регистр и написание имен ключей в структуре ПараметрыОрганизации. Если в структуре ключ назван АдресПолучателя, то в области макета параметр также должен называться АдресПолучателя.
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
// Заполняем область данными из нашей структуры
ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОрганизации);
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Новый Структура(...), полностью соответствуют именам параметров в макете. Опечатка в одну букву приведет к тому, что ячейка в печатной форме останется пустой.КонтактнаяИнформация или справочнику Организации.ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОрганизации) и через отладчик проверьте содержимое переменной ПараметрыОрганизации. Вы сразу увидите, содержит ли она нужные значения или значения в ней имеют тип Неопределено.Следуя этим правилам, вы сможете избежать стандартных ошибок при разработке печатных форм и обеспечить корректное отображение реквизитов организации в любых отчетах и документах БП 3.0.