Встречается такой вопрос «зачем консоль кода, если есть конфигуратор». Цель данной статьи - пояснить этот момент и провести обзор подобных инструментов.
Использование
Суть консоли кода - это исполнение кода встроенного языка в режиме предприятия, использование зависит от функционала инструмента, обычно это:
- Какая-то простая разовая обработка (например, запуск фонового задания для отладки)
- Проверка, как работает тот иной код
- Замер/сравнение скорости выполнения
Еще есть обработка результата в консолях запросов, правила обмена в конвертации и подобное.
Естественно, чем более функциональна консоль кода, тем шире ее использование и комфортнее работа. Контекстная подсказка, подсветка позволяют делать более сложный код и совершать меньше ошибок.
Подавляющее большинство консолей работает через метод Выполнить() в котором нет возможности использовать более сложный код в виде процедур\функций. Полезна функция сохранения кода для дальнейшего использования.
Рассмотрим несколько примеров использования:
Пример №1, что быстрее СтрРазделить() или РазложитьСтрокуВМассивПодстрок из БСП 2.4.6.241
Строка = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30";
Для Сч = 1 По 10000 Цикл
Результат = СтрРазделить(Строка, ","); // Платформа
//Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, ","); // БСП
КонецЦикла;
Результат: 0,15 с, БСП за 3,5 с (более чем в 20 раз)
Пример №2, объект в XML виде
Ссылка = Справочники.Валюты.НайтиПоНаименованию("EUR");
Запись_XML = Новый ЗаписьXML;
Запись_XML.УстановитьСтроку();
Запись_XML.ЗаписатьОбъявлениеXML();
ЗаписатьXML(Запись_XML, Ссылка.ПолучитьОбъект());
Результат = Запись_XML.Закрыть();
<?xml version="1.0"?>
<CatalogObject.Валюты>
<Ref>22dd80d2-cc2f-11e1-9e01-080027007001</Ref>
<DeletionMark>false</DeletionMark>
<Code>978</Code>
<Description>EUR</Description>
<ЗагружаетсяИзИнтернета>true</ЗагружаетсяИзИнтернета>
<НаименованиеПолное>Евро</НаименованиеПолное>
<Наценка>0</Наценка>
<ОсновнаяВалюта>00000000-0000-0000-0000-000000000000</ОсновнаяВалюта>
<ПараметрыПрописи>евро, евро, евро, м, цент, цента, центов, м, 2 знака</ПараметрыПрописи>
<ФормулаРасчетаКурса/>
<СпособУстановкиКурса>ЗагрузкаИзИнтернета</СпособУстановкиКурса>
</CatalogObject.Валюты>
Пример №3, проверка как работает XMLСтрока для перечисления
Результат = XMLСтрока(Перечисления.ВидыНазначенияДатЗапрета.ДляВсехИнформационныхБаз);
Результат = "ДляВсехИнформационныхБаз"
Обзор консолей
Инструменты разработчика автор Сергей Старых (tormozit)
Очень функциональный инструмент: удобно писать "много" кода, удобно почти как в конфигураторе, есть возможность отлаживать код во внешней обработке.
Удобна возможность исследования результата
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Метаданные.Справочники._ДемоНоменклатура);
Результат = ПолучитьСтруктуруХраненияБазыДанных(МассивМетаданных);
Результат
Достоинства:
- Контекстная подсказка, вставка ссылки на объект в код
- Синтаксис-помощник Ctrl+F1 - по текущему слову выдаст варианты справки
Ctrl+Shift+Space открывает подсказку по параметру метода - Подсветка кода
- Заполнения параметров входа и выхода путем анализа текста
- Отладка во внешней обработке
- Входные параметры, исследование результата
- Анализ технологического журнала по исполняемому коду
- Замер времени выполнение и др.
Недостатки:
- Обычные формы, сложности с запуском в новых конфигурациях (установка компонент)
Консоль кода для управляемых форм (новинка!) автор salexdv
Достаточно простая, интересна тем что выводит на новый уровень работу с кодом в режиме 1С Предприятие в управляемой форме
Пример продвинутого механизма кода работает быстро и хорошо как современных IDE, можно брать и добавлять себе улучшать ее в общем бомба!
- Подсветка синтаксиса языка 1С
- Автокоммит глобальных функций и др.
- Подсказка параметров конструкторов и методов
- Сниппеты вставка готовых блоков
- Светлая/темная темы
Выложена на GitHub по лицензии MIT, основана на VSCode (Monaco) требует платформу 8.3.14 и выше (webkit)
Исполнение кода с функциями и процедурами в пользовательском режиме автор: dvsidelnikov
Простая, интересна только тем, что реализована работа с функциями и процедурами
Транслятор запросов 1С в SQL автор Юрий Пермитин
Можно посмотреть планы запросов для кода (в ИР тоже такое есть), но здесь проще и описано в статье.
Например, можно посмотреть как на уровне СУБД работает НайтиПоНаименованию или пересчет итогов
РезультатПоиска = Справочники.Пользователи.НайтиПоНаименованию("Орлов Александр Владимирович");
---------------------------------------------------------------------------------------------------------------------------------
exec sp_executesql N'SELECT
T1._IDRRef
FROM dbo._Reference295 T1
WHERE ((T1._Fld1551 = @P1)) AND (T1._Description LIKE @P2 ESCAPE ''\'')',N'@P1 numeric(10),@P2 nvarchar(4000)',0,N'Орлов Александр Владимирович%'
exec sp_executesql N'SELECT
T1._IDRRef,
T1._Description
FROM dbo._Reference295 T1
WHERE ((T1._Fld1551 = @P1)) AND (T1._IDRRef = @P2)',N'@P1 numeric(10),@P2 varbinary(16)',0,0x92F10050568B35AC11E4F4BA84D78DB2
Другие, которые хотелось бы упомянуть, но детально не рассматривались:
Консоль Программиста 8.3. Управляемые формы, тонкий/толстый клиент автор Леха Безносиков (рейтинг ~200+)
Консоль Внедренца v.3.6.2 (vnedr.cf) автор Евгений Крапивин (рейтинг ~150+)
Консоль выполнения кода в 1С (обычные и управляемые формы) автор Denr83
Консоль кода для УФ автор Евгения Карук
Универсальная обработка - Консоль кода 1С автор: Александр Чепур (Обычные формы, не обновлялась с 10.05.12)
Exec - Выполнение кода, консоль запросов и не только! автор Александр Пыров
PowerTools - коммерческий инструмент программиста для администрирования конфигураций, который включает обработку результата
Универсальные инструменты 1С автор cprit
Статья Групповая обработка (Управляемая консоль отчетов) автор: Люлюк Евгений
Статья Обработка кодом результата запроса в Консоли запросов 9000 автор: Александр Кузнецов
Рассматривались только те инструменты, где есть консоль кода, инструмент популярен, чем-то интересен.