Имя: Пароль:
1C
1С v8
Получение Наименования из заполненной формы для печати документа (в той же форме)
0 xecoder
 
11.05.22
11:16
Добрый день. Создаю печатную форму через внешнюю обработку. Создал макет, написал запрос к бд (всё работает, проверил через консоль).

В справочнике Контрагенты, при изменении открывается форма - Справочник.Контрагенты.Форма.ФормаЭлемента
Она заполнена данными, мне нужно при нажатии "Печать - Договор" получить данные Поля "Наименование для документов".
Которое я потом по плану буду упаковывать в структуру и использовать для поиска
Результат = РезультатЗапроса.НайтиСледующий(СтруктураДляПоискаЧерезНаименование)
И дальше заполнять данными из результата макет документа.

Как мне получить наименование из формы из которой стартуем печать документа?
Варианты:
Наименование = Форма.Владелец.НаименованиеДляДокументов;
Наименование = ЭтаФорма.Владелец.НаименованиеДляДокументов;

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

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

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

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

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

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


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


Ошибка
{ВнешняяОбработка.LC_шаблон_договоров.МодульОбъекта(83,23)}: Переменная не определена (ЭтаФорма)
НужноеНаименование = <<?>>ЭтаФорма.Владелец.НаименованиеДляДокументов; (Проверка: Сервер)
4 vicof
 
11.05.22
11:53
Ты не из формы печатаешь.
5 xecoder
 
11.05.22
11:59
Сделал через ссылку. Заработало
Получилось

СсылкаНаОбъект.Владелец.НаименованиеДляДокумента;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн