Как открыть консоль кода в 1с
Встречается такой вопрос «зачем консоль кода, если есть конфигуратор». Цель данной статьи - пояснить этот момент и провести обзор подобных инструментов.
Использование
Суть консоли кода - это исполнение кода встроенного языка в режиме предприятия, использование зависит от функционала инструмента, обычно это:
- Какая-то простая разовая обработка (например, запуск фонового задания для отладки)
- Проверка, как работает тот иной код
- Замер/сравнение скорости выполнения
Еще есть обработка результата в консолях запросов, правила обмена в конвертации и подобное.
Естественно, чем более функциональна консоль кода, тем шире ее использование и комфортнее работа. Контекстная подсказка, подсветка позволяют делать более сложный код и совершать меньше ошибок.
Подавляющее большинство консолей работает через метод Выполнить() в котором нет возможности использовать более сложный код в виде процедур\функций. Полезна функция сохранения кода для дальнейшего использования.
Рассмотрим несколько примеров использования:
Пример №1, что быстрее СтрРазделить() или РазложитьСтрокуВМассивПодстрок из БСП 2.4.6.241
Результат: 0,15 с, БСП за 3,5 с (более чем в 20 раз)
Пример №2, объект в XML виде
Пример №3, проверка как работает XMLСтрока для перечисления
Обзор консолей
Инструменты разработчика автор Сергей Старых (tormozit)
Очень функциональный инструмент: удобно писать "много" кода, удобно почти как в конфигураторе, есть возможность отлаживать код во внешней обработке.
Удобна возможность исследования результата
- Обычные формы, сложности с запуском в новых конфигурациях (установка компонент)
Достаточно простая, интересна тем что выводит на новый уровень работу с кодом в режиме 1С Предприятие в управляемой форме
Пример продвинутого механизма кода работает быстро и хорошо как современных IDE, можно брать и добавлять себе улучшать ее в общем бомба!
- Подсветка синтаксиса языка 1С
- Автокоммит глобальных функций и др.
- Подсказка параметров конструкторов и методов
- Сниппеты вставка готовых блоков
- Светлая/темная темы
Простая, интересна только тем, что реализована работа с функциями и процедурами
Транслятор запросов 1С в SQL автор Юрий Пермитин
Можно посмотреть планы запросов для кода (в ИР тоже такое есть), но здесь проще и описано в статье.
Например, можно посмотреть как на уровне СУБД работает НайтиПоНаименованию или пересчет итогов
Другие, которые хотелось бы упомянуть, но детально не рассматривались:
Универсальная обработка - Консоль кода 1С автор: Александр Чепур ( Обычные формы, не обновлялась с 10.05.12 )
PowerTools - коммерческий инструмент программиста для администрирования конфигураций, который включает обработку результата
Рассматривались только те инструменты, где есть консоль кода, инструмент популярен, чем-то интересен.
Специальные предложения
Какую консоль кода используете?
1. Инструменты разработчика, автор Сергей Старых (52.21%, 71 голосов) 2. Консоль Программиста 8.3. Управляемые формы, тонкий/толстый клиент, автор Алексей Безносиков (2.21%, 3 голосов) 3. Консоль кода для УФ, автор Евгения Карук (1.47%, 2 голосов) 5. Не использую, очень редко (конфигуратора достаточно) (31.62%, 43 голосов) Странно, что нет Снегопата. На старте был топовый инструмент. Пусть он и не консольный вариант, но функционал тот же, что и у вышеперечисленных. Хоть он и отстал от актуальных релизов (пропал на несколько лет). Но вроде возродился (1) Снегопат работает только в Конфигурате, а указанные консоли в режиме Предприятия. Дополню.Отличительная особенность консоли кода в PowerTools в том, что код можно выполнить в многопоточном режиме, конечно при наличии в конфигурации БСП и клиент-серверном режиме работы. Пример №1, что быстрее СтрРазделить() или РазложитьСтрокуВМассивПодстрок из БСП
Прочитайте описание из БСП, пожалуйста)
Администрирование->Обслуживание->Групповое изменение реквизитов->Выполнить произвольный алгоритм (14) Там есть внешние компоненты сделанные по технологии Native, поставляемые без исходного кода. Они просто молча выполнят свои функции и даже не сообщат пользователю об этом. (15) А потом начнутся грабли) Или, они начнутся прямо в процессе, или даже при запуске. Нафиг-нафиг все эти мутные компоненты, тем более что - в одном месте есть, в другом нет, в третьем админ на сервер ставить не даст. Есть стандартный функционал платформы, и хватит. Спокойней будет) (23) Я под "там" имел ввиду "Администрирование->Обслуживание->Групповое изменение реквизитов->Выполнить произвольный алгоритм ". Этим ты тоже не пользуешься? (25) Этим иногда да, а бывает, и свои обработки делаю или своей универсалкой под УФ пользуюсь, по ситуации. Я про всякие dll говорил. (14) >Групповое изменение реквизитов->Выполнить произвольный алгоритм
Это лишь очень частный случай задач, решаемых консолью кода. Похоже ты невнимательно читал статью. (20) Я и не утверждал что штатная консоль полностью заменяет все перечисленные в статье консоли кода и даже описанный в ней транслятор запросов. С чего вы это взяли? (26) Комментарий был для читателей статьи которым рассказали про всевозможные консоли кода но почему-то автор не упомянул что есть штатная консоль не требующая устанавливать в системе чужие обработки код которых еще придется проверять, да еще и содержащие плагины которые имеют закрытый код который простому 1с-нику вообще не проверить.
Для достаточно большого количества задач хватит простой штатной консоли кода, но далеко не все про нее знают.
(28) Таким образом ты признаешь, что считаешь "Групповое изменение реквизитов->Выполнить произвольный алгоритм " консолью кода? Если да, то я снова не согласен с таким утверждением, как и написал в (20). Считаю, что консоль кода должна
1. независимо открываться
2. позволять выполнять свой код ровно один раз без извращений
3. сохранять/загружать код
(0) Предлагаю автору статьи обозначить эти границы рассматриваемого класса инструментов.
(29) "позволять выполнять свой код ровно один раз без извращений":) (30) Не пользуетесь консолями кода, пожалуйста. 30% аудитории поступают также (29) Обозначено, тема консоли кода
КД2, Групповая обработка, Обработка результата в консолях и другие механизмы где кодом задается поведение, упомянуты не более
Так дойдем что "Открыл консоль запроса создал запрос с параметром типа выражение (код) и там прописал" (15) Об этом и речь, наличие вредоносного кода проверить нельзя. Молча выполнит свои функции и даже не сообщит пользователю об этом.
Народная мудрость: "Бойтесь Данайцев дары приносящих" :) (16) Я писал про твое "Администрирование->Обслуживание->Групповое изменение реквизитов->Выполнить произвольный алгоритм". Как думаешь, сколько там внешних компонент? Если 0, то сообщи название конфигурации. (17) То есть вы не понимаете разницы между компонентами которые 1с штатно включает в систему и теми которые можно скачать на сайтах от авторов которые являются свободными художниками?
Слово на букву Р. :) (18) Компания Microsoft и цифровая подпись - это свободный художник? ВК с исходным кодом от свободного художника опаснее чем ВК без исходного кода и без цифровой подписи от наемного художника из довольно большой компании 1С?
Еще раз, слово на букву Р - Репутация.
Если мы покупаем продукт 1с то мы до определенной степени доверяем этой фирме и ожидаем того что она дорожит своей репутацией и не будет намеренно подсовывать нам вредоносный код.
Кроме того раз мы ведем речь о доработках 1с значит продукт 1с мы уже купили, установили и речь идет не об альтернативе а о дополнении системы новыми дырами в безопасности.
То есть при установке 1с допустим 30 скрытых дыр в безопасности, а после установки дополнительных компонент уже 80, причем эти дополнительные 50 получены от неизвестных нам источников с неизвестной репутацией, которые подсунули нам свой код бесплатно с неизвестными мотивами, поэтому сравнение с компонентами 1с где-то далеко за гранью логики и здравого смысла.
Насколько я в курсе технология Native не требует обязательных цифровых подписей Майкрософта, можно самому разработать любые компоненты и подключить к 1с, я ведь не ошибаюсь?
По поводу того есть ли на конкретных компонентах используемых в разработках из статьи какие-то подписи, тем более подписи Майкрософт, вопрос обсуждаемый, это позволит в некоторой степени повысить доверие к этим компонентам, но опять же не даст 100% гарантии их чистоты, насколько я понял цена вопроса фиктивное юридическое лицо или ИП + 99$.
Вы что пытаетесь доказать что можно ставить любые компоненты из сети и ничего страшного не случится, типа раз стоит 1с хуже уже не будет?
Насколько я в курсе технология Native не требует обязательных цифровых подписей Майкрософта, можно самому разработать любые компоненты и подключить к 1с, я ведь не ошибаюсь?Насколько я понимаю, Сергей тут говорит о внешних компонентах, выполненных по технологии COM, которые он использует в своей разработке. Эти компоненты сделаны Microsoft и имеют подписи. На Инфостарте спор об использовании внешних компонент идет с незапамятных времен, всегда есть и сторонники, и противники. Все эти сторонние разработки вроде как и не нужны, но только ровно до того момента, как вы не сталкиваетесь с какой-нибудь нестандартной задачей, а такие задачи сплошь и рядом. Попробуйте на 8.1/8.2 поработать с регулярными выражениями или получить MD5/SHA256, ну никак тут без сторонних компонент. Если бы пару-тройку лет назад вам бы понадобилось печатать DataMatrix или Aztec, вы бы тоже уперлись во внешние компоненты, которых нет у 1С. Сейчас ситуация меняется, но всё равно в некоторых задачах без этого не обойтись. А буква Р, как вы выразились, тоже частенько подводит. За примером далеко ходить не надо. Тот же Атол, компоненты которого использует 1С не раз ронял эту самую программу. Я довольно часто работаю с разными компонентами, иногда сам пишу, но не разу не слышал о каких-то прям дырах. Да ошибки встречаются у всех, от этого не застрахована ни 1С, ни Microsoft, ни сторонний Иван Иванович, но, чтобы прямо дыры. Поделитесь такими случаями, если можно.
(33) Ну самый наглядный пример: Фирма 1с внедрила специальный механизм который предотвращает исправление выгруженных файлов при обмене с банк-клиентом, причиной стали вирусы которые отправляли денежки на левые реквизиты.
То есть идет целенаправленная атака на пользователей 1с, а какой самый лучший способ подкинуть вирусы именно пользователям 1с? Естественно компоненты в обработках на публичных сайтах.
Насчет надежности цифровых подписей я лучше буду слушать специалистов соответствующего направления:
Почему нельзя безусловно доверять файлам, подписанным цифровыми сертификатами
Вы не слышали что такое троянский конь и какие дыры в безопасности можно при помощи него добавить? Вы не слышали что такое троянский конь и какие дыры в безопасности можно при помощи него добавить?
Нет я не слышал об этом применительно к 1С, поэтому и попросил поделиться конкретным случаем/примером.
(35) Этого примера достаточно?
Нет я не слышал об этом применительно к 1С, поэтому и попросил поделиться конкретным случаем/примером.Там обработка в ресурсах которой так же как и вы храните компоненту, хранится троянец.
Хранится он в виде компоненты или другого вида бинарника считаю в принципе неважным.
Вы же не утверждаете что в компоненту невозможно добавить вирус? (38) вне мира 1С все строится на множестве компонент и ничего. Доверяешь конечному поставщику.. все. (39) вне мира 1с за исполняемый файл неизвестного автора распространяемый бесплатно, скачанный из интернета и запущенный в корпоративной сети системные администраторы из вас барбекю сделают и судья их оправдает. :) (42) Почему не известного автора, ИР известны, Сергей Старых тоже
(43) А вот об этом я и говорю, репутацию проверять нужно.
Но при этом учитывать что и у мошенников тоже бывают долгоиграющие проекты.
А насчет доверия, есть специфическая классификация пользователей:
ламер, юзер, программист, хакер.
Вариант "Доверяешь конечному поставщику.. все." относится к конкретной категории данной классификации :)
Вы не подумайте, что я прямо топлю за то, чтобы везде где можно и где нельзя использовать сторонние внешние компонентыНу тогда консенсус :) Я как раз об этом и говорил.
Считаю что первым делом скачивая обработки из открытых источников нужно проверять их код на наличие закладок, хотя бы просмотреть по диагонали. Наличие вложенных файлов ресурсов должно сильно насторожить , нужно проверить нет ли среди них исполняемых файлов, при наличии таких серьезно задуматься насколько все это нужно.
Если есть исполняемые файлы проверить источники, их репутацию, если возможно проверить контрольные суммы файлов и подписи. А лучше привлечь системных админов чтобы они обратили особое внимание и провели свои проверки.
А вообще, после появления Выполнить/Вычислить всё это стало неинтересно делать. Особенно под УФ, где "добрые" создатели платформы так и не озаботились воссоздать функционал расширения кода и запроса в текстовом документе. И все извраты на эту тему - лишь с применением внешних костылей.
Интересны ещё были попытки расширяться засчёт js-скриптов в хтмл-окнах.
Я консоль кода ещё в 1999-м на 7.7 штатными средствами сделал (хотя, окно редактирования, конечно, тоже было плоским текстом).
Пользуюсь Консолью Кода Сергея Старых. Отличная обработка. Единственное что не хватает.
То как например уже реализовано с запросом, отложенная отладка. Отлаживаешь запрос, запрос сохраняется со свеми заполненными параметрами и временными таблицами. Было бы супер если выделил код, обработка запомнила текст, и заполнила все текущие переменные.
Консоль кода для 1С 8.3 (Управляемые и обычные формы)
Для работы внутри 1С требуется версия платформы не ниже 8.3.14.1565
- Подсветка синтаксиса языка 1С
- Подсветка языка запросов
- Автокомплит для глобальных перечислений и функций
- Автокомплит для метаданных (Справочники, Документы и т.п.)
- Автокомплит для объектов метаданных (СправочникСсылка, ДокументОбъект и т.п.)
- Подсказка параметров конструкторов и методов
- Подсказка для типов
- Вставка готовых блоков кода (сниппеты)
- Вызов конструктора запроса и конструктора форматной строки
- Загрузка пользовательских функций и сниппетов
- Выделение строки, при выполнении которой произошла ошибка
- Сворачивание циклов, условий и текстов запросов
- Всплывающие подсказки для глобальных функций, перечислений и классов
- Подсказки через точку для реквизитов типа справочники/документы
- Подсказки через точку для объектов типа ТаблицаЗначений/Массив/РезультатЗапроса/ДвоичныеДанные и др., в том числе для объектов, полученных через методы других объектов.
- Подсказки для источников и полей в режиме запроса
- Для запуска в браузере достаточно открыть index.html из каталога src, либо воспользоваться ссылкой
- Для запуска в 1С можно использовать обработку console.epf, выкладываемую в релизах или сделать свою.
- Редактор используется на сайте Paste1C.
Функции для взаимодействия с 1С:Предприятием
Работа с текстом (кодом)
Функция | Описание |
---|---|
setText | Устанавливает переданный текст в текущую или определенную позицию |
updateText | Полностью заменяет весь текст редактора, игнорируя при этом режим Только просмотр |
setContent | Устанавливает текст редактора. Игнорирует режим Только просмотр и не генерирует событие EVENT_CONTENT_CHANGED |
getText | Возвращает весь текст из окна редактора |
eraseText | Удаляет весь текст редактора |
selectedText | Получает или заменяет выделенный текст |
getSelection | Возвращает selection, аналог GetTextSelectionBounds |
setSelectionByLength | Устанавливает выделение, аналог первой сигнатуры SetTextSelectionBounds |
setSelection | Устанавливает выделение, аналог второй сигнатуры SetTextSelectionBounds |
getLineCount | Возвращает количество строк |
getLineContent | Возвращает содержимое строки по её номеру, аналог GetLine |
setLineContent | Устанавливает содержимое строки по её номеру, аналог ReplaceLine |
getCurrentLineContent | Возвращает содержимое текущей строки |
getCurrentLine | Возвращает номер текущей строки |
getCurrentColumn | Возвращает номер текущей колонки |
getQuery | Определяет текст запроса в текущей позиции и возвращает его вместе с областью текста |
getFormatString | Определяет текст форматной строки в текущей позиции |
findText | Возвращает номер строки, в которой находится заданный текст |
addComment | Добавляет комментарий к текущему блоку кода |
removeComment | Удаляет комментарий у текущего блока |
addWordWrap | Добавляет перенос строки к текущему блоку |
removeWordWrap | Удаляет перенос строки у текущего блока |
insertLine | Вставляет текст в строку с указанным номером |
addLine | Добавляет новую строку с указанным текстом |
getPositionOffset | Возвращает координаты текущей позиции курсора |
jumpToBracket | Переход к парной скобке CTRL+[] |
selectToBracket | Выделяет скобки и текст между ними SHIFT+ALT+B |
formatDocument | Форматирование выделенного фрагмента кода или всего кода ALT+SHIFT+F |
insertSnippet | Вставляет переданный сниппет в текущую позицию редактора |
revealDefinition | Переход к определению переменной, фунции или поля запроса F12 |
peekDefinition | Быстрый просмотр определения переменной, фунции или поля запроса CTRL+F12 |
Управление режимом работы / настройками
Функция | Описание |
---|---|
init | Инициализация редактора с передачей версии платформы |
setLanguageMode | Переключение режимов редактора (встроенный язык, язык запросов и т.п.)) |
setTheme | Установка темы редактора bsl-white , bsl-white-query , bsl-dark , bsl-dark-query |
setReadOnly | Устанавливает/снимает режим Только просмотр |
getReadOnly | Возвращает значение режима Только просмотр |
switchLang | Переключает язык подсказок с английского на русский и обратно |
enableQuickSuggestions | Включает/выключает режим быстрых подсказок |
minimap | Включает/выключает отображение карты кода |
enableModificationEvent* | Включает/выключает генерацию события, возникающего при изменении содержимого редактора (устарела) |
enableSuggestActivationEvent* | Включает/выключает генерацию события, возникающего активации пункта в списке подсказок (устарела) |
enableBeforeShowSuggestEvent* | Включает/выключает генерацию события, возникающего перед появлением списка подсказок (устарела) |
enableSelectSuggestEvent* | Включает/выключает генерацию события, возникающего при выборе пункта из списка подсказок (устарела) |
enableBeforeHoverEvent* | Включает/выключает генерацию события, возникающего перед появлением всплывающей подсказки для слова (устарела) |
enableBeforeSignatureEvent* | Включает/выключает генерацию события, возникающего перед появлением подсказки по вызову процедуры/метода (устарела) |
switchQueryMode* | Переключение между режимом запроса и режимом редактирования кода (устарела) |
switchDCSMode* | Переключение в режим СКД и обратно (устарела) |
switchXMLMode* | Переключение в режим просмотра XML с подсветкой и обратно (устарела) |
compare | Включает/выключает режим сравнения текстов |
nextDiff | Переход с следующему изменению в режиме сравнения |
previousDiff | Переход с предыдущему изменению в режиме сравнения |
getVarsNames | Возвращает имена всех объявленных в коде переменных |
disableContextMenu | Отключает показ контекстного меню |
showLineNumbers | Включает отображение номеров строк в редакторе |
hideLineNumbers | Отключает отображение номеров строк в редакторе |
hideScrollX | Скрывает стандартную горизонтальную полосу прокрутки |
hideScrollY | Скрывает стандартную вертикальную полосу прокрутки |
openSearchWidget | Открывает окно поиска |
closeSearchWidget | Закрывает окно поиска |
nextMatch | Переход к следующему совпадению в поиске |
previousMatch | Переход к предыдущему совпадению в поиске |
setFontSize | Установка размера шрифта |
setFontFamily | Установка семейства шрифтов |
setFontWeight | Установка насыщенности (толщины) шрифта |
setLineHeight | Установка высоты строки |
showStatusBar | Включает отображение строки состояния в нижней части редактора |
hideStatusBar | Отключает отображение строки состояния |
renderWhitespace | Включает/отключает отображение пробелов и табуляций |
hasTextFocus | Возвращает признак активности фокуса |
setOption | Установка опциональных настроек редактора |
getOption | Получение опциональных настроек редактора |
disableKeyBinding | Отключает любое стандартное сочетание клавиш редактора |
enableKeyBinding | Включает обратно сочетание |
saveViewState | Возвращает JSON-строку с текущими настройками (положение курсора и прокрутки, а также свернутые блоки) |
restoreViewState | Восстанавливает настройки. В качестве аргумента принимает JSON-строку, полученну ранее через saveViewState |
setOriginalText | Устанавливает или сбрасывает оригинальный текст, на основании которого строится подсветка изменений |
getOriginalText | Возвращает текст, установленный ранее функцией setOriginalText |
getCurrentLanguageId | Возвращает идентификатор текущего языка ( bsl , bsl_query , dcs_query , xml ) |
isQueryMode | Возвращает true , если редактор находится в режиме редактирования запроса и false в любом другом режиме |
isDCSMode | Возвращает true , если редактор находится в режиме СКД и false в любом другом случае |
Функция | Описание |
---|---|
updateMetadata | Обновляет через JSON структуру метаданных (Справочники/Документы/пр.) |
clearMetadata | Очищает структуру метаданных |
updateSnippets | Обновляет пользовательские сниппеты |
updateCustomFunctions | Обновляет пользовательские функции |
parseCommonModule | Загружает структуру общего модуля |
parseMetadataModule | Загружает структуру модуля менеджера или модуля объекта |
setCustomHovers | Обновляет пользовательские подсказки, показываемые при наведении |
setCustomSignatures | Обновляет пользовательские подсказки по вызову процедуры/метода |
setCustomCodeLenses | Загружает подсказки для Code Lens |
addContextMenuItem | Регистрирует пользовательский пункт контекстного меню и связанное с ним событие |
markError | Индикация ошибки в указанной строке |
triggerSuggestions | Принудительный вызов подсказок |
triggerHovers | Принудительный вызов всплывающей подсказки для текущего слов |
triggerSigHelp | Принудительный вызов подсказки по вызову процедуры/метода |
showCustomSuggestions | Показ пользовательских подсказок |
showPreviousCustomSuggestions | Вывод списка пользовательских подсказок, ранее показанных через showCustomSuggestions |
hideSuggestionsList | Скрывает текущий список подсказок |
hideHoverList | Скрывает активную всплывающую подсказку для слова |
hideSignatureList | Скрывает активную всплывающую подсказку по вызову процедуры/метода |
addBookmark | Создание закладки в строке с указанным номером |
removeBookmark | Удаление закладки из строки с указанным номером |
goNextBookmark | Переход к следующей закладке |
goPreviousBookmark | Переход к предыдущей закладке |
getBookmarks | Возвращает массив с номерами строк, в которых установлены закладки |
removeAllBookmarks | Удаляет все закладки |
setMarkers | Задает маркеры выделения |
getMarkers | Возвращает список установленных маркеров |
goNextMarker | Переход к следующему маркеру |
goPreviousMarker | Переход к предыдущему маркеру |
setActiveSuggestLabel | Устанавливает заголовок активного пункта списка подсказок |
setActiveSuggestDetail | Устанавливает подробное описание активного пункта списка подсказок |
revealLineInCenter | Переход к строке по её номеру и позиционирование по центру экрана |
goToFuncDefinition | Переход к определению процедуры/функции по имени |
События, генерируемые редактором для 1С:Предприятия
Событие | Описание |
---|---|
EVENT_QUERY_CONSTRUCT | При выборе пункта меню "Конструктор запросов". Возвращает текст и позицию запроса |
EVENT_FORMAT_CONSTRUCT | При выборе пункта меню "Конструктор форматной строки". Возвращает текст и позицию фор.строки |
EVENT_CONTENT_CHANGED ] | При любом изменении содержимого редактора (подробнее) |
EVENT_GET_METADATA | Генерируется при отсутствии метаданных. В параметрах передается имя запрашиваемых метаданных (подробнее) |
EVENT_XXX | При выборе пользовательского пункта меню. addContextMenuItem('Мой пункт', 'EVENT_MY') |
EVENT_ON_ACTIVATE_SUGGEST_ROW | При активации пункта в текущем списке подсказок (подробнее) |
EVENT_ON_DETAIL_SUGGEST_ROW | При активации подробного описания пункта в текущем списке подсказок (подробнее) |
EVENT_ON_SELECT_SUGGEST_ROW | При выборе пункта из списка подсказок (подробнее) |
EVENT_BEFORE_SHOW_SUGGEST | Перед появлением списка подсказок (подробнее) |
EVENT_BEFORE_HOVER | Перед появлением всплывающей подсказки для слова (подробнее) |
EVENT_BEFORE_SIGNATURE | Перед появлением всплывающей подсказки по вызову процедуры/метода (подробнее) |
EVENT_ON_LINK_CLICK | При клике по гиперссылке |
EVENT_KEY_BINDING_ХХХ | При нажатии отключенного сочетания клавиш (подробнее) |
EVENT_GET_DEFINITION | При переходе к определению (подробнее) |
Перед началом работы с редактором из 1С Предпрития желательно вызвать функцию инициализации и передать в нее текущую версию платформы. Пример:
Переключение режимов работы
По умолчанию редактор находится в режиме редактирования кода (bsl). Для переключения режимов работы редактора служит функция setLanguageMode Пример:
Все горячие клавиши описаны тут
- По умолчанию редактор не подстраивается под размеры окна. Это не ошибка, решение описано тут и тут
Продукты, использующие консоль:
- 8.3.15.1830
- 8.3.16.1148
- 8.3.17.1386
- 8.3.18.891
- 8.3.20.1549
- На платформах, выпущенных примерно до ноября 2020 года могут не работать горячие клавиши CTRL+SPACE, CTRL+C, CTRL+V и CTRL+Z и т.п.
- В веб-клиенте недоступно любое взаимодействие редактора и 1С. Можно попробовать только набор кода. Иногда для этого в браузере надо предварительно открыть данную ссылку
- В linux пока возможны проблемы с некоторым функционалом. Для сборки под linux необходимо использовать ветку webpack
- Из-за особенностей реализации подсказка через точку для реквизитов ссылочного типа работает только тогда, когда подсказываемый реквизит выбран через Enter
Выражаю благодарность команде 1c-syntax и их проекту для VSCode за подробное описание внутренних конструкций языка в JSON, а также за коллекцию сниппетов.
Конфигурации под управляемое приложение часто вполне работоспособны и в режиме обычного приложения. У таких конфигураций установлен основной режим запуска "Управляемое приложение". Однако вы можете запустить для них обычное приложение любым их вариантов
- указав параметр командной строки /RunModeOrdinaryApplication
- установив пользователю базы свойство "Режим запуска" = "Обычное приложение"
- из конфигуратора в "Сервис/Параметры" указать режим запуска "Управляемое приложение и обычное приложение" и запускать команду "Начало отладки"/"Толстый клиент (обычное приложение)"
- из управляемого приложения выполнив команду подсистемы "Запустить обычное приложение" или формы базовой внешней обработки портативного варианта инструментов
Как разобраться в большом количестве кнопок
В каждой немаленькой командной панели подсистемы, включая главную панель инструментов, первой кнопкой идет кнопка "Структура командной панели" (продвинутый аналог "Все действия" в управляемой форме). Она позволяет искать по описанию кнопок
Копирование и вставка ссылок
Во всех полях ввода и табличных полях подсистемы доступны команды Копирования (SHIFT+ALT+C) и Вставки (SHIFT+ALT+V) ссылки. Используется собственный формат буфера обмена Windows и поэтому копировать можно в приложении одной базы, а вставку выполнить в приложении другой базы с одноименным типом объектов. Глобальное меню управляемых форм
В непортативных вариантах во всех управляемых формах (не ограничиваясь подсистемой) сочетание клавиш CTRL+ALT+E вызывает глобальное контекстное меню подсистемы. Его состав определяется текущими ячейкой/полем/строкой/таблицей/табличным документом/формой. Подробно познакомиться с ним можно в статье.
Так например выглядит состав этого меню при вызове в таблице динамического списка:
Рассмотрим этот инструмент подробнее.
Авторство обработок не моё, я лишь объединил 2 наиболее удачные, на мой взгляд, консоли.
Описание консоли запросов 1С
Если Вас интересует, как пишутся запросы в системе 1С, рекомендую ознакомиться со статьей Описание языка запросов 1С и Описание конструктора запросов 1С.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Начнем рассмотрение консоли запросов с описания главной панели обработки:
В шапке консоли запросов можно увидеть время выполнения последнего запроса с точностью до миллисекунды, это позволяет сравнивать разные конструкции по производительности.
Первая группа кнопок в командной панели отвечает за сохранение текущих запросов во внешнем файле. Это очень удобно, Вы всегда сможете вернуться к написанию сложного запроса. Или же, например, хранить список типичных примеров тех или иных конструкций.
Далее идут кнопки, отвечающие за инициализацию запроса:
Позволяют установить текущие параметры для запроса.
В окне параметров запроса интересно следующее:
Также в верхней панели очень есть кнопка вызова настроек консоли запросов:
Где можно указать параметры автосохранения запросов и параметры выполнения запроса.
Конструктор запроса 1С 8.3 вызывается из контекстного меню (правая кнопка мыши) при нажатии на поле ввода:
В нижнем поле консоли запросов отображается поле результата запроса, ради чего и создана эта обработка:
Также консоль запросов кроме списка умеет отображать данные в виде дерева для запросов, содержащих итоги.
Другие статьи по 1С:
Читайте также: