|
---|
Отладка внешних обработок для 1С 8.3
В противоположность подходу, который предполагает использование обработки-стартера, идея автора статьи заключается в адаптации самой БСП для отладки внешней обработки.- Любой уважающий себя программист, ведет разработку и отладку в тестовой базе.
Поэтому сделайте ФАЙЛОВУЮ копию базы 1с, если вы используете типовую конфигурацию то вполне подойдет демо-база, которая поставляется вместе с любой типовой конфигурацией 1с. - Включите возможность изменения конфигурации «Конфигурация-Поддержка-Настройка поддержки…-Включить возможность изменения»
Для общего модуля ДополнительныеОтчетыИОбработки включите режим «Объект поставщика редактируется с сохранением поддержки» - В модуль ДополнительныеОтчетыИОбработки вносим следующие изменения:
Функция ПодключитьВнешнююОбработку ( Ссылка ) Экспорт
...
// Было:
// ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, ,
// БезопасныйРежим);
// Стало:
ИмяОбработки = Менеджер .Создать ( "c:МояОбработка.epf" , Ложь);
ИмяОбработки = "ИмяМоейОбработки" ; // ИМЯ(!) Внешней обработки, которую Вы отлаживаете, как оно задано в конфигураторе
...
Процедура ПриПолученииРегистрационныхДанных (Объект , РегистрационныеДанные , ПараметрыРегистрации , РезультатРегистрации )
...
// Было:
// ВнешнийОбъект = Менеджер.Создать(РезультатРегистрации.ИмяОбъекта);
// Стало:
ВнешнийОбъект = Менеджер .Создать ( "c:МояОбработка.epf" , Ложь);
... - Открываем в отладчике обработку «c:МояОбработка.epf» ставим точки останова, можно ставить их как в модуле объекта обработки — в СведенияОВнешнейОбработке(), Печать() и т.д., так и в модуле формы, если обработка имеет форму и использует команду «ОткрытиеФормы»
- Запускам 1с в режиме предприятия, добавляем обработку в справочник «Дополнительные отчеты и обработки», если точка останова была поставлена в функции СведенияОВнешнейОбработке(), то она тут же должна сработать. Вот и всё, теперь можно отлаживать обработку в штатном режиме.
- Внимание! Если точка останова не сработала то в связи с особенностью некоторых релизов платформы 8.3.6, для отладки необходимо в первую очередь поставить точку останова на строке СведенияОВнешнейОбработке = ВнешнийОбъект.СведенияОВнешнейОбработке(); процедуры ПриПолученииРегистрационныхДанных(…) модуля ДополнительныеОтчетыИОбработки. Затем в режиме предприятия регистрируем внешнюю обработку(либо заменяем файл, уже зарегистрированной обработки). Когда сработает точка останова необходимо нажать «Шагнуть в(F11)», откроется модуль обработки, а если модуль уже был открыт, то его КОПИЯ(!). Именно этот модуль и нужно отлаживать в обычном порядке, ставить точки останова и т.д.
- Обратите внимание, что при изменении исходного кода обработки нет необходимости заменять файл обработки в справочнике «Дополнительные отчеты и обработки», потому что фактически происходит запуск и отладка обработки «c:МояОбработка.epf», а не обработки из элемента справочника «Дополнительные отчеты и обработки». Это существенно сокращает и упрощает процесс отладки.
- Отмечу, что с помощью описанной технологии можно отлаживать внешние обработки ЛЮБОГО вида: «ДополнительнаяОбработка», «ДополнительныйОтчет», «ЗаполнениеОбъекта», «Отчет», «ПечатнаяФорма»,»СозданиеСвязанныхОбъектов», содержащие ЛЮБЫЕ команды: «ОткрытиеФормы», «ВызовКлиентскогоМетода», «ВызовСерверногоМетода»
- Возможные проблемы: время от времени точки останова перестают срабатывать, это происходит потому что по непонятным причинам отключается режим отладки, зайдите в «Отладка-Подключение…» и заново подключите отладку, либо перезапустите 1с предприятие в режиме отладки.
- P.S. Разумеется в рабочую базу никаких изменений вносить не нужно! Просто подключите к ней уже отлаженную внешнюю обработку.
Источник: ОБРАБОТКИ.com