|
Как отлаживать внешнюю обработку заполнения ТЧ на УФ | ☑ | ||
---|---|---|---|---|
0
manti
05.11.13
✎
14:11
|
Собственно САБЖ:
как можно отлаживать внешнюю обработку заполнения ТЧ под УФ на тонком клиенте? Вроде под 8.1 была спец. обработка. Есть ли что для 8.2 и под УФ именно. Если нет, то как быть? |
|||
1
Холодильник
05.11.13
✎
14:12
|
как как.. делаешь ошибку в обработке и включаешь остановку по ошибке.. эх, студенты
|
|||
2
manti
05.11.13
✎
14:15
|
(1) прикольно, и как это Вы представляете, если в данном типе обработки нет ссылки на объект?
|
|||
3
Wobland
05.11.13
✎
14:16
|
(2) я, к примеру, представляю себе попытку деления на ноль
|
|||
4
vicof
05.11.13
✎
14:22
|
(3) Боже, какое извращение...
|
|||
5
Wobland
05.11.13
✎
14:24
|
(4) дёшево и сердито. удобней, чем форму рисовать ;)
|
|||
6
Sabbath
05.11.13
✎
14:25
|
(5) по мне так форму нарисовать совсем не проблема
|
|||
7
vicof
05.11.13
✎
14:26
|
(5) поднял табличку [sarcasm]
|
|||
8
Wobland
05.11.13
✎
14:28
|
(6) по мне тоже. всё сильно зависит от обстоятельств
|
|||
9
manti
05.11.13
✎
14:29
|
(3) например есть обработка заполнения ТЧ у документа перемещение запасов в УНФ на основе документа авансового отчета
Если тестировать напрямую запуском этой обработки, то на строке Для каждого Элемент из ОбъектыНазначенияМассив ОбъектыНазначенияМассив - так неопределен. &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт //Спросим у пользователя разрешение на продолжение обработки Режим = РежимДиалогаВопрос.ДаНет; Текст = "Текущие данные документа будут заменены новыми без возможности восстановления. |Продолжить?"; Ответ = Вопрос(Текст, Режим, 0); Если Ответ = КодВозвратаДиалога.Да Тогда //Если пользователь дал разрешение на продолжение, то начнем перебирать все //документы, у которых мы планируем заполнить табличную часть Для каждого Элемент из ОбъектыНазначенияМассив Цикл //Зададим ключ поиска документа, из которого вызвана данная обработка, //чтобы получить ссылку на редактирумый документ в удобном виде для //функции ОткрытьФорму() КлючПоиска = Новый Структура("Ключ", Элемент); //Но нам не надо открывать новую форму (окно) для изменяемого документа, а //Нам надо все изменения показать в уже открытых у клиента окнах Окна = ПолучитьОкна(); Для каждого Окно из Окна Цикл //Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому //сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна //изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться //Наименование, номер и дата нужного документа - будем изменять Если НЕ Окно.Основное И Найти(Окно.Заголовок, Элемент) Тогда //Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне //в функцию ОткрытьФорму() //Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного // Форма = ОткрытьФорму("Документ.АвансовыйОтчет.Форма.ФормаСписка",КлючПоиска,,,Окно); Форма = ПолучитьФорму("Документ.АвансовыйОтчет.Форма.ФормаСписка",КлючПоиска,,,Окно); //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную //В объекте содержатся все реквизиты (элементы) формы НовыйОбъект = Форма.Объект; //Мы помещаем объект формы в переменную, //так как должны передать её в процедуру на сервере, //где нельзя изменять объект формы, зато можно править переменную содержащую его ЗаполнитьОбъект(НовыйОбъект); //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект, //которую необходимо передать в уже полученную нами форму КопироватьДанныеФормы(НовыйОбъект, Форма.Объект); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
10
Новиков
05.11.13
✎
14:47
|
(1), (3) поведение платформы меняется от релиза к релиза. В каких-то, данный трюк правда работает, в каких-то нет.
(9) ну ссылку то положи уж в массив :) |
|||
11
manti
05.11.13
✎
14:48
|
быть можеть данная обработка хранится в темпе и к ней можно всетак как то обратиться из кнфигуратора? просто без отладчика дело встало((
|
|||
12
CrazyBear
05.11.13
✎
15:07
|
(11) ну посмотри в справочнике "внешние отчеты и обработки"куда тем складывается или создай форму, а из нее вызови процедуру модуля (Инициализировать по моему) и задай ей правильно параметры :)
|
|||
13
Новиков
05.11.13
✎
15:23
|
(12) очевидно, если это БСП, то внешняя форма подключается. И посмотреть, куда он там складывается, не получится. Если сработает брейкпоинт по ошибке - то да, увидишь. Но то, что сработает - не факт :)
|
|||
14
shlyahtich
05.11.13
✎
15:27
|
по сабжу
создаешь обработку сначала со своей формой и с кнопкой Выполнить и со ссылкой на объект и отлаживаешь. Отладил - загружай в справочник внешних обработок |
|||
15
Холодильник
05.11.13
✎
15:27
|
(4) стандартное
Выполнить("абракадабра"); в нужном месте отчета |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |