Имя: Пароль:
1C
 
Отладка ВПФ
,
0 Лентаf
 
29.12.18
10:42
Привет!
Есть ВПФ для последней ут 11, есть какие-то простые варианты ее отладки?
1 Лентаf
 
29.12.18
10:46
знаю что можно написать этот код на форме и вызывать документ по ссылке но это долго.
2 Фрэнки
 
29.12.18
10:47
(1) затолкай ее в расширение :-)
3 Фрэнки
 
29.12.18
10:51
Уверяю, что это Вам настолько понравится, что примете командирское решение больше не пользоваться ВПФ, а использовать печатные формы в расширениях
4 Лентаf
 
29.12.18
10:52
(3) расширения пока не трогал, есть гайдец?
5 Лентаf
 
29.12.18
10:53
6 Aleksey
 
29.12.18
10:56
7 Фрэнки
 
29.12.18
10:58
(5) Да. Это рабочий рецепт. Причем, у меня таким способом есть подмена текстов в ячейках результирующего документа, что даже можно не переделывать всю кухню у печатной формы целиком, а конкретное узкое место подправить.
8 Aleksey
 
29.12.18
11:01
(5) ТОлько все таки правильнее писать после, а не вместо
9 yzimin
 
29.12.18
11:01
(3) А чем принципиально удобнее, если не рассматривать критическим скорость работы? Сами сейчас на последнем релизе, но за 5 лет накопилось достаточно много ВПФ
10 Aleksey
 
29.12.18
11:09
(9) Типа не такой как все
11 Фрэнки
 
29.12.18
11:15
(9) На практике получилось так, что я переходил на УФ, а мне потребовалось в печатную форму дописать какую-то ерунду. Ну вот просто не хотелось переписывать полностью всю цепочку обработки данных из документа для вывода в печ-форму. Ну вот... готовую таб документ из результата расширением перехватил и в нем ячеки отредактировал и вернул в типовую.

Это был мой первый опыт :-)

Ну а затем понравилсь простота отладки, установки уже готового комплекта в программу клиента и т.п. Права же никакие можно не настраивать и т.д.
12 Фрэнки
 
29.12.18
11:29
Вот ниже пример.
Получил М-11 типовую и дополнительно в нее нужно было выдавать в ячейки ФИО ответственных лиц.
Ответственных в документы Заказчик согласился сохранять в ДопСведениях


&Вместо("ПечатьМ11")
Функция ИЗО1_ПечатьМ11(МассивОбъектов, ОбъектыПечати)
    
    ТабДокумент = ПродолжитьВызов(МассивОбъектов, ОбъектыПечати);
    
    ЗначениеСсылка = ОбъектыПечати[0].Значение;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДополнительныеСведения.Значение КАК Значение,
        |    ДополнительныеСведения.Свойство.Имя КАК ИмяСвойства
        |ИЗ
        |    РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |ГДЕ
        |    ДополнительныеСведения.Объект = &ЗначениеСсылка";
    
    Запрос.УстановитьПараметр("ЗначениеСсылка", ЗначениеСсылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
        Возврат ТабДокумент;
    КонецЕсли;
// дальше всякие манипуляции с ячейками ТабДокумента
    Возврат ТабДокумент;
КонецФункции
13 Фрэнки
 
29.12.18
11:31
в продолжение к 12

отдельно можно с использованием Расширения допилить возможность редактирования ДопСведений не типовым образом, который не всякому пендитному заказчику придется по вкусу, в тоже в расширяемой форме от типового документа.

т.е. типовой замок остается на конфе - типовая полностью типовая. Допил исключительно средствами расширения
14 Aleksey
 
29.12.18
11:39
(12) Ну правка это одно. А вот новые ПФ это другое.
К примеру если нужно добавить МХ-1, МХ3 в БП.
И вот тут встает вопрос Расширение VS ВПФ
15 Фрэнки
 
29.12.18
11:44
Абсолютно уверен, что для тебя такое программирование не составляет трудностей, так что за копипасту кода прошу не обижаться :-)

&Вместо("ДобавитьКомандыПечати")
Процедура ИЗО1_ДобавитьКомандыПечати(КомандыПечати)
    
    // Добавляемая форма в расширение - Акт списания ТН
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Идентификатор = "АктСписанияТН";
    КомандаПечати.Представление = НСтр("ru = 'Акт списания ТН'");
    КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
    КомандаПечати.СписокФорм    = "ФормаСписка,ФормаВыбора,ФормаДокумента"; // здесь перечислены все формы - куда добавлять кнопку
    КомандаПечати.Порядок = 10;

    ПродолжитьВызов(КомандыПечати);
КонецПроцедуры

&Вместо("Печать")
Процедура ИЗО1_Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
    
    // Добавляемая форма в расширение - по идентификатору, указанному выше ДобавитьКомандыПечати
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСписанияТН") Тогда
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм,
            "АктСписанияТН",
            "Акт списания ТН",
            ИЗО1_ПечатьФормыАктСписанияТН(МассивОбъектов, ОбъектыПечати));
            
    КонецЕсли;
    
    ПродолжитьВызов(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
16 Фрэнки
 
29.12.18
11:46
и дальше в 15

добавляем всю писанину абсолютно также как с ВПФ

Функция ИЗО1_ПечатьФормыАктСписанияТН(МассивОбъектов, ОбъектыПечати) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.АвтоМасштаб            = Истина;
    ТабДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;
    ТабДокумент.ИмяПараметровПечати    = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладная_АктСписания";

// дальше всякий код

    Возврат ТабДокумент;
КонецФункции
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn