Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 09:09

В печатной форме запросом не заполняется параметр

Автор Franc07, 22 авг 2024, 07:47

0 Пользователей и 1 гость просматривают эту тему.

Franc07

Доброго дня! Делаю внешнюю обработку печатной формы для справочника сотрудники. Запросом не заполняется параметр, что не так? прошу помочь
вот код
Функция СведенияОВнешнейОбработке() Экспорт
   ПараметрыРегистрации = Новый Структура;
   МассивНазначений = Новый Массив;
   МассивНазначений.Добавить("Справочник.Сотрудники"); //Указываем документ к которому делаем внешнюю печ. форму
   ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
   ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
   ПараметрыРегистрации.Вставить("Наименование", ЭтотОбъект.Метаданные().Синоним);   //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
   ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
   ПараметрыРегистрации.Вставить("Версия", "1.0");
   ПараметрыРегистрации.Вставить("Информация", ЭтотОбъект.Метаданные().Синоним);
   ТаблицаКоманд = ПолучитьТаблицуКоманд();
   ДобавитьКоманду(ТаблицаКоманд, ЭтотОбъект.Метаданные().Синоним, ЭтотОбъект.Метаданные().Имя, "ВызовСерверногоМетода", Истина, "ПечатьMXL");
   ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

/////////////////////////////////////

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,ЭтотОбъект.Метаданные().Имя,ЭтотОбъект.Метаданные().Синоним, СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект,ОбъектыПечати)
   
   ВыборкаСотрудник = ПолучитьДанные(СсылкаНаОбъект);
   ТабличныйДокумент = Новый ТабличныйДокумент;
   
   МакетОбработки = ПолучитьМакет("ДополнительноеСоглашение");
   
   ОбластьСоглашение = МакетОбработки.ПолучитьОбласть("Соглашение"); 
   
   ОбластьСоглашение.Параметры.Заполнить(ВыборкаСотрудник);

   ТабличныйДокумент.Вывести(ОбластьСоглашение);
   ТабличныйДокумент.АвтоМасштаб = Истина;
   ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

Возврат ТабличныйДокумент;

КонецФункции

Функция ПолучитьДанные(СсылкаНаОбъект)       
   Структура = Новый Структура("ФИОСотрудника,Паспорт"); 

   Структура.ФИОСотрудника      = Строка(СсылкаНаОбъект);
   ВыборкаДанных             = ПолучитьФИОПаспортАдресМобТелефон(СсылкаНаОбъект);
   Структура.Паспорт          = ВыборкаДанных.Паспорт;
   Возврат Структура;
КонецФункции

&НаСервере
Функция ПолучитьФИОПаспортАдресМобТелефон(СсылкаНаОбъект)
   
Структура = Новый Структура ("Паспорт");
   Запрос = Новый Запрос;
   Запрос.Текст =             
   "ВЫБРАТЬ
   |   ДокументыФизическихЛицСрезПоследних.Представление КАК Представление
   |ИЗ
   |   РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(, Физлицо = &Физлицо) КАК ДокументыФизическихЛицСрезПоследних";
   
   Запрос.УстановитьПараметр("Физлицо", СсылкаНаОбъект);
   
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();   
      
   Для каждого строка из РезультатЗапроса Цикл   
      Структура.Паспорт    = Строка(строка.Представление);
   КонецЦикла;
   
   Возврат Структура;
КонецФункции





Franc07

точнее  Структура.ФИОСотрудника выводится, а  Структура.Паспорт не выводится в печатную форму

Максим75

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

LexaK

Franc07,
1.проверьте по данному сотруднику есть запись/представление в регистре
ДокументыФизическихЛиц?
2.в облсти макета: ОбластьСоглашение  - есть Параметр Паспорт?

если нет - то исправьте  и тогда у вас все заработает!
если помогло нажмите: Спасибо!

antoneus

РезультатЗапроса = Запрос.Выполнить().Выгрузить();   
     
   Для каждого строка из РезультатЗапроса Цикл   
      Структура.Паспорт    = Строка(строка.Представление);
   КонецЦикла;

Если в РезультатЗапроса больше одной строки и в последней строке - пусто, то и выведется пустота.

Franc07

LexaK,antoneus консолью запросов смотрел в регистре представление есть, одна строка. В макете параметр паспорт есть, заполнение сделал ОбластьСоглашение.Параметры.Заполнить(ВыборкаСотрудник);

antoneus


Franc07

antoneus, точкой остановой не могу смотреть, это внешняя обработка

LexaK

Franc07, в этой обработке добавьте форму, в ней поле для Сотрудникаи кнпку Печать
запускайте как обычную обработку, откроется форма, выберите Сотрудника, нажмите печать
попадете в отладчик.
если помогло нажмите: Спасибо!

Franc07

Ребята помогите, проблема в том,что параметр запроса типа ФизическоеЛицо, а вызываю внешнюю обработку из сотрудника (СсылкаНаОбъект). В регистре сведений из которого запрашиваю данные нет измерения Сотрудник, как выйти из ситуации?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск