Имя: Пароль:
1C
1С v8
вывод результата во внешней обработке
0 YamEgor
 
27.12.20
15:02
Добрый день! подскажите почему не находит макет? во внешней печатной форме вывожу результат в табличный документ и получаем ошибку:
Поле объекта не обнаружено (ПоРодителямПраваОбъектов)
{ВнешняяОбработка.ПоРодителямПраваОбъектов.Форма.Форма.Форма(6)}:    Макет = ВнешниеОбработки.ПоРодителямПраваОбъектов.ПолучитьМакет("Макет");
{ВнешняяОбработка.ПоРодителямПраваОбъектов.Форма.Форма.Форма(65)}:    ПроверитьПоРодителямНаСервере();

&НаСервере
Процедура ПроверитьПоРодителямНаСервере()
    ВсеРодители = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоНаименованию(ВыбратьРодителя,Истина);
    
    Макет = ВнешниеОбработки.ПоРодителямПраваОбъектов.ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ИдентификаторыОбъектовМетаданных.Ссылка КАК Ссылка,
        |    ИдентификаторыОбъектовМетаданных.Имя КАК Имя
        |ПОМЕСТИТЬ ВТ_Родители
        |ИЗ
        |    Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных
        |ГДЕ
        |    ИдентификаторыОбъектовМетаданных.Родитель = &Родитель
        |    И НЕ ИдентификаторыОбъектовМетаданных.ПометкаУдаления
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Родители.Имя КАК Имя,
        |    КОЛИЧЕСТВО(ПраваРолей.Роль) КАК Роль
        |ИЗ
        |    ВТ_Родители КАК ВТ_Родители
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваРолей КАК ПраваРолей
        |        ПО ВТ_Родители.Ссылка = ПраваРолей.ОбъектМетаданных
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_Родители.Имя
        |
        |ИМЕЮЩИЕ
        |    КОЛИЧЕСТВО(ПраваРолей.Роль) = 1";
    
    Запрос.УстановитьПараметр("Родитель", ВсеРодители);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
КонецПроцедуры
1 ДенисЧ
 
27.12.20
15:04
"ВнешниеОбработки.ПоРодителямПраваОбъектов"
А ты обработку-то зарегистрировал, чтобы так к ней обращаться
2 YamEgor
 
27.12.20
15:05
извиняюсь не во внешней печатной форме , а во внешней обработке вывожу в таб док результат
3 YamEgor
 
27.12.20
15:07
(1) а если ее не регистрировать просто открыть через файл открыть тогда как?
4 ДенисЧ
 
27.12.20
15:08
(3) об = РеквизитФормыВЗначение("Объект") // или как называется основной реквизит
и об.ПолучитьМакет()
5 YamEgor
 
27.12.20
15:11
(4) спасибо получилось
6 Cthulhu
 
27.12.20
15:13
7 Cthulhu
 
27.12.20
15:17
// типа
ОбрСсылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("ПоРодителямПраваОбъектов");
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ОбрСсылка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Обр = ВнешниеОбработки.Создать(ИмяФайла);
МакетОбр = Обр.ПолучитьМакет("Макет");