Разработчики, которым приходится поддерживать и развивать конфигурации на платформе 1С:Предприятие 7.7, часто сталкиваются с серьезной потерей времени при отладке. Если информационная база объемная, а при старте системы выполняются тяжелые процедуры инициализации (например, проверка прав, загрузка актуальных курсов валют, проверка обновлений или загрузка внешних компонент), то каждый запуск предприятия для проверки одной строчки кода превращается в мучение. В этой статье мы подробно разберем, как кардинально ускорить этот процесс и организовать удобную отладку форм и модулей «на лету» без постоянного перезапуска «1С:Предприятие».
#ЗагрузитьИзФайлаНачнем с классического штатного механизма, который заложен в саму платформу 1С 7.7, но о котором знают далеко не все разработчики. Платформа поддерживает специальную директиву препроцессора, которая позволяет заменить весь исполняемый код модуля внешней ссылкой на текстовый файл.
Для реализации этого подхода выполним следующие шаги:
document_module.txt.Синтаксис этой директивы выглядит следующим образом:
#ЗагрузитьИзФайла C:\1C_Bases\DebugFiles\document_module.txt
Как это работает на практике: Теперь каждый раз, когда пользователь в режиме «1С:Предприятие» открывает форму данного документа или запускает отчет, платформа обращается к указанному физическому пути на диске, считывает содержимое файла document_module.txt, компилирует его в оперативную память и выполняет. Нам больше не нужно закрывать пользовательский режим! Достаточно просто внести изменения во внешний текстовый файл, сохранить его в любом редакторе и заново открыть форму в 1С.
Однако у этого способа есть несколько технических ограничений и нюансов, которые необходимо учитывать:
#ЗагрузитьИзФайла «на горячую» в уже запущенной базе нельзя. Для этого все равно придется один раз зайти в Конфигуратор монопольно, внести изменения в структуру метаданных и сохранить конфигурацию.Чтобы комфортно править выгруженные файлы прямо во встроенном конфигураторе, не прибегая к сторонним редакторам, выполним простую настройку:
После этой настройки при открытии любого файла с расширением .txt или .1с через меню «Файл -> Открыть» конфигуратор автоматически применит к нему правила подсветки синтаксиса встроенного языка.
Штатный редактор конфигуратора 1С 7.7 крайне аскетичен. В нем по умолчанию нет возможности сворачивать и разворачивать процедуры и функции (так называемый code folding, или «плюсики»). Для решения этой проблемы продвинутые разработчики используют легендарный набор расширений.
Разберем подробнее ключевые компоненты этой связки:
Scintilla.Именно благодаря sciColorer в стареньком конфигураторе «семерки» появляются долгожданные функции:
Если...КонецЕсли и циклов.Для установки этого решения достаточно скачать дистрибутив OpenConf, распаковать его файлы в каталог установленной платформы 1С 7.7 (в папку BIN) и подключить плагин sciColorer согласно инструкции разработчика. Это вдохнет новую жизнь в стандартную среду разработки и сделает работу с внешними файлами модулей максимально комфортной.
Если вам требуется еще более продвинутый уровень отладки, при котором вообще не нужно модифицировать конфигурацию директивами #ЗагрузитьИзФайла, обратим внимание на специализированную компоненту TurboMD.
Проанализируем принцип работы этого инструмента:
Компонента TurboMD перехватывает системные вызовы обращения платформы к файлу метаданных 1Cv7.MD. Вместо того чтобы читать модуль из бинарного файла конфигурации, она проверяет наличие соответствующего внешнего файла на диске в специальном каталоге отладки.
Преимущества использования TurboMD:
#ЗагрузитьИзФайла, которая умеет подменять только чистый текст модуля, TurboMD способна на лету подменять экранные формы (диалоги) документов, справочников и отчетов! Вы можете передвинуть кнопку на форме во внешнем редакторе, сохранить изменения, и при следующем открытии формы в предприятии визуальное расположение элементов обновится.TurboMD и утилиты GComp. Утилита GComp позволяет полностью разобрать бинарный файл 1Cv7.MD на текстовые исходники. Полученный проект можно положить под систему контроля версий (например, Git), редактировать модули в современных IDE, а TurboMD обеспечит их мгновенную сборку и подмену в работающей сессии 1С.Если вы решили использовать для редактирования популярный внешний редактор Notepad++, то наверняка столкнетесь с проблемой нарушения кодировки при переносе кода через буфер обмена (Copy-Paste).
Выясним причину этой проблемы. Платформа 1С 7.7 является классическим non-Unicode (ANSI) приложением. При работе с буфером обмена операционная система Windows определяет текущую активную раскладку клавиатуры. Если в момент копирования текста (нажатия комбинации Ctrl+C) в редакторе Notepad++ у вас была включена английская раскладка клавиатуры, система попытается передать текст через кодовую страницу CP1252 (Western). При вставке в Конфигуратор 1С этот текст превратится в нечитаемый набор символов.
Разберем два надежных решения этой проблемы:
Возьмем за железное правило: перед копированием и перед вставкой русскоязычного кода всегда переключайте раскладку клавиатуры на русскую (RU) как в Notepad++, так и в Конфигураторе 1С.
Чтобы раз и навсегда избавить операционную систему от проблем неверной интерпретации буфера обмена для старых программ, выполним следующую системную настройку:
Win+R, введем regedit и нажмем Enter).
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
1252. По умолчанию его значение указывает на файл локали западной Европы (c_1252.nls).1252 и изменим его значение на:
c_1251.nls
После перезагрузки компьютера операционная система Windows будет автоматически транслировать западноевропейскую кодировку в стандартную кириллическую CP1251. Это полностью решает проблему «кракозябр» при копировании исходных кодов 1С 7.7 через любые внешние редакторы.
Мы подробно проанализировали различные варианты настройки рабочего места разработчика 1С 7.7. Подведем итоги:
#ЗагрузитьИзФайла и встроенного Конфигуратора, дополненного плагинами OpenConf и sciColorer.TurboMD совместно с декомпилятором GComp, что позволит вести разработку в современных редакторах (например, VS Code с плагином Language 1C (BSL)) и использовать преимущества систем контроля версий Git.