1С:Предприятие 8
Система программ
Архитектура платформы 1С:Предприятие
(версия )

Новое в 1С:Исполнителе 2020.2.2

Новые возможности, которые появились в 1С:Исполнителе, в Executor IDE и в плагине для Visual Studio Code.

В версии 2020.2.2, помимо исправления ошибок, мы реализовали поддержку протокола SSH, реализовали выборочное кодирование URL адреса в ЗапросHttp, а также реализовали новую настройку при чтении XML.

Кроме этого в версии 2020.2.2 мы исправили ряд ошибок в Executor IDE и плагине для Visual Studio Code.

Работа с SSH

Новое в 1С:Исполнителе 2020.2.2 Мы реализовали поддержку протокола SSH. Протокол SSH широко используется для администрирования серверов и отдельных сервисов. По сути, через этот протокол можно получить доступ к консоли удаленного сервера.

Также мы реализовали поддержку протокола SFTP, предназначенного для выполнения операций с файлами (копирования и т. п.) поверх надежного и безопасного соединения.

Для поддержки SSH мы добавили в библиотеку объектов ряд новых типов:

  • СоединениеSsh: предоставляет интерфейс для взаимодействия по протоколу SSH. Объект этого типа вы можете получить с помощью одного из конструкторов;

  • КонсольSsh: предоставляет интерфейс для взаимодействия с удаленной консолью, с помощью которой можно выполнять произвольный набор команд. Объект КонсольSsh возвращается методом СоединениеSsh.ОткрытьКонсоль().

  • СоединениеSftp: предоставляет интерфейс для взаимодействия с сервером по протоколу SFTP. Объект СоединениеSftp возвращается методом СоединениеSsh.ОткрытьСоединениеSftp().

Теперь, с появлением поддержки SSH, вы можете использовать режим агента Конфигуратора из 1С:Исполнителя.

Пример работы с файлами:

метод ЗагрузитьФайл(Файл: Строка | Файл)
    исп Соединение = новый СоединениеSsh("192.168.0.3", , "user", "password")
    исп Фтп = Соединение.ОткрытьСоединениеSftp()
    Фтп.УстановитьТекущийКаталог("/tmp/")
    Фтп.Записать(Файл)
;

Пример работы с конфигуратором в режиме агента:

метод ВыгрузитьКонфигурацию(Файл: Строка | Файл)
    исп СоединениеАгент = новый СоединениеSsh("192.168.0.3", 1543, "admin", "123")
    исп Агент = СоединениеАгент.ОткрытьКонсоль()
    Агент.СтрокаПриглашения = "designer> "

    Агент.Выполнить("common connect-ib")
    Агент.Выполнить("config dump-cfg --file=configuration.dmp", 1м)

    исп СоединениеСфтп = новый СоединениеSsh("192.168.0.3", 1543, "admin", "123")
    исп Сфтп = СоединениеСфтп.ОткрытьСоединениеSftp()
    Сфтп.Получить("configuration.dmp", Файл)
    Сфтп.Удалить("configuration.dmp")
;

Пример использования SSH туннеля:

метод ПодключениеЧерезТуннель()
    знч Настройки = новый НастройкиСоединенияSsh()
    Настройки.УстановитьПароль("12345")
    Настройки.ПеренаправлениеЛокальногоПорта(1543, "192.168.0.3", 1543)
    исп СоединениеТуннель = новый СоединениеSsh("212.212.212.212", , "user", Настройки)

    исп СоединениеАгент = новый СоединениеSsh("127.0.0.1", 1543, "admin", "123")
    исп Агент = СоединениеАгент.ОткрытьКонсоль()
    Агент.СтрокаПриглашения = "designer> "

    Консоль.Записать(Агент.Выполнить("-v").ПрочитатьКакТекст())
;

Работа с HTTP

Кодирование URL адреса в ЗапросHttp

Новое в 1С:Исполнителе 2020.2.2 В ЗапросHttp мы реализовали выборочное кодирование недопустимых символов, содержащихся в адресе запроса. Теперь, если адрес запроса содержит смесь процент-кодированных и недопустимых символов, процент-кодированные символы будут сохранены, а недопустимые символы — закодированы, с использованием процент-кодирования или IDN-кодирования. Подробнее.

В результате запрос будет успешно выполнен. Ранее выполнение запроса с подобным адресом завершалось исключением.

Примеры процентного кодирования:

Исходный адрес запроса

Адрес запроса после преобразований: пробел и обратный слеш были закодированы

https://yandex.ru/maps%2F%3Ftest1%2Ftest 2%5Ctest3 \test4

https://yandex.ru/maps%2F%3Ftest1%2Ftest %202%5Ctest3 %5Ctest4

Исходный адрес запроса

Адрес запроса после преобразований: текст не изменился, т. к. после процента допустимый код символа

http://test.ru/search=aa%2Faa

http://test.ru/search=aa%2Faa

Исходный адрес запроса

Адрес запроса после преобразований: процент был закодирован

http://test.ru/search=100 %

http://test.ru/search=100 %25

Пример IDN-кодирования:

Исходный адрес

Адрес после преобразования

http://яндекс.рф

http://xn--d1acpjx3f.xn--p1ai

Работа с JSON

Ошибка десериализации JSON

Новое в 1С:Исполнителе 2020.2.2 Исправлена ошибка десериализации JSON целиком, которая возникала при обработке значений null внутри соответствий, массивов и других объектов. Теперь null корректно читается в Неопределено.

Ранее, например, чтение такого файла приводило к исключению «Внутренняя ошибка чтения JSON»:

{
    "id": "739c5e0f-3afe-4336-8cdf-019ae667fd91",
    "status": "initiating",
    "name": "Test agent a4dae654-e19a-428a-bf49-84464097433a RB",
    "workSeatCount": 0,
    "diskQuota": 0,
    "deleted": false,
    "activeTasks": [
        {
            "id": "a2ab1902-5e16-462f-8404-ed49bd9921e4",
            "type": "create",
            "status": "AWAITING",
            "createTime": "2020-08-13T14:41:55.618+0000",
            "startTime": null,
            "endTime": null,
            "timeout": null,
            "updateTime": null,
            "errorCode": null,
            "errorMessage": null,
            "properties": null
        }
    ],
    "properties": []
}

Работа с XML

Новая настройка ЗаменятьСсылкиНаСущность

Новое в 1С:Исполнителе 2020.2.2 Для типа НастройкиЧтенияXml мы реализовали новую настройку — ЗаменятьСсылкиНаСущность. Она определяет, требуется ли разрешать ссылки на сущности на их текстовое представление. Стандартно эта настройка выключена ( Ложь). Таким образом при чтении XML секции DTD и внешние сущности не обрабатываются.

Это изменение нарушает обратную совместимость: ранее по умолчанию обработка DTD была включена, а возможность настройки отсутствовала. Поэтому, если при чтении XML вы хотите иметь прежнее поведение, установите НастройкиЧтенияXml.ЗаменятьСсылкиНаСущность в значение Истина.

Прочее

Ошибка при возврате errorlevel

Новое в 1С:Исполнителе 2020.2.2 Мы исправили ошибку, которая заключалась в том, что 1С:Исполнитель не возвращал errorlevel в случае завершения с ошибкой в ОС Windows. Например, в результате выполнения такого скрипта, возвращался код ошибки 0, хотя должен был вернуться код ошибки 255.

метод Скрипт()
    выбросить новый ИсключениеНедопустимоеСостояние("Ошибка")
;

Теперь возвращается правильный код ошибки.

Код страницы при запуске executor.cmd

Теперь 1С:Исполнитель при запуске из консоли не устанавливает код страницы для ОС Windows. Вывод из 1С:Исполнителя в стандартный поток вывода осуществляется в кодировке, соответствующей коду страницы консоли. Поддерживаемые 1С:Исполнителем коды/кодировки:
Код (chcp) Кодировка вывода
437 cp437
866 cp866
65001 UTF-8
Любой другой cp437