В процессе разработки конфигураций и отдельных модулей программистам 1С приходится многократно вносить исправления в исходный код. Если обработка встроена непосредственно в конфигурацию, каждое изменение требует обновления конфигурации базы данных и перезапуска сеанса 1С:Предприятия (либо динамического обновления, которое не всегда стабильно и безопасно). Постоянный перезапуск отнимает много времени, сбивает контекст тестирования и снижает продуктивность. Разберем основные способы, которые позволяют отлаживать функционал «на лету» без перезапуска пользовательского сеанса.
Самое простое и эффективное решение проблемы — вынести разрабатываемую обработку во внешний файл с расширением .epf. Проанализируем, как правильно организовать этот процесс по шагам:
.epf в удобный каталог на диске.Рассмотрим важную особенность современной разработки: в управляемых приложениях значительная часть логики выносится в МодульМенеджера. Однако у внешних обработок физически отсутствует модуль менеджера — в структуре объекта есть только МодульОбъекта и модули форм.
Выясним, как обойти это ограничение на этапе отладки:
МодульОбъекта внешней обработки и объявляем их с ключевым словом Экспорт.
&НаСервере
Процедура ВыполнитьДействиеНаСервере()
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
ОбъектОбработки.МойЭкспортныйАлгоритм();
КонецПроцедуры
Обработки.ИмяОбработки.МойЭкспортныйАлгоритм().При отладке внешних файлов разработчики часто сталкиваются с ситуацией, когда платформа блокирует файл на диске, если форма обработки открыта в 1С:Предприятии. Из-за этого Конфигуратор выдает ошибку доступа при попытке сохранить изменения. Чтобы устранить эту проблему и не закрывать форму вручную перед каждым сохранением, применяют обработку-запускатор (обертку).
Разберем механизм работы такого подхода:
.epf в двоичные данные, сохраняет его во временный файл и программно подключает с помощью метода ВнешниеОбработки.Подключить():
&НаКлиенте
Процедура ЗапуститьОбработку(Команда)
ПутьКФайлу = "C:\Dev\МояОбработка.epf";
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
ВременныйФайл = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные.Записать(ВременныйФайл);
ИмяПодключеннойОбработки = ВнешниеОбработки.Подключить(ВременныйФайл, , Ложь);
ОткрытьФорму("ВнешняяОбработка." + ИмяПодключеннойОбработки + ".Форма");
КонецПроцедуры
Нередко возникает ситуация: обработка вынесена во внешний файл, но точки останова не срабатывают. Проанализируем критические условия, соблюдение которых необходимо для успешной отладки:
\\server\share\file.epf, а в другом — подключенный диск Z:\file.epf, отладчик не сможет сопоставить исполняемый модуль с открытым в редакторе текстом.&НаСервере на сервере 1С:Предприятия должен быть активирован режим отладки (параметр запуска службы -debug). При работе в файловой базе отладка доступна по умолчанию.Посмотрим на другие варианты ускорения тестирования функционала, если вариант с внешним файлом не подходит:
Выполнить(), полностью избавляя от необходимости что-либо компилировать или перезапускать.