infostart-hub / toolkit

Infostart Toolkit
https://infostart.ru/marketplace/toolkit/
73 stars 7 forks source link

Синтаксические ошибки при работе в веб-клиенте #410

Closed d-hurricane closed 2 years ago

d-hurricane commented 3 years ago

Описание ошибки Во время работы в информационной базе используя веб-клиент в неожиданные моменты времени могут возникать ошибки примерно одного содержания:

Процедура или функция с указанным именем не определена...

Связано это с тем, что код в некоторых модулях расширения не рассчитан на работу в веб-клиенте. Проверка конфигурации выявила 9 синтаксических ошибки:

{InfostartToolkitPROF ОбщийМодуль.ИТК_БуферОбменаКлиент.Модуль(21,23)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяВременногоФайла = <<?>>ПолучитьИмяВременногоФайла(); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_ОбщийКлиентСервер.Модуль(667,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON) <<?>>ЗаписатьJSON(ЗаписьJSON, Коллекция); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_ОбщийКлиентСервер.Модуль(677,14)}: Процедура или функция с указанным именем не определена (ПрочитатьJSON) Результат = <<?>>ПрочитатьJSON(ЧтениеJSON); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_РедакторКодаКлиент.Модуль(952,19)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ПолноеИмяФайла = <<?>>ПолучитьИмяВременногоФайла("zip"); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_РедакторКодаКлиентСервер.Модуль(144,40)}: Переменная не определена (ПереносСтрокJSON) Параметры = Новый ПараметрыЗаписиJSON(<<?>>ПереносСтрокJSON.Нет); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_РедакторКодаКлиентСервер.Модуль(154,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON) <<?>>ЗаписатьJSON(ЗаписьJSON, Коллекция); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_Строки.Модуль(1348,14)}: Переменная не определена (СериализаторXDTO) СхемаXDTO = <<?>>СериализаторXDTO.ЗаписатьXDTO(Объект); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_Строки.Модуль(1374,24)}: Переменная не определена (ФабрикаXDTO) XDTOLocalStringType = <<?>>ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringType")); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_Строки.Модуль(1374,44)}: Переменная не определена (ФабрикаXDTO) XDTOLocalStringType = ФабрикаXDTO.Создать(<<?>>ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringType")); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_Строки.Модуль(1379,25)}: Переменная не определена (ФабрикаXDTO) LocalStringItemType = <<?>>ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringItemType")); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_Строки.Модуль(1379,45)}: Переменная не определена (ФабрикаXDTO) LocalStringItemType = ФабрикаXDTO.Создать(<<?>>ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringItemType")); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_ФормаКлиент.Модуль(1340,21)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяПервогоФайла = <<?>>ПолучитьИмяВременногоФайла("txt"); (Проверка: Веб-клиент) {InfostartToolkitPROF ОбщийМодуль.ИТК_ФормаКлиент.Модуль(1341,21)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяВторогоФайла = <<?>>ПолучитьИмяВременногоФайла("txt"); (Проверка: Веб-клиент) {InfostartToolkitPROF Обработка.ИТК_КонсольРазработчика.Форма.Основная.Форма(4660,21)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяПервогоФайла = <<?>>ПолучитьИмяВременногоФайла(Расширение); (Проверка: Веб-клиент) {InfostartToolkitPROF Обработка.ИТК_КонсольРазработчика.Форма.Основная.Форма(4661,21)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяВторогоФайла = <<?>>ПолучитьИмяВременногоФайла(Расширение); (Проверка: Веб-клиент) {InfostartToolkitPROF Обработка.ИТК_КонсольРазработчика.Форма.АнализПланаЗапроса.Форма(441,13)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла) ИмяФайла = <<?>>ПолучитьИмяВременногоФайла("sqlplan"); (Проверка: Веб-клиент) {InfostartToolkitPROF Обработка.ИТК_Пользователи.Форма.ЗапускПодПользователем.Форма(57,2)}: Процедура или функция с указанным именем не определена (ЗапуститьСистему) <<?>>ЗапуститьСистему(Команда); (Проверка: Веб-клиент)

Сценарий воспроизведения Шаги по воспроизведению:

  1. Запустить ИБ в веб-клиенте.
  2. Перейти к любому списку объектов ИБ, где в командной панели есть подменю инструментов разработчика. Например, для конфигураций на БСП открыть справочник пользователей.
  3. Выделить любой элемент списка и используя подменю инструментов открыть "Редактор объекта".

Появится сообщение об ошибке: image

Ожидаемое поведение, если бы ошибки не было При работе с инструментами в веб-клиенте должны отсутствовать сообщения об ошибках синтаксиса встроенного языка 1С.

Окружение: Infostart Toolkit 2.0.3

Платформа: 8.3.17.1989 (Linux x86-64) Режим БД: клиент-серверный

Конфигурация: 1С:Комплексная автоматизация 2 (2.5.6.220) Основной режим запуска: Управляемое приложение Режим совместимости: Версия8_3_16 Версия БСП: 3.1.3.535

Клиент: ОС: Windows x86 () Язык: ru_RU Режим запуска: Управляемое приложение

d-hurricane commented 3 years ago

В качестве временного предлагаю следующее решение - обернуть все синтаксические конструкции, недоступные в веб-клиенте, в директивы препроцессора по следующему шаблону:

#Если Не ВебКлиент Тогда
    // текущий код
#Иначе
    ВызватьИсключение СтрШаблон(НСтр("ru = ''Внутренняя ошибка: метод недоступен при работе в веб-клиенте");
#КонецЕсли

Таким образом мы обеспечим минимальную работоспособность инструментов за счет отсутствия ошибок компиляции модулей.

Evg-lylyk commented 2 years ago

Поработал с этим в 2.2.0