Новые возможности, которые появились в 1С:Исполнителе, в Executor IDE и в плагине для Visual Studio Code.
В версии 2020.2.2, помимо исправления ошибок, мы реализовали поддержку протокола SSH, реализовали выборочное кодирование URL адреса в ЗапросHttp, а также реализовали новую настройку при чтении XML.
Кроме этого в версии 2020.2.2 мы исправили ряд ошибок в Executor IDE и плагине для Visual Studio Code.
Мы
реализовали поддержку протокола
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").ПрочитатьКакТекст()) ;
Кодирование URL адреса в ЗапросHttp
В
Запрос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 целиком, которая возникала при
обработке значений 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 мы реализовали новую настройку —
ЗаменятьСсылкиНаСущность. Она определяет, требуется ли
разрешать ссылки на сущности на их текстовое представление. Стандартно эта
настройка выключена (
Ложь). Таким образом при чтении XML
секции DTD и внешние сущности не обрабатываются.
Это изменение нарушает обратную совместимость: ранее по умолчанию обработка DTD была включена, а возможность настройки отсутствовала. Поэтому, если при чтении XML вы хотите иметь прежнее поведение, установите НастройкиЧтенияXml.ЗаменятьСсылкиНаСущность в значение Истина.
Ошибка при возврате errorlevel
Мы исправили ошибку, которая заключалась в том, что
1С:Исполнитель не возвращал errorlevel в случае
завершения с ошибкой в ОС Windows. Например, в результате
выполнения такого
скрипта, возвращался код ошибки 0, хотя
должен был вернуться код ошибки 255.
метод Скрипт() выбросить новый ИсключениеНедопустимоеСостояние("Ошибка") ;
Теперь возвращается правильный код ошибки.
Код страницы при запуске executor.cmd
Код (chcp) | Кодировка вывода |
---|---|
437 | cp437 |
866 | cp866 |
65001 | UTF-8 |
Любой другой | cp437 |