В процессе разработки на платформе 1С:Предприятие часто возникает необходимость сохранить интересные фрагменты кода, примеры использования функций БСП или заготовки для будущих алгоритмов. Однако простое размещение такого «справочного» кода в модулях приводит к тому, что встроенный синтаксический контроль начинает выдавать массу ошибок. Это мешает сохранению конфигурации и запуску отладки. Разберем детально, как можно организовать хранение программного кода так, чтобы он не мешал основной разработке и не проверялся системой на ошибки.
Самый простой и очевидный способ — это превратить исполняемый код в комментарии. Платформа 1С игнорирует любой текст после двойного слеша. Для удобства работы с большими блоками текста в конфигураторе предусмотрены горячие клавиши: Ctrl + Num / для комментирования выделенных строк и Ctrl + Shift + Num / для раскомментирования.
Чтобы справочный код не мешал визуальному восприятию основного алгоритма, проанализируем использование механизма #Область. Мы можем обернуть закомментированный код в именованную область, что позволит «свернуть» его в одну строку:
#Область ПримерыРаботыСЗапросами
// ТекстЗапроса = Новый Запрос;
// ТекстЗапроса.Текст = "ВЫБРАТЬ...";
// Результат = ТекстЗапроса.Выполнить();
#КонецОбласти
Этот метод хорош для временных заметок, но если таких примеров становится много, модуль становится перегруженным и трудночитаемым. К тому же, согласно стандартам разработки 1С, хранение закомментированного мусора в рабочих модулях крайне не рекомендуется.
Если нам необходимо хранить большие объемы кода внутри конкретной обработки или конфигурации, мы можем использовать Макеты. Рассмотрим этот способ подробнее, так как он является наиболее технологичным для создания «баз знаний» внутри метаданных.
Выясним причину, по которой этот метод удобен для программиста: мы можем не только хранить код, но и программно его считывать для динамического выполнения. Например, мы можем использовать объект ТекстовыйДокумент, чтобы достать данные из макета:
МакетПримера = ЭтотОбъект.ПолучитьМакет("МойСправочныйКод");
ТекстПримера = МакетПримера.ПолучитьТекст();
// Теперь переменная ТекстПримера содержит наш код, который можно скопировать
// или запустить через Выполнить(ТекстПримера);
Для хранения часто используемых конструкций кода (сниппетов) идеально подходит механизм Шаблоны текста (файлы с расширением .st). Проанализируем ситуацию: когда нам нужно быстро вставить типовой блок кода, мы просто вводим краткое сокращение и нажимаем Ctrl + Q.
Чтобы создать свою библиотеку примеров, выполним следующие шаги:
Преимущество этого метода в том, что шаблоны хранятся отдельно от конфигурации. Они доступны во всех базах, которые вы открываете в своем Конфигураторе, и никогда не вызывают ошибок синтаксиса, пока вы не вставите их непосредственно в модуль.
Рассмотрим еще один технический прием — помещение кода внутрь строковой переменной. Система воспринимает содержимое между кавычками просто как текст. Если код объемный и содержит много кавычек, воспользуемся конструктором строк или символом вертикальной черты | для многострочных литералов.
ТекстПрограммы =
"|Процедура ДинамическийКод()
| Сообщить(""Это сообщение не проверяется при сохранении модуля"");
|КонецПроцедуры";
Хотя этот метод позволяет «спрятать» код от конфигуратора, он крайне неудобен для редактирования. Мы рекомендуем использовать его только в исключительных случаях, например, при формировании текстов запросов или динамических алгоритмов.
Проанализируем современные подходы к организации базы знаний программиста 1С. Часто хранить мусор в рабочей конфигурации — плохая идея. Опытные разработчики используют внешние инструменты:
FastCode). Это профессиональный путь для тех, кто хочет иметь мгновенный доступ к библиотеке решений прямо в окне редактирования кода.Мы рассмотрели различные способы обхода синтаксического контроля. Подведем итог: если вам нужно быстро сделать заметку «на полях», используйте #Область и комментарии. Если вы формируете структурированную библиотеку примеров внутри проекта — используйте Макеты типа Текстовый документ. Для повседневной работы и переиспользования готовых решений лучше всего подходят Шаблоны текста (.st) или специализированные внешние редакторы.
Помните, что чистота кода в рабочем модуле — залог отсутствия ошибок при обновлении и коллективной разработке. Старайтесь не оставлять неиспользуемые фрагменты в основных модулях системы, вынося их во внешние хранилища.