При сопровождении или доработке конфигураций на старых версиях платформы 1С:Предприятие разработчики часто сталкиваются с проблемой: современные сервисные обработки отказываются запускаться. Рассмотрим подробно, почему возникает такая несовместимость, где взять подходящие инструменты для релиза 8.3.8 и как при необходимости быстро написать собственную консоль кода с нуля.
Основная сложность заключается в изменении внутреннего формата внешних обработок (файлов с расширением .epf), которое произошло в релизе платформы 8.3.9. Любая внешняя обработка, сохраненная в конфигураторе версии 8.3.9 и новее, не может быть прочитана платформой 8.3.8 и вызывает ошибку формата файла при попытке открытия. Большинство современных инструментов на профильных ресурсах ориентировано на свежие версии платформы, поэтому их стандартные версии просто не откроются в вашей среде.
Разберем один из самых мощных готовых вариантов — портативную версию комплекса «Инструменты разработчика» (ИР), изначально созданную под платформу 8.2 и ранние релизы 8.3. Она полноценно работает на платформе 8.3.8:
Это оптимальный выбор, если вам нужен функциональный инструмент с поддержкой автодополнения, замеров производительности и просмотра дерева объектов без необходимости писать обработку самостоятельно.
Проанализируем альтернативный источник готовых решений. В составе дистрибутивов Библиотеки стандартных подсистем редакций 2.2 и 2.3 поставляются сервисные обработки, в том числе консоли запросов и обработчики кода. Так как эти редакции БСП разрабатывались под требования платформ 8.3.6–8.3.8, входящие в их каталог внешние файлы гарантированно открываются конфигуратором и клиентским приложением версии 8.3.8.
Если у вас есть удобная консоль из более новой версии платформы, но файл не открывается, применим метод ручного переноса:
Разберем по шагам создание минималистичной, но полнофункциональной консоли. Базовая идея заключается в динамическом исполнении введенного текста программы через оператор Выполнить().
Создадим новую внешнюю обработку в конфигураторе 8.3.8 и добавим управляемую форму. Разместим следующие элементы:
ТекстКода с типом Строка (неограниченной длины). На форме свяжем его с полем текстового документа для удобства набора кода.РезультатВыполнения с типом Строка.ВыполнитьКод, для которой создадим обработчик нажатия.Посмотрим на пример реализации модуля управляемой формы:
&НаКлиенте
Процедура ВыполнитьКод(Команда)
РезультатВыполнения = "";
ВыполнитьКодНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКодНаСервере()
Попытка
Выполнить(ТекстКода);
РезультатВыполнения = "Код успешно выполнен в: " + ТекущаяДата();
Исключение
РезультатВыполнения = ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Рассмотрим важные особенности платформы, которые необходимо учитывать при самостоятельном написании и запуске такого инструмента:
Выполнить() обязательно должен выполняться внутри серверной процедуры (директивы &НаСервере или &НаСервереБезКонтекста). Если требуется вывести на клиент серверный объект (например, результат запроса типа ТаблицаЗначений), его необходимо предварительно преобразовать в реквизит формы с помощью метода ЗначениеВРеквизитФормы() либо выгрузить в массив структур.Выполнить() предназначена только для запуска последовательности операторов в текущей области видимости. В динамически передаваемом тексте нельзя объявлять новые процедуры и функции. Кроме того, этот оператор не возвращает значение. Если ваша задача — рассчитать единичное математическое или логическое выражение, используйте функцию Вычислить().Напомним, что для быстрой проверки выражений или вызова методов на платформе 8.3.8 вовсе не обязательно создавать внешние файлы. Достаточно запустить сеанс «1С:Предприятия» в режиме отладки из конфигуратора и воспользоваться встроенным окном Табло либо диалоговым окном Вычислить выражение. Эти штатные инструменты позволяют вычислять допустимые выражения и вызывать экспортные методы конфигурации прямо в контексте выполняющегося процесса.