Имя: Пароль:
1C
1С v8
Как в отладчике отследить работу внешней печатной формы?
0 AlexandrV
 
15.11.22
15:25
Подскажите кто знает, как в отладчике отследить работу внешней печатной формы?
1 mikecool
 
15.11.22
16:00
УниверсальныеМеханизмы.НапечататьВнешнююПечатнуюФорму
по крайней мере - в ОФ было так
а фообще - форма с объектом печати и вызов функции
2 Ал_Ив
 
15.11.22
19:52
3 TormozIT
 
гуру
15.11.22
21:09
4 AlvlSpb
 
15.11.22
21:30
5 DJ Anthon
 
16.11.22
10:46
я ставил исключение в нужном месте и ловил выполнение ошибки
6 evorle145
 
16.11.22
10:55
рекомендую эту https://infostart.ru/public/916110/
работает 100% , отладка и печатных форм и обработок.
7 denk
 
16.11.22
11:10
1. Создаешь у обработки форму.
2. На форме добавляешь реквизиты СсылкаНаОбъект и МакетДляОтладки (тип Строка). У элемента формы МакетДляОтладки включаешь свойство РежимВыбораИзСписка.
3. На форме создаешь команду (кнопку) Сформировать.
4. В модуле формы пишешь следующие обработчики и процедуры:


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

    Результат = ОтладкаНаСервере();
    
    Если Не Результат.ТабличныйДокумент = Неопределено Тогда
        Результат.ТабличныйДокумент.Показать();
    Иначе
        Сообщить(Результат.ТекстОшибки);
    КонецЕсли;

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

&НаСервере
Функция ОтладкаНаСервере()
    
    Результат = Новый Структура();
    Результат.Вставить("ПризнакОшибки",Ложь);
    Результат.Вставить("ТекстОшибки","Неизвестная ошибка");
    Результат.Вставить("ТабличныйДокумент",Неопределено);

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

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

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

Функция ПодготовитьКоллекциюПечатныхФорм(Знач Идентификаторы)
    
    Результат = Новый ТаблицаЗначений;
    Для Каждого ИмяКолонки Из УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм() Цикл
        Результат.Колонки.Добавить(ИмяКолонки);
    КонецЦикла;
    
    Если ТипЗнч(Идентификаторы) = Тип("Строка") Тогда
        Идентификаторы = СтрРазделить(Идентификаторы, ",");
    КонецЕсли;
    
    Для Каждого Идентификатор Из Идентификаторы Цикл
        ПечатнаяФорма = Результат.Найти(Идентификатор, "ИмяМакета");
        Если ПечатнаяФорма = Неопределено Тогда
            ПечатнаяФорма = Результат.Добавить();
            ПечатнаяФорма.ИмяМакета = Идентификатор;
            ПечатнаяФорма.ИмяВРЕГ = ВРег(Идентификатор);
            ПечатнаяФорма.Экземпляров = 1;
        Иначе
            ПечатнаяФорма.Экземпляров = ПечатнаяФорма.Экземпляров + 1;
        КонецЕсли;
    КонецЦикла;
    
    Результат.Индексы.Добавить("ИмяВРЕГ");
    Возврат Результат;
    
КонецФункции


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

    КонецЦикла;
    
    МакетДляОтладки = Этаформа.Элементы.МакетДляОтладки.СписокВыбора[0].Значение;

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

5. Становишься в отладке на обработчик команды Сформировать и вперед.