Новая разметка на дорогах 1С

Аватар пользователя Admin
Автор: Никита Шилин
 
С момента официального выхода платформы 8.3 прошло уже некоторое количество времени и пришло время поговорить о вкусностях новой среды для разработчика.
Из всех новшеств что появились хочется выделить одно "особенное", а именно области.
Что это такое и с чем едят — сейчас расскажу. Как Вы помните, в параметрах текстов модулей в конфигураторе есть закладка "Группировка":
 
Если галочки стоят, конфигуратор начинает группировать процедуры, функции, комментарии, циклы, условия. Это значительно увеличивает читабельность кода, а так же позволяет быстро ориентироваться и перемещаться от одной процедуры к другой:
 
Все было бы хорошо, если бы не было так плохо... Количество кода растет, процедуры начинают переваливать за второй десяток, мешаются с функциями, и, уже, как не скрывай-раскрывай группировки — в коде становится сложно ориентироваться. Все, наверняка, сталкивались с таким явлением, когда код легче написать с нуля, чем править уже существующую ветку, которая пошла не тем путем и перестала решать требуемую задачу. Такие ветки комментируются чтобы не мешать и на тот случай, если понадобится подсмотреть алгоритм "почти удачных действий". В последней серьезной разработке я у себя насчитал достаточно таких кусков, которые мешаются поперек кода.
 
Теперь на помощь разработчику придут "волшебные" области, которые были добавлены в платформе 8.3.
Чтобы включить новую возможность — откроем любую базу под новой версией платформы 8.3.3.641 и перейдем к настройкам текстов модулей:
 
Обратите внимание на новые строки. Поставим галочки и пойдем пробовать в коде.
Создадим простенький запрос с обработкой результата, абсолютно бездумно накидаем туда того, что под руку попадется — исключительно для объема кода:
 
Мы видим три "этапа" нашей процедуры - создание и описание запроса, обработка запроса, вызов последующих процедур, необходимых для дальнейшей работы алгоритма.
Пожалуй, стоит немного преобразовать код, с использованием нового метода...
 
Синтакис самого метода выглядит следующим образом:
#Область <ИмяОбласти>
<Наш код>
#КонецОбласти
Теперь совсем другое дело:
 
Стоит обратить внимание на некоторые аспекты: во-первых, область метода не добавляет отступов для содержимого; во-вторых, область не может закрывать собой часть другой области - только целиковое поглощение. Поясняю — такая ситуация недопустима:
 
Ошибки не будет, но и работать такая область  не будет.
 
А теперь, интересный эксперимент - удалим КонецПроцедуры и добавим его обратно...
Область сначала поймает свои границы и добавит возможность сворачивания,  процедура, соответственно потеряет, а после того как мы вернем КонецПроцедуры на место, процедура не вернет себе возможность сворачивания, а область можно будет свернуть прямо с остатками процедуры, таким образом процедура будет иметь начало и не иметь конца, при этом проверка на синтаксис будет пройдена... Реальной ошибки нет, а визуальная — есть:
 
Еще один нюанс на картинке выше - имя области должно быть написано одним словом, иначе будет следующее:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(47,10)}: Ошибка в операторе препроцессора
#Область <<?>>Неудачные Попытки (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(51,2)}: Пропущен оператор препроцессора Область (Region)
#<<?>>КонецОбласти (Проверка: Толстый клиент (обычное приложение)).
Идем дальше: область ведет себя как процедура, а именно - если написать две и более строчек комментариев перед началом области, их так же можно будет свернуть:
 
Следующий интересный момент: если написать слово #Область, или начать писать комментарии без отступа, при сворачивании первое слово будет удалено... не известно куда.
 
Процедуры так же можно определять в области, что станет незаменимым инструментом в крупных конфигурациях:
 
 
Области можно вкладывать друг в друга, опять же, не нарушая границы пересечения.
 
Вот пожалуй и все хитрости с областями. Советую всем поставить свеженькую платформу и начать активно использовать новые механизмы!
 

TEXT.RU - 100.00%