1с исполнитель что это
они чего java переписали под 1с подобный язык?
и зачем ключевое слово Метод?
и иерархия типов-для языка сценариев(которые пишут быстро)-маразм да и только.
в общем,очереднлй велосипед без колес.
(13) да, в питоне динамическая типизация, и классы есть. на скриншоте 1С только процедурный стиль продемонстрирован. может быть это они почву под 1С 9.0 готовят :)
1сники купили оскриптищка?
(0) Из всего этого, на мой взгляд, самое интересное - Continuous Integration. Можно будет конфигуратор из пользовательского режима вызывать.
Язык типа Паскаль минус классы. заточен пол толстых клиентов. стандартизирует разработку тулзов облегчающих администрирование. не, ну а чё, намана!
(30) и что тут конкретно "многое от typescript"?
Тут можно и kotlin, и go, и даже nim какой-нибудь припрести
(37) Не знаю языка до TS в котором переменная имела ограничение на типы
пер А: Строка|Число|Неопределено
Котлин моложе TS
(41) с "экзекутором" они вообще молодцы! Теперь можно не просто ибстись с серверами, а заниматься экзекуцией. Одинесники предпочитают жёсткий, суровый трах.
(40) Неа
By extension, a simple C enum defined as:
enum sign < positive, zero, negative >;
can be written in OCaml as:
type sign = Positive | Zero | Negative
(44) Я не знаю точно как перевели, только предположил. В русском языке экзекутор ассоциируется с палачом, а не трахом.
(0) Похоже цель этого цирка задушить OneScript. Видать знатно "пригорело" у кого-то.
Лично мне он станет интересен, если появится программный доступ к конфигурации (манипуляция объектами метаданных, их свойствами и т.д.). Ну и привязка к Яве и EDT совсем не радует.
Почитал про OneScript, Снегопат, Cucumber.
Кто все эти люди? Для кого это? Откуда у них столько времени?
(48) Прежде всего для интеллисенса. Но как и в TypeScript тип по умолчанию любой
метод СократитьДо(Строка: любой, Длина: любой): любой
(0) 1с постоянно и целенаправленно подминает под себя всю свою экологическую нишу. Сначала забрала под себя чисто учетные функции (БП, ЗУП, УТ, КА, ERP и так далее), оставив партнерам только узкую зону отраслевой специфики, коробки и обслуживание типовых. Потом пошли в сторону подмятия технологических фишек. EDT заменил всякие снегопаты, турбо конфигураторы, метадата и прочее. Потом добавили 1с аналитику убив всякие прочие системы аналитики на основе 1с которую пытались писать партнеры. Сейчас лесом пойдет 1script. Вообщем на мой взгляд как то неправильно поступает 1с. Опасно становится что то разрабатывать в нише 1с кроме как чинить типовые глюки
(0) Ждать этот язык могут или программисты(которые хотят воплотить свои поделки и заработать денег) или владельцы бизнеса (которым нужны быстрые и нетребовательные к ресурсам программы)
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Практически все распространенные операционные системы обладают таким понятием как "командный интерпретатор" или "интерпретатор командной строки". Это часть ОС, которая обеспечивает управление компьютером посредством интерактивных команд, вводимых с клавиатуры. Как правило, командный интерпретатор обладает каким-либо скриптовым языком программирования.
В Windows это интерпретатор командной строки cmd.exe и язык командных файлов (.bat-файлов). В Linux и macOS это командный интерпретатор bash и его язык сценариев.
Появится похожий инструмент и в системе программ 1С:Предприятие. Это 1C:Исполнитель.
Кроссплатформенный язык сценариев; интерпретатор языка работает во всех поддерживаемых операционных системах: Linux, macOS и Windows.
Этот язык сценариев базируется на встроенном языке разработки 1С:Предприятие (но имеет ряд отличий от него).
Этот язык сценариев обладает библиотекой времени исполнения, очень схожей с таковой в системе программ "1С:Предприятие", поддерживая, в том числе, и очень специфические объекты (например, доступ к кластеру серверов 1С:Предприятия).
1C:Исполнитель – это инструмент для автоматизации и администрирования информационных систем, созданных на платформе 1С:Предприятие. 1C:Исполнитель может применяться для автоматизации развёртывания информационных систем, поддержки практики Continuous Integration и других задач.
Вместе с 1C:Исполнителем выпускается среда разработки и отладки 1C:Executor IDE на базе 1С:Enterprise Development Tools. Также доступен плагин для разработки и отладки в среде Visual Studio Code.
В настоящий момент 1C:Исполнитель используется нами:
В сервисе 1С:Готовое Рабочее Место (ГРМ) - для управления инфраструктурой (создание и удаление виртуальных машин и контейнеров и их настройка), для управления информационными базами 1С (создание, удаление, резервное копирование, публикация на веб-серверах)
Для работы 1С:Исполнителя требуется Java Runtime Envinronment (JRE) или Java Development Kit (JDK) версии 1.8 или более новой.
Для работы среды разработки 1С:Исполнителя требуется Liberica JDK (необходим 64-разрядный дистрибутив из последней таблицы с заголовком «Полная версия Liberica включает LibericaFX и Minimal VM, где это применимо»).
Язык разработки
Как сказано выше, язык сценариев базируется на языке разработки "1С:Предприятие", но имеет от него ряд существенных отличий. Мы постарались сделать язык современным, лаконичным и простым в освоении.
Несколько характеристик языка:
Язык является статически типизированным.
В языке присутствует иерархия типов.
Нет разделения на функции и процедуры – используется единое ключевое слово метод . Если метод возвращает значение, на это указывает тип возвращаемого значения в сигнатуре метода.
Поддерживается повторное определение (перегрузка) методов. Перегруженные методы могут отличаться количеством и/или типом параметров и типом возвращаемого значения. Перегруженные методы не могут различаться только типом возвращаемого значения.
Поддерживаются пользовательские структуры, перечисления и исключения.
Нет точки с запятой ";" в конце операторов. В программе каждая инструкция располагается на отдельной строке. Символ ";" является универсальным символом, завершающим группировку инструкций: оператор или метод. Можно сказать, что символ ";" является заменой ключевых слов КонецЕсли , КонецЦикла , КонецФункции , КонецПроцедуры .
Объявления исключений, структур и перечислений также заканчиваются символом ";".
Поддерживаются многострочные комментарии /* */ .
Поддерживается интерполяция строк. Интерполяция строк – это возможность сослаться из строки через символ % на переменную или выражение. Другими словами - это более понятный и удобный синтаксис для конкатенации строк, совмещенный с возможностями форматирования значений.
В многострочных литералах не надо писать «|» в начале каждой новой строки.
Язык поддерживает русский и английский синтаксис.
Скриншот Visual Studio Code со скриптом 1С:Исполнителя (демонстрирует описанные выше 4 фичи языка - многострочные комментарии, интерполяцию строк, многострочные литералы и английский синтаксис) и выводом результата работы скрипта в терминальную консоль:
Типизация
метод СократитьДо(Строка: Строка, Длина: Число): Строка
если Строка.Длина() > Длина
возврат Строка.ПодстрокаСНачала(Длина - 3) + ". "
;
метод СократитьДо(Строка: любой, Длина: любой): любой
если Строка.Длина() > Длина
возврат Строка.ПодстрокаСНачала(Длина - 3) + ". "
;
пер А: Строка = "абв"
пер Б: Число //'Б' будет неявно инициализировано в 0
пер В = "" //тип переменной 'В' будет выведен как Строка
пер Г = ["раз", "два", "три"] //тип переменной 'Г' будет выведен как Массив
пер А: Строка|Число? |
пер А: Строка|Число|Неопределено |
для Повтор = 1 по Количество
Консоль.Записать("Привет Мир!")
;
Иерархия типов
Тип - это множество допустимых значений и набор операций, которые можно выполнять над данными, принадлежащими этому типу. При описании типов будет использоваться понятие контракт. Контрактом называется набор свойств и методов, присущих тому или иному типу, а также поведение этих свойств и методов. Другими словами контракт - это те обязательства, которые берет на себя система, когда программист оперирует значением некоторого типа. Таким образом, можно сказать, что тип - это множество допустимых значений и контракт.
Типы образуют иерархию. Это означает, что в отношении типов можно рассмотреть отношение предок-потомок. При этом потомок какого-либо типа наследует контракт своего предка, но каким-либо образом расширяет или допустимые значения или контракт или оба этих параметра. Также можно сказать, что предок какого-либо типа будет называться базовым типом. Соответственно потомок типа будет называться производным типом. У одного типа может быть несколько базовых типов. Если тип А выступает базовым для типа Б, то в переменную типа А можно присвоить значение типа Б.
В языке существует специальный тип Тип , который предназначен для идентификации типов значений. Этот тип необходим для определения и сравнения типов, а также для получения информации об иерархии типов.
В основании всей иерархии типов лежит тип Объект. Этот тип является базовым для всех типов, кроме типа Неопределено . У каждого из этих типов существует метод ПолучитьТип() , который возвращает значение типа Тип. У любого объекта языка можно вызвать метод ПолучитьТип() . Это - пример наследования контракта.
Базовые типы
Перечислим некоторые базовые типы языка.
Ууид - уникальный идентификатор.
Неопределено . Значение данного типа применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют переменные, объявленные с типом любой.
Закрываемое . Закрываемое является базовым типом для типов, использующих системные ресурсы. При создании объекта, являющегося потомком типа Закрываемое, выполняется получение системного ресурса. В тот момент, когда ресурс становится ненужным, следует вызвать метод Закрыть(), который является контрактом типа Закрываемое. Во время вызова метода Закрыть() гарантируется, что ресурс будет возвращен операционной системе.
Байты . С помощью типа Байты можно хранить набор произвольных значений, заданных 16-ричными цифрами.
пер НаборБайт = Байты(4d 5a) |
Типы для работы с датой и временем
- Время - тип предназначен для работы исключительно со временем, без учета даты.
- Дата - тип предназначен для работы исключительно с датой, без учета времени.
- ДатаВремя - даёт возможность использовать одновременно дату и время.
- Момент – тип для описания абсолютного момента времени. Это дата и время, указанные для временной зоны UTC. Использование этого типа позволяет располагать на одной шкале времени события, которые происходят в различных временных зонах, т.к. дата и время в конкретной временной зоне всегда имеет прямое отображение в UTC, путем корректировки на время смещения конкретной временной зоны.
- Длительность - описывает временную продолжительность.
Коллекции
В языке существуют следующие типы для работы с коллекциями:
Массив - список элементов, без контроля уникальности. Коллекция поддерживает доступ по индексу.
Множество – это коллекция, содержащая только уникальные элементы. Не поддерживается доступ по индексу.
Соответствие - словарь, список пар "ключ-значение". В соответствии поддерживается уникальность по ключу. Поддерживается доступ по индексу. Соответствие позволяет хранить элементы произвольных типов.
Перечисление
перечисление ОперационныеСистемы
Windows,
macOS,
Linux
;
Структура
Структура - это тип, имеющий фиксированный набор полей и конструкторов. Каждое поле имеет тип, указанный при разработке структуры. Структура может содержать только данные и не может содержать описания методов. После описания структуры, ее можно использовать в программах наряду с другими типами данных.
структура ОписаниеФайла
пер ИмяФайла: Строка = "" // имя файла
знч Исполняемый: Булево = Ложь // тип файла
пер ПолныйПуть: Строка = "" // полный путь
пер РазмерФайла: Число = 0 // размер файла
;
Стандартная библиотека
Кроме базовых объектов, которые рассматривались ранее, система 1С:Исполнитель включает стандартную библиотеку. Стандартная библиотека - это набор объектов, который является составной частью системы 1С:Исполнитель и позволяет выполнять различные действия, в том числе с внешним, по отношению к системе 1С:Исполнитель окружением.
Стандартная библиотека включает в себя большое количество различных объектов. Сюда входят объекты для работы с:
Процессами операционной системы
Системным окружением (переменные среды и т.д.)
Администрированием кластера 1C:Предприятия
Пример использования
метод РаботаССВ()
// Адрес сервера Системы взаимодействия для создания приложения
пер АдресСервера = "wss://address.ecs:9094?transport=websocket&version=4"
// Путь к файлу с хранилищем ключей, содержащему сертификат сервера СВ
пер ФайлХранилищаJKS = "C:\\keystore.jks"
// Строка с паролем к хранилищу
пер ПарольХранилища = "keystorePass"
// Строка с паролем к сертификату
пер ПарольКлюча = "certPass"
// Таймаут операции
пер Таймаут = 15с //15 секунд
// Уникальный идентификатор пользователя приложения
пер ПользовательПриложения = новый Ууид("84eb3ebb-95ae-4dea-a025-adfa8961703c")
// Строка с именем пользователя приложения
пер ИмяПользователя = "Иван"
// Строки с полным именем пользователя приложения
пер ПолноеИмяПользователя = "Иванов Иван"
// Код, который присылает сервер СВ для регистрации нового приложения
пер КодАктивации = "123456"
// ИмяПриложения подключаемой информационной базы
пер ИмяПриложения = "myApp"
// 1. Подключение
СистемаВзаимодействия.Подключиться(АдресСервера, ФайлХранилищаJKS,
ПарольХранилища, ПарольКлюча, Таймаут)
// 2.1. Подготовить ключи
пер Ключи = новый КлючиПриложения()
// 2.2. Создание приложения
пер ПараметрыПриложенияСВ = СистемаВзаимодействия.СоздатьПриложение(Ключи,
ПользовательПриложения, ИмяПользователя,
ПолноеИмяПользователя, КодАктивации,
ПочтовыйАдрес, ИмяПриложения)
// Ответ от сервера системы взаимодействия
пер ИДПриложенияСВ: Ууид = ПараметрыПриложенияСВ.ИдентификаторПриложения
пер ОткрытыйКлючПриложенияСВ: Строка = ПараметрыПриложенияСВ.ОткрытыйКлюч
// Сохранить параметры приложения для последующего использования
Консоль.Записать(Ключи.ОткрытыйКлюч.ВСтроку())
Консоль.Записать(Ключи.ЗакрытыйКлюч.ВСтроку())
Консоль.Записать(ИдентификаторПриложенияСВ.ВСтроку())
Консоль.Записать(ОткрытыйКлючПриложенияСВ.ВСтроку())
// 3. Аутентификация
пер ИдПользователяСВ = СистемаВзаимодействия.Войти(Ключи, ПользовательПриложения,
ИмяПользователя, ПолноеИмяПользователя, ПараметрыПриложенияСВ)
// 4. Работа с системой взаимодействия
//Получаем первые 10 непрочитанных обсуждений и выводим в консоль
попытка
// получаем непрочитанные обсуждения
пер МассивИДНепрочитанныхОбсуждений =
СистемаВзаимодействия.ПолучитьНепрочитанныеОбсуждения(, 10)
поймать Искл : ИсключениеСистемыВзаимодействия
Консоль.ЗаписатьОшибку("Ошибка системы взаимодействия: " + Искл)
;
// 5. Отключение
СистемаВзаимодействия.Отключиться()
;
Нынешний вариант языка – предварительный. В нем в ходе приближения к релизу могут быть сделаны изменения, нарушающие обратную совместимость. И обязательно будет добавляться новая функциональность.
Фирма «1С» анонсировала новый инструмент для администрирования информационных систем, представляющий из себя язык разработки, который базируется на языке 1С и поддерживает все совместимые с 1С платформы.
«1С:Исполнитель»: особенности языка
Официальный технологический блог «Заметки из Зазеркалья» опубликовал материал о новом инструменте для разработчиков и администраторов, который представляет собой новый язык разработки сценариев, а также его интерпретатор, совместимый со всеми платформами, поддерживаемыми 1С – с Linux, macOS и Windows.
«Язык сценариев базируется на языке разработки 1С:Предприятие, но имеет от него ряд существенных отличий. Мы постарались сделать язык современным, лаконичным и простым в освоении», – говорится в описании нового продукта.
На данный момент разработчики обозначили такие особенности и возможности языка в «1С:Исполнителе»:
- Типизация: язык статически типизированный, у каждой переменной, параметра и метода, возвращающего значения, должны быть заданы типы; проверка типов будет происходит в момент компиляции.
- Иерархия типов: под типом понимается множество допустимых значений и набор операций, которые можно выполнять над данными, принадлежащими этому типу. При описании типов будет использоваться понятие «контракт» - набор свойств и методов, присущих тому или иному типу, а также поведение этих свойств и методов.
- Базовые типы, например, Число, Булево, Строка, Ууид - уникальный идентификатор и другие.
- Типы для работы с датой и временем
- Коллекции: массив (список элементов, без контроля уникальности), множество (коллекция, содержащая только уникальные элементы), соответствие (словарь, список пар «ключ-значение»)
- Перечисление: специальный тип данных, множество значений которого представляет собой явно заданный набор идентификаторов.
- Структура: тип, имеющий фиксированный набор полей и конструкторов. Каждое поле имеет тип, указанный при разработке структуры. Структура может содержать только данные и не может содержать описания методов.
- Стандартная библиотека: набор объектов, который является составной частью системы «1С:Исполнитель» и позволяет выполнять различные действия, в том числе с внешним окружением.
Для работы «1С:Исполнителя» потребуется Java Runtime Envinronment (JRE) или Java Development Kit (JDK) версии 1.8 или более новой, а также Liberica JDK (64-разрядный дистрибутив из последней таблицы с заголовком «Полная версия Liberica включает LibericaFX и Minimal VM, где это применимо»).
Будет ли мир разработчиков 1С прежним после релиза «1С:Исполнителя»
В заметке на страницах блога «Зазеркалье» говорится, что уже сейчас «1С:Исполнитель» работает в облачных сервисах 1С:Фреш и 1С:ГРМ, и применяется для администрирования информационных баз и виртуальных машин.
Предполагаем, что по мере распространения решений для корпоративного сегмента, когда «заметать под коврик» вопросы администрирования и управления разработкой практически невозможно, востребованность такого рода продуктов будет только расти.
Соответственно, появление «1С:Исполнителя» сейчас выглядит вполне разумно, а в случае публикации рабочего релиза еще и оптимистично.
В общем, у прогрессивных разработчиков 1С, которые уже какое-то время следят за развитием 1С:EDT, возникла еще одна точка, на которой можно будет фокусировать свое внимание – это развитие «1С:Исполнителя».
Интервью с Андреем Овсянкиным
Мы поговорили об анонсе «1С:Исполнителя» с создателем скриптового интерпретатора OneScript Андреем Овсянкиным. Обсудили, какие перспективы у нового движка и как разработка скажется на отрасли в целом.
Пока нет возможности оценить анонсированный инструмент, и доступна только его концепция, как вы считаете, насколько эта концепция удачно сформулирована?
Вот как раз концепция сообществу и непонятна. Да, это язык для девопс. Но почему он настолько отличается от 1С? Если придуман новый язык, то в чем мотивация учить его, а не Python, например? Т.е. концепция сформулирована пока очень размыто. И об ее «удачности» сложно что-либо сказать.
Я так понимаю, что фирма 1С написала свой внутренний инструмент для поддержки ГРМ и Фреш, и возможно, они не планировали создать универсальный продукт, они просто выразили свои представления об инструменте работы, вложили в него то, что им показалось удобным.
Возможно все, что угодно. Мы пока не знаем о предпосылках создания языка. Ни для кого не секрет, что язык 1С застоялся и требовал развития. 1С сделала смелый шаг и развитие пока выглядит очень радикальным. До появления вопроса: «выглядит то-ли как Typescript, то-ли как Python, но будто бы менее удобно чем то и другое». Надо попробовать. Пока синтаксис вызывает жаркие споры. Мне кажется можно было бы дать новый толчок исходному языку 1С и без столь радикальных изменений. Что явилось толчком к созданию? Не знаю. Во-первых, конечно, желание развить язык. Во-вторых – 1С «разглядела» востребованность devops и разумеется сделала для этого свой инструмент. По традиции, информации «с той стороны» минимум. Хотелось бы, чтобы фирма была более открытой к сообществу.
Но судя по анонсу, развитие действительно шло сразу в нескольких направлениях – есть и среда отладки, и возможность создания классов, и поддержка EDT. Т.е. апробация шла несколькими командами.
Это очень круто. Подошли комплексно, даже VS Code поддержали. Видно, что старались
Может быть, эти изменения специально оформлены настолько шокирующе, чтобы произвести впечатление? Возможно, изначально спорные моменты будут скорректированы в дальнейшем?
То есть 1С-никам придется радикально переучиваться на новый синтаксис?
Что значит «придется»? Пока никто не заставляет.
Как вы относитесь к 1С:Исполнителю? Будете ли вы им пользоваться?
Меня многие об этом спрашивают, полагаю из-за OneScript. Я отношусь крайне положительно, как ни странно. Выход инструмента специально для devops, означает, что последние 5-6 лет нашей работы не пропали зря. 1С заметила полезность инструментов. Известно, что наработки сообщества активно не только изучаются, но и применяются внутри самой 1С. Но, конечно, досадно, что на официальном уровне 1С делает вид, что не существует ни OneScript, ни bsl ls, ни Снегопата. Пользоваться буду, если он будет выпущен под лицензией, которая позволит мне это делать. И, если он будет пригоден для моих задач, конечно. То, что скриптинг теперь официально актуален, как явление - это очень круто, я рад.
Просто интересно ваше мнение про целевую аудиторию анонсированной разработки? Сейчас она обозначена размыто. Как вы думаете, для каких задач она может быть полезна?
Аудитория как раз обозначена четко: админы парка серверов 1С. Вопрос в том, что админы крупных парков как правило уже владеют мейнстримными скриптовыми языками. Почему они захотят изучить новый инструмент? Что их должно мотивировать? Успех 1скрипт как раз во многом и объясняется тем, что учить ничего было не нужно. И простые 1Сники смогли зайти в сферу автоматизации админства без слома собственных навыков.
Фирма «1С» анонсировала новый инструмент для администрирования информационных систем, представляющий из себя язык разработки, который базируется на языке 1С и поддерживает все совместимые с 1С платформы.
«1С:Исполнитель»: особенности языка
Официальный технологический блог «Заметки из Зазеркалья» опубликовал материал о новом инструменте для разработчиков и администраторов, который представляет собой новый язык разработки сценариев, а также его интерпретатор, совместимый со всеми платформами, поддерживаемыми 1С – с Linux, macOS и Windows.
«Язык сценариев базируется на языке разработки 1С:Предприятие, но имеет от него ряд существенных отличий. Мы постарались сделать язык современным, лаконичным и простым в освоении», – говорится в описании нового продукта.
На данный момент разработчики обозначили такие особенности и возможности языка в «1С:Исполнителе»:
- Типизация: язык статически типизированный, у каждой переменной, параметра и метода, возвращающего значения, должны быть заданы типы; проверка типов будет происходит в момент компиляции.
- Иерархия типов: под типом понимается множество допустимых значений и набор операций, которые можно выполнять над данными, принадлежащими этому типу. При описании типов будет использоваться понятие «контракт» - набор свойств и методов, присущих тому или иному типу, а также поведение этих свойств и методов.
- Базовые типы, например, Число, Булево, Строка, Ууид - уникальный идентификатор и другие.
- Типы для работы с датой и временем
- Коллекции: массив (список элементов, без контроля уникальности), множество (коллекция, содержащая только уникальные элементы), соответствие (словарь, список пар «ключ-значение»)
- Перечисление: специальный тип данных, множество значений которого представляет собой явно заданный набор идентификаторов.
- Структура: тип, имеющий фиксированный набор полей и конструкторов. Каждое поле имеет тип, указанный при разработке структуры. Структура может содержать только данные и не может содержать описания методов.
- Стандартная библиотека: набор объектов, который является составной частью системы «1С:Исполнитель» и позволяет выполнять различные действия, в том числе с внешним окружением.
Для работы «1С:Исполнителя» потребуется Java Runtime Envinronment (JRE) или Java Development Kit (JDK) версии 1.8 или более новой, а также Liberica JDK (64-разрядный дистрибутив из последней таблицы с заголовком «Полная версия Liberica включает LibericaFX и Minimal VM, где это применимо»).
Будет ли мир разработчиков 1С прежним после релиза «1С:Исполнителя»
В заметке на страницах блога «Зазеркалье» говорится, что уже сейчас «1С:Исполнитель» работает в облачных сервисах 1С:Фреш и 1С:ГРМ, и применяется для администрирования информационных баз и виртуальных машин.
Предполагаем, что по мере распространения решений для корпоративного сегмента, когда «заметать под коврик» вопросы администрирования и управления разработкой практически невозможно, востребованность такого рода продуктов будет только расти.
Соответственно, появление «1С:Исполнителя» сейчас выглядит вполне разумно, а в случае публикации рабочего релиза еще и оптимистично.
В общем, у прогрессивных разработчиков 1С, которые уже какое-то время следят за развитием 1С:EDT, возникла еще одна точка, на которой можно будет фокусировать свое внимание – это развитие «1С:Исполнителя».
Интервью с Андреем Овсянкиным
Мы поговорили об анонсе «1С:Исполнителя» с создателем скриптового интерпретатора OneScript Андреем Овсянкиным. Обсудили, какие перспективы у нового движка и как разработка скажется на отрасли в целом.
Пока нет возможности оценить анонсированный инструмент, и доступна только его концепция, как вы считаете, насколько эта концепция удачно сформулирована?
Вот как раз концепция сообществу и непонятна. Да, это язык для девопс. Но почему он настолько отличается от 1С? Если придуман новый язык, то в чем мотивация учить его, а не Python, например? Т.е. концепция сформулирована пока очень размыто. И об ее «удачности» сложно что-либо сказать.
Я так понимаю, что фирма 1С написала свой внутренний инструмент для поддержки ГРМ и Фреш, и возможно, они не планировали создать универсальный продукт, они просто выразили свои представления об инструменте работы, вложили в него то, что им показалось удобным.
Возможно все, что угодно. Мы пока не знаем о предпосылках создания языка. Ни для кого не секрет, что язык 1С застоялся и требовал развития. 1С сделала смелый шаг и развитие пока выглядит очень радикальным. До появления вопроса: «выглядит то-ли как Typescript, то-ли как Python, но будто бы менее удобно чем то и другое». Надо попробовать. Пока синтаксис вызывает жаркие споры. Мне кажется можно было бы дать новый толчок исходному языку 1С и без столь радикальных изменений. Что явилось толчком к созданию? Не знаю. Во-первых, конечно, желание развить язык. Во-вторых – 1С «разглядела» востребованность devops и разумеется сделала для этого свой инструмент. По традиции, информации «с той стороны» минимум. Хотелось бы, чтобы фирма была более открытой к сообществу.
Но судя по анонсу, развитие действительно шло сразу в нескольких направлениях – есть и среда отладки, и возможность создания классов, и поддержка EDT. Т.е. апробация шла несколькими командами.
Это очень круто. Подошли комплексно, даже VS Code поддержали. Видно, что старались
Может быть, эти изменения специально оформлены настолько шокирующе, чтобы произвести впечатление? Возможно, изначально спорные моменты будут скорректированы в дальнейшем?
То есть 1С-никам придется радикально переучиваться на новый синтаксис?
Что значит «придется»? Пока никто не заставляет.
Как вы относитесь к 1С:Исполнителю? Будете ли вы им пользоваться?
Меня многие об этом спрашивают, полагаю из-за OneScript. Я отношусь крайне положительно, как ни странно. Выход инструмента специально для devops, означает, что последние 5-6 лет нашей работы не пропали зря. 1С заметила полезность инструментов. Известно, что наработки сообщества активно не только изучаются, но и применяются внутри самой 1С. Но, конечно, досадно, что на официальном уровне 1С делает вид, что не существует ни OneScript, ни bsl ls, ни Снегопата. Пользоваться буду, если он будет выпущен под лицензией, которая позволит мне это делать. И, если он будет пригоден для моих задач, конечно. То, что скриптинг теперь официально актуален, как явление - это очень круто, я рад.
Просто интересно ваше мнение про целевую аудиторию анонсированной разработки? Сейчас она обозначена размыто. Как вы думаете, для каких задач она может быть полезна?
Аудитория как раз обозначена четко: админы парка серверов 1С. Вопрос в том, что админы крупных парков как правило уже владеют мейнстримными скриптовыми языками. Почему они захотят изучить новый инструмент? Что их должно мотивировать? Успех 1скрипт как раз во многом и объясняется тем, что учить ничего было не нужно. И простые 1Сники смогли зайти в сферу автоматизации админства без слома собственных навыков.
1C:Исполнитель - это кроссплатформенный язык сценариев который базируется на встроенном языке разработки 1С:Предприятие (но имеет ряд отличий от него). Является аналогом командного интерпретатора ОС ( cmd.exe ) и о бладает библиотекой времени исполнения, схожей с таковой в системе программ "1С:Предприятие", поддерживая, в том числе, и очень специфические объекты (например, доступ к кластеру серверов 1С). 1C:Исполнитель предназначен для автоматизации и администрирования информационных систем, созданных на платформе 1С:Предприятие.
✔ Является статически типизированным
✔ Нет разделения на функции и процедуры – используется единое ключевое слово "метод". Если метод возвращает значение, на это указывает тип возвращаемого значения в сигнатуре метода
✔ Поддерживается повторное определение (перегрузка) методов. Перегруженные методы могут отличаться количеством и/или типом параметров и типом возвращаемого значения. Перегруженные методы не могут различаться только типом возвращаемого значения
✔ Нет точки с запятой «;» в конце операторов. В программе каждая инструкция располагается на отдельной строке. Символ ";" является универсальным символом, завершающим группировку инструкций: оператор или метод. ";" является заменой ключевых слов КонецЕсли, КонецЦикла, КонецФункции, КонецПроцедуры.
✔ Поддерживается интерполяция строк (возможность сослаться из строки через символ % на переменную или выражение)
Параллельно c 1C:Исполнителем выпускается среда разработки и отладки 1C:Executor IDE (на базе 1С:Enterprise Development Tools ). Для работы требуется JRE или JDK v.1.8 (или выше), для среды разработки требуется Liberica JDK (64x) .
1С:Исполнитель X (eXecutable) – Выпущен в апреле 2021. Работает без Java и для конкретной ОС (Windows, Linux, macOS), используется, когда критично время запуска скриптов и нежелательна установка Java . Реализован на виртуальной машине GraalVM .
- executor.cmd - утилита для запуска скриптов в Windows
- executor.sh - утилита для запуска скриптов в Linux или macOS
-s (source-path) - имя файла со скриптом(*.sbsl). Является обязательным, только в том случае, если имя запускаемого сценария не является единственным параметром при запуске executor.
-m (method) - имя метода, с вызова которого стартует исполнение скрипта. Если параметр не заполнен, то исполнение скрипта начнется с вызова метода Скрипт (Script).
-d (debug-port) - номер порта (диапазон от 0 до 65535, исключая первый и последний номер), который будет использоваться сервером отладки.
-- - признак прекращения разбора аргументов командной строки. Если параметр указан, то будет отключен разбор оставшейся части командной строки и все оставшиеся значения передаются как параметры сценария (разделитель: пробел). Данный параметр так же используется при необходимости передать в качестве значения другого параметра командной строки системы последовательность символов, начинающихся с -.
параметры сценария - в случае, когда после определения именованных параметров в командной строке запуска сценария
Пример простой командной строки: “%ПапкаИсполнителя%\executor_j11.cmd” –s “%ПапкаСкрипта%\ИмяСкрипта.sbsl” –m ИмяМетода
- 0 - скрипт и исполнитель успешно завершил работу.
- 255 - завершение работы с ошибкой.
- Скрипт начинается с метода Скрипт(Script). Это основной метод для запуска скрипта, который стартует, если выполнить файл sbsl без параметров.
- Отсутствуют процедуры и функций, используется только ключевое слово метод (method).
- Вместо КонецЕсли, КонецЦикла используется точка с запятой «;» и её теперь не нужно ставить в конце каждой строки, достаточно установить при завершении всего блока.
- Язык является регистрозависимым. Ключевые слова всегда должны быть с маленькой буквы, все остальные - как и в 1С - в ГорбатомРегистре.
- Для вывода результата используется Консоль.Записать.
метод Скрипт ()
// Объявление переменных
пер AAA : любой // Неопределено
пер BBB : Строка // Пустая строка
пер CCC : Число // 0
пер DDD : Строка ? // Неопределено
пер EEE : Строка|Число = 15 // 15
// Недопустимые значения при объявлении переменных
пер XXX : Строка|Число // Не указано значение инициализации
пер YYY : Строка = [ 5 , 7 ] // Не совпадение с указанным типом
;
метод Скрипт ()
ВывестиБазовыеТипы ( Тип ( Число ))
ВывестиБазовыеТипы ( Тип ( Массив ))
ВывестиБазовыеТипы ( Тип ( ПотокЗаписи ))
ВывестиБазовыеТипы ( Тип ( ИсключениеНедопустимыйАргумент ))
;
метод ВывестиБазовыеТипы ( Параметр : Тип )
Консоль . Записать ( "Базовые типы для " + Параметр )
пер Результат : Множество = ПеречислитьПредков ( Параметр )
для Элемент из Результат
Консоль . ЗаписатьСтроковоеПредставление ( Элемент )
;
;
метод ПеречислитьПредков ( Значение : Тип , Предки : Множество = <> ): Множество
для ТекущийБазТип из Значение . БазовыеТипы
Предки . Добавить ( ТекущийБазТип )
ПеречислитьПредков ( ТекущийБазТип , Предки )
;
возврат Предки
ЭлементНаПроверку это [не] КонтрольныйСписокТипов // Оператор это выполняет проверку: является ли присваиваемым список типов выражения в список типов (справа за оператором)
метод Скрипт ()
ЭтоКоллекция ( 1 )
ЭтоКоллекция (новый Массив ())
ЭтоКоллекция (новый ФиксированныйМассив ([]))
ЭтоКоллекция (новый Соответствие ())
ЭтоКоллекция (новый Множество ())
;
метод ЭтоКоллекция ( Параметр : Объект )
Консоль . ЗаписатьСтроковоеПредставление ( "Тип параметра Это фиксированная коллекция" )
иначе
Консоль . Записать ( "Это не фиксированная коллекция" )
;
;
метод Скрипт ()
пер X : Строка|Число = ""
пер Y : Строка|Число|Ууид = 0
пер Z : любой
// Разрешенные операции
если X это Строка
;
Z = Y как Число
X = Y как Строка|Число
СкриптСПриведением ( "строка" )
СкриптСПриведением ( 7 )
// Запрещенные операции
X = Y
Z = Y как ДатаВремя
метод СкриптСПриведением ( Параметр : Объект )
если Параметр это Строка // "строка"
МетодСтрока ( Параметр как Строка )
иначе если Параметр это Число // 7
МетодЧисло ( Параметр как Число )
иначе если Параметр это Булево
МетодБулево ( Параметр как Булево )
иначе
// действие для других типов
;
;
метод Скрипт ()
пер Z = СкриптВычисление ()
;
метод СкриптВычисление (): Число
пер Y : Число
Y = 5
возврат Y
;
метод Скрипт ()
пер МаркаАвто : Строка
МаркаАвто = Консоль . СчитатьСтроку ( "Введите марку автомобиля: " )
// Область видимости переменной "МаркаАвто" распространяется до конца скрипта
если МаркаАвто == "BMW"
пер ДизельныеДвигатели : Массив
// Видимые переменные: МаркаАвто, ДизельныеДвигатели
иначе если МаркаАвто == "Audi"
пер БензиновыеДвигатели : Массив
// Видимые переменные: МаркаАвто, БензиновыеДвигатели
иначе
область
пер СписокМарокАвто : Массив
// Видимые переменные: МаркаАвто, СписокМарокАвто
для КонкретнаяМаркаАвто из СписокМарокАвто
// Видимые переменные: МаркаАвто, СписокМарокАвто, КонкретнаяМаркаАвто
;
// Видимые переменные: МаркаАвто, СписокМарокАвто
;
область
пер СписокКонтактов : Массив
// Видимые переменные: МаркаАвто, СписокМарокАвто
;
// Видимые пременные: МаркаАвто
;
;
метод Скрипт ()
пер pNumb : Число
pNumb = 75 // целое 10-ое число
pNumb = 2.7182818284 // дробное 10-ое число
pNumb = 75 / 15 // выражение с использованием 10-х чисел
pNumb = 0x5A3 // 16-ое число
pNumb = - 0x5A3 // отрицательное 16-ое число
pNumb = 0b101 // 2-ое число
;
// Адрес сервера для создания приложения (протокол+адрес сервера+порт сервера)
пер АдресСервераWSS = "wss://address.ecs:9094?transport=websocket&version=4"
// Путь к файлу с хранилищем ключей, содержащему сертификат сервера СВ
пер ФайлХранилищаJKS = "C:\\key.jks"
// Строка с паролем к хранилищу
пер ПарольХранилища = "keyPass"
// Строка с паролем к сертификату
пер ПарольКлюча = "certPass"
// Таймаут операции
пер ТаймаутОперации = 10с //10 секунд
// Строка с именем пользователя приложения
пер ИмяПользователя = "Артур"
// Строки с полным именем пользователя приложения
пер ПолноеИмяПользователя = "Коржан Артур"
// Код, который присылает сервер СВ для регистрации нового приложения
пер КодАктивации = "9876543210"
// Адрес эл. почты для регистрации приложения на сервере СВ
пер ПочтовыйАдрес = "artur@1cnik.by"
// ИмяПриложения подключаемой информационной базы
пер ИмяПриложения = "myApp"
// Подключение.
СистемаВзаимодействия . Подключиться ( АдресСервераWSS , ФайлХранилищаJKS , ПарольХранилища , ПарольКлюча , ТаймаутОперации )
// Подготовка ключа.
пер Ключи = новый КлючиПриложения ()
// Создание приложения.
пер ПарПриложенияСВ = СистемаВзаимодействия . СоздатьПриложение ( Ключи , ПользовательПриложения , ИмяПользователя , ПолноеИмяПользователя , КодАктивации , ПочтовыйАдрес , ИмяПриложения )
// Ответ сервера.
пер ИдентификаторПриложенияСВ : Ууид = ПарПриложенияСВ . ИдентификаторПриложения
пер ОткрытыйКлючПриложенияСВ : Строка = ПарПриложенияСВ . ОткрытыйКлюч
// Сохранение параметров приложения (для последующего использования)
Консоль . Записать ( Ключи . ОткрытыйКлюч . ВСтроку ())
Консоль . Записать ( Ключи . ЗакрытыйКлюч . ВСтроку ())
Консоль . Записать ( ИдентификаторПриложенияСВ . ВСтроку ())
Консоль . Записать ( ОткрытыйКлючПриложенияСВ . ВСтроку ())
// Аутентификация.
пер ИдПользователяСВ = СистемаВзаимодействия . Войти ( Ключи , ПользовательПриложения , ИмяПользователя , ПолноеИмяПользователя , ПарПриложенияСВ )
// Работа с системой взаимодействия.
// Получение первых 20-ти непрочитанных обсуждений и вывод в консоль
попытка
// Получение непрочитанных обсуждений
пер МассивИДНепрочитанныхОбсуждений = СистемаВзаимодействия . ПолучитьНепрочитанныеОбсуждения (, 20 )
Читайте также: