Имя: Пароль:
1C
 
УФ: внешняя обработка в режиме отладки
0 dft2014
 
23.01.18
18:47
УФ
Есть внешняя обработка, которая отлично формирует печатную форму из спр.Сотрудники. Но как ее можно запустить в режиме отладки?

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





В МодулеФормы:

&НаСервере
Функция ПолучитьДанные(Сотрудник)
КонецФункции


&НаСервере
Функция ПолучитьМакетСервер()
    Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции


&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
    
    Для Каждого Сотрудник Из МассивОбъектов Цикл
        Макет = ПолучитьМакетСервер();
        Данные = ПолучитьДанные(Сотрудник);
    КонецЦикла;
    
КонецПроцедуры
1 dft2014
 
23.01.18
18:48
Гуглила, что надо на форме создать реквизит, со ссылкой на спр.Сотрудники (в моем случае), а дальше как?
2 Вафель
 
23.01.18
18:48
на ис миллион способов есть
3 dft2014
 
23.01.18
18:50
В (0) как-то некрасиво (нечитаемо) код отобразился. Дублирую еще раз:


&НаСервере
Функция ПолучитьДанные(Сотрудник)
    // здесь мне надо кое-что отладить    
КонецФункции

&НаСервере
Функция ПолучитьМакетСервер()
    Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
    Для Каждого Сотрудник Из МассивОбъектов Цикл
        Макет = ПолучитьМакетСервер();
        Данные = ПолучитьДанные(Сотрудник);
    КонецЦикла;
КонецПроцедуры
4 Вафель
 
23.01.18
18:52

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

&НаКлиенте
Процедура Печать(Команда)
    
    //Этим способом все формы в одном табличном документе как в стандартном механизме печати,
    //При необходимости можно сделать чтобы было в разных
    КоллекцияПечатныхФормМассив = ПечатьНаСервере();
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФормМассив);

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    СведенияОбОбработке = ОбработкаОбъект.СведенияОВнешнейОбработке();
    
    Для каждого СтрокаТЗ из СведенияОбОбработке.Команды Цикл
        
        Элементы.ИмяПечФормы.СписокВыбора.Добавить(СтрокаТЗ.Идентификатор);
        
    КонецЦикла;    
    
КонецПроцедуры
5 dft2014
 
23.01.18
18:57
(4) Два непонятных момента:
- В моем коде из (3) есть тоже процедура Печать(). Поэтому, где вставлять ваш код?
- На форме обработки не надо создавать реквизит, со ссылкой на спр.Сотрудники?
6 Вафель
 
23.01.18
19:00
на форму
2 поля: ссылка и ИмяПечФормы - строка
7 dft2014
 
23.01.18
19:04
(6) ИмяПечФормы - это имя макета на моей внешней обработки?
8 dft2014
 
24.01.18
10:32
Ап!
9 dft2014
 
24.01.18
11:42
10 dft2014
 
24.01.18
11:45
МодульФормы:
https://b.radikal.ru/b04/1801/a7/65bbdda8af98.jpg


МодульОбъекта:
https://a.radikal.ru/a32/1801/61/f1cdb7687b88.jpg


Оставила примитивный код, чтобы все-таки понять, как отлаживать внешние обработки для УФ. Подскажите пожалуйста!
11 Новиков
 
24.01.18
12:05
Ты заставишь себя поиском пользоваться или нет?

http://catalog.mista.ru/public/675934/
12 dft2014
 
24.01.18
12:09
(11) У меня туда доступа нет, чтобы скачать пример.
13 Вафель
 
24.01.18
12:11
так у тебя вызов клиентского метода. Просто открывай обработку через "Файл-Открыть" и отлаживай
14 dft2014
 
24.01.18
12:43
(13) На форме нет ничего, кроме кода в (10).
15 dft2014
 
24.01.18
12:44
Выложила обработку на https://yadi.sk/d/qECfNUzb3RjSKg
16 dft2014
 
24.01.18
13:11
HELP!!!
17 LordCMEPTb
 
24.01.18
13:27
А в чем проблема на форму кинуть ссылку на договор (или какой справочник нужно печатать), кинуть команду, в которой код будет похожим:

МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Договор);
Печать(Неопределено, МассивОбъектов);
18 ildary
 
24.01.18
13:55
(16) я делал вот так - у обработки есть поле Ссылка типа ЗаказКлиента, выведенное на форму.

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

&НаКлиенте
Процедура ПечатьИзФормы(Команда)
    
    МассивТабличныхДокументов = ПечатьИзФормыНаСервере();
    
    Для Каждого ТабличныйДокумент Из МассивТабличныхДокументов Цикл
        
        Если ТабличныйДокумент <> Неопределено Тогда
            
            ТабличныйДокумент.Показать();
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры