Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Практически все распространенные операционные системы обладают таким понятием как "командный интерпретатор" или "интерпретатор командной строки". Это часть ОС, которая обеспечивает управление компьютером посредством интерактивных команд, вводимых с клавиатуры. Как правило, командный интерпретатор обладает каким-либо скриптовым языком программирования.
В Windows это интерпретатор командной строки cmd.exe и язык командных файлов (.bat-файлов). В Linux и macOS это командный интерпретатор bash и его язык сценариев.
Появится похожий инструмент и в системе программ 1С:Предприятие. Это 1C:Исполнитель.
1C:Исполнитель - это:
Кроссплатформенный язык сценариев; интерпретатор языка работает во всех поддерживаемых операционных системах: Linux, macOS и Windows.
Этот язык сценариев базируется на встроенном языке разработки 1С:Предприятие (но имеет ряд отличий от него).
Этот язык сценариев обладает библиотекой времени исполнения, очень схожей с таковой в системе программ "1С:Предприятие", поддерживая, в том числе, и очень специфические объекты (например, доступ к кластеру серверов 1С:Предприятия).
1C:Исполнитель – это инструмент для автоматизации и администрирования информационных систем, созданных на платформе 1С:Предприятие. 1C:Исполнитель может применяться для автоматизации развёртывания информационных систем, поддержки практики Continuous Integration и других задач.
Вместе с 1C:Исполнителем выпускается среда разработки и отладки 1C:Executor IDE на базе 1С:Enterprise Development Tools. Также доступен плагин для разработки и отладки в среде Visual Studio Code.
В настоящий момент 1C:Исполнитель используется нами:
В облачном сервисе https://1cfresh.com/ - для задач администрирования и публикации инфобаз на веб-серверах
В сервисе 1С:Готовое Рабочее Место (ГРМ) - для управления инфраструктурой (создание и удаление виртуальных машин и контейнеров и их настройка), для управления информационными базами 1С (создание, удаление, резервное копирование, публикация на веб-серверах)
Для работы 1С:Исполнителя требуется Java Runtime Envinronment (JRE) или Java Development Kit (JDK) версии 1.8 или более новой.
Для работы среды разработки 1С:Исполнителя требуется Liberica JDK (необходим 64-разрядный дистрибутив из последней таблицы с заголовком «Полная версия Liberica включает LibericaFX и Minimal VM, где это применимо»).
Несколько характеристик языка:
Язык является статически типизированным.
В языке присутствует иерархия типов.
Нет разделения на функции и процедуры – используется единое ключевое слово метод. Если метод возвращает значение, на это указывает тип возвращаемого значения в сигнатуре метода.
Поддерживается повторное определение (перегрузка) методов. Перегруженные методы могут отличаться количеством и/или типом параметров и типом возвращаемого значения. Перегруженные методы не могут различаться только типом возвращаемого значения.
Поддерживаются пользовательские структуры, перечисления и исключения.
Нет точки с запятой ";" в конце операторов. В программе каждая инструкция располагается на отдельной строке. Символ ";" является универсальным символом, завершающим группировку инструкций: оператор или метод. Можно сказать, что символ ";" является заменой ключевых слов КонецЕсли, КонецЦикла, КонецФункции, КонецПроцедуры.
Объявления исключений, структур и перечислений также заканчиваются символом ";".
Поддерживаются многострочные комментарии /* */.
Поддерживается интерполяция строк. Интерполяция строк – это возможность сослаться из строки через символ % на переменную или выражение. Другими словами - это более понятный и удобный синтаксис для конкатенации строк, совмещенный с возможностями форматирования значений.
В многострочных литералах не надо писать «|» в начале каждой новой строки.
Язык поддерживает русский и английский синтаксис.
Скриншот Visual Studio Code со скриптом 1С:Исполнителя (демонстрирует описанные выше 4 фичи языка - многострочные комментарии, интерполяцию строк, многострочные литералы и английский синтаксис) и выводом результата работы скрипта в терминальную консоль:
метод СократитьДо(Строка: Строка, Длина: Число): Строка
возврат Строка |
метод СократитьДо(Строка: любой, Длина: любой): любой
возврат Строка |
пер А: Строка = "абв" пер Б: Число //'Б' будет неявно инициализировано в 0 пер В = "" //тип переменной 'В' будет выведен как Строка пер Г = ["раз", "два", "три"] //тип переменной 'Г' будет выведен как Массив |
пер А: Строка|Число? |
пер А: Строка|Число|Неопределено |
для Повтор = 1 по Количество |
Тип - это множество допустимых значений и набор операций, которые можно выполнять над данными, принадлежащими этому типу. При описании типов будет использоваться понятие контракт. Контрактом называется набор свойств и методов, присущих тому или иному типу, а также поведение этих свойств и методов. Другими словами контракт - это те обязательства, которые берет на себя система, когда программист оперирует значением некоторого типа. Таким образом, можно сказать, что тип - это множество допустимых значений и контракт.
Типы образуют иерархию. Это означает, что в отношении типов можно рассмотреть отношение предок-потомок. При этом потомок какого-либо типа наследует контракт своего предка, но каким-либо образом расширяет или допустимые значения или контракт или оба этих параметра. Также можно сказать, что предок какого-либо типа будет называться базовым типом. Соответственно потомок типа будет называться производным типом. У одного типа может быть несколько базовых типов. Если тип А выступает базовым для типа Б, то в переменную типа А можно присвоить значение типа Б.
В языке существует специальный тип Тип, который предназначен для идентификации типов значений. Этот тип необходим для определения и сравнения типов, а также для получения информации об иерархии типов.
В основании всей иерархии типов лежит тип Объект. Этот тип является базовым для всех типов, кроме типа Неопределено. У каждого из этих типов существует метод ПолучитьТип(), который возвращает значение типа Тип. У любого объекта языка можно вызвать метод ПолучитьТип(). Это - пример наследования контракта.
Перечислим некоторые базовые типы языка.
Число
Булево
Строка
Ууид - уникальный идентификатор.
Неопределено. Значение данного типа применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют переменные, объявленные с типом любой.
Закрываемое. Закрываемое является базовым типом для типов, использующих системные ресурсы. При создании объекта, являющегося потомком типа Закрываемое, выполняется получение системного ресурса. В тот момент, когда ресурс становится ненужным, следует вызвать метод Закрыть(), который является контрактом типа Закрываемое. Во время вызова метода Закрыть() гарантируется, что ресурс будет возвращен операционной системе.
Байты. С помощью типа Байты можно хранить набор произвольных значений, заданных 16-ричными цифрами.
пер НаборБайт = Байты(4d 5a) |
В языке существуют следующие типы для работы с коллекциями:
Массив - список элементов, без контроля уникальности. Коллекция поддерживает доступ по индексу.
Множество – это коллекция, содержащая только уникальные элементы. Не поддерживается доступ по индексу.
Соответствие - словарь, список пар "ключ-значение". В соответствии поддерживается уникальность по ключу. Поддерживается доступ по индексу. Соответствие позволяет хранить элементы произвольных типов.
перечисление ОперационныеСистемы |
структура ОписаниеФайла |
Кроме базовых объектов, которые рассматривались ранее, система 1С:Исполнитель включает стандартную библиотеку. Стандартная библиотека - это набор объектов, который является составной частью системы 1С:Исполнитель и позволяет выполнять различные действия, в том числе с внешним, по отношению к системе 1С:Исполнитель окружением.
Стандартная библиотека включает в себя большое количество различных объектов. Сюда входят объекты для работы с:
Процессами операционной системы
Системным окружением (переменные среды и т.д.)
Файловой системой
Протоколами HTTP, SMTP
JSON, XML, ZIP
Системой взаимодействия
Администрированием кластера 1C:Предприятия
Код ниже подключается а Системе взаимодействия и выводит в консоль непрочитанные сообщения первых 10 непрочитанных обсуждений.
метод РаботаССВ()
// Путь к файлу с хранилищем ключей, содержащему сертификат сервера СВ |
Нынешний вариант языка – предварительный. В нем в ходе приближения к релизу могут быть сделаны изменения, нарушающие обратную совместимость. И обязательно будет добавляться новая функциональность.