Имя: Пароль:
1C
1С v8
Отладка "Дополнительной обработки" (формы нет)
0 PiotrLoginov
 
22.04.13
08:02
Здравствуйте всем. Вынужден поднять тему отладки "Дополнительных" внешних обработок. Погуглил, покопался на форуме, но безрезультатно. Механизмы навроде этого: http://infostart.ru/public/73691/ - для ВПФ; навроде этого: http://infostart.ru/public/141765/ - для "ЗаполнениеОбъекта" или "СозданиеСвязанныхОбъектов". Просто открыть файл обработки в режиме предприятия - тоже не вариант, у нее и формы нет никакой. Делаю так: в начале серверной процедуры в модуле объекта пишу

   Попытка
       Ошибка = 1/0;
   Исключение
   КонецПопытки;

Помечаю Отладка -> останавливаться по ошибке. Запускаю отладку в толстом клиенте, добавляю обработку в список дополнительных обработок, запускаю, попадаю в конфигуратор, но не в текст темпового файла, а в общий модуль Дополнительные отчеты и обработки. :(  Пробовал ставить точки останова там - тот же результат. Что делаю не так?
1 Rie
 
22.04.13
08:06
(0) Выгрузи внешнюю обработку в файл, поставь точку останова в этом файле и открой обработку.
Формы нет? Ну так модуль объекта есть.
2 Godofsin
 
22.04.13
08:06
(0) Сохранить как внешнюю не вариант?
3 PiotrLoginov
 
22.04.13
08:12
(2) Как внешнюю отерыть не могу формы нет... Или я чего-то не понимаю?

(1) Гм. Ну вот открыл я обработку в режиме предприятия. Ничего ж не произошло. Серверная процедура в модуле сама ж не выполнится
4 PiotrLoginov
 
22.04.13
08:12
* открыть
5 Wobland
 
22.04.13
08:14
(3) нарисуй свою форму, положи на неё кнопку, вызывай процедуру принудительно и отлаживайся себе на здоровье
6 PiotrLoginov
 
22.04.13
08:31
(5) Неужели по-другому никак? :(
Хорошо. А как обратиться к из модуля формы к процедуре в модуле объекта ? Допустим, у меня будет кнопка "Выполнить" и для нее процедура Выполнить(Команда). Что написать чтобы вызвать процедуру
   &НаСервере
   Процедура ВыполнитьКоманду(Коррекция) Экспорт
, которая в модуле объекта? Просто раньше я писал так:



&НаКлиенте
Процедура Выполнить(Команда)    
   ВыполнитьСервернуюПроцедуру();    
КонецПроцедуры

Функция ВыполнитьСервернуюПроцедуру()
   //Здесь собирались в кучку данные из реквизитов формы обработки

   //далее обращение к процедуре в модуле объекта:
   ЭтотОбъект().ВыполнитьКоманду(ЗДЕСЬ ОБЫЧНО ПАРАМЕТРЫ С ДАННЫМИ ИЗ РЕКВИЗИТОВ);
       Возврат КоллекцияФорм.ВыгрузитьКолонку("ТабличныйДокумент");    
КонецФункции

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


Но боюсь, такой вариант тут не прокатит.
7 Wobland
 
22.04.13
08:50
помнится, была у меня какая-то беда промеж модуля обработки и модулем формы. чтоб не париться с обращением к ЭтотОтчёт (или что-то такое) скопировал всё нужное в модуль формы, нашёл ошибку, убил форму, поправил ошибку и забил
8 PiotrLoginov
 
22.04.13
09:02
скопировать всё в модуль формы? ну .. попробую, спасибо.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший