Пятница, 19.04.2024, 11:23
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Прочее » Вопрос по консоли кода в портативных ИР (Передача параметров клиент-сервер в консоли кода)
Вопрос по консоли кода в портативных ИР
sweep4Дата: Понедельник, 30.03.2020, 17:59 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 17
Статус: Оффлайн
Платформа: 8.3.15.1830
Режим БД: клиент-серверный
Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.4.6.160)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим совместимости: Версия8_3_14
Конфигурация. Версия БСП: 3.0.1.314
Инструменты разработчика. Версия: Портативные 5.23p
Инструменты разработчика. Объекты на сервере: Да
Инструменты разработчика. Серверный модуль: Да
Клиент. ОС: Windows x86-64 Microsoft Windows 8.1 version 6.3  (Build 9600)
Клиент. Приложение: Обычное приложение 64б
Клиент. От имени администратора Windows: Нет
Клиент. Текущий язык системы: ru
Сервер. ОС: Windows x86-64 Microsoft Windows 10 version 10.0  (Build 14393)

Ситуация. Возникла необходимость выполнить в консоли кода некоторый код. Для примера позаимствую код из подсистемы БСП "Версионирование объектов". Вообще я хотел исследовать в ИР тело функции ВерсионированиеОбъектов.РазборВерсии() и посмотреть содержимое внутренних структур. Вот пример кода (текстом), который я пытаюсь выполнить в консоли кода:


Код
СведенияОВерсии = ВерсионированиеОбъектов.СведенияОВерсииОбъекта(Ссылка, НомерВерсии);

Результат = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(СведенияОВерсии.ВерсияОбъекта, Ссылка);
Результат.Вставить("ИмяОбъекта",     Строка(Ссылка));
Результат.Вставить("АвторИзменения", СокрЛП(Строка(СведенияОВерсии.АвторВерсии)));
Результат.Вставить("ДатаИзменения",  СведенияОВерсии.ДатаВерсии);
Результат.Вставить("Комментарий",    СведенияОВерсии.Комментарий);


Вот скриншот, где я отметил, что пытаюсь выполнить код в контексте сервера, т.к. в конфигурации есть подписки на объекты, т.е. мутабельные значения, и в контексте клиента будут ошибки.

http://prntscr.com/rpiw7f

В-принципе код выполнился на серверной стороне, но возникает следующая ошибка:

{ВнешняяОбработка.ирПортативный.МодульОбъекта(2926)}: Ошибка при вызове метода контекста (ВыполнитьКоманду)
мДополнительныеОтчетыИОбработки.ВыполнитьКоманду(Параметры);
по причине:
Попытка передачи с сервера клиенту мутабельного значения 1-го параметра метода ВыполнитьКоманду ().

Насколько я понимаю ситуацию, этим мутабельным значением являются таблицы значений в возвращаемой структуре данных. Правильно ли я понимаю, что переменные, которые формирует консоль кода, возвращаются обратно напрямую, без заворачивания в хранилище значения, с последующей "распаковкой" на клиенте ?
 
tormozitДата: Среда, 01.04.2020, 08:03 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6163
Репутация: 156
Статус: Оффлайн
В портативном варианте инструментов такая проблема есть и исправлять ее не планируется. Чтобы обойти проблему нужно отключить автозаполнение параметров и удалить все параметры выхода.
В остальных вариантах инструментов эта проблема решена - мутабельные значения выявляются и очищаются автоматически.
 
sweep4Дата: Вторник, 07.04.2020, 09:41 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 17
Статус: Оффлайн
Что-то непонятное происходит. Продолжаю работать в консоли кода с указанными рекомендациями об отключении автозаполнения параметров. Но сегодня с утра забыл автозаполнение выключить, выполнил код на сервере, ии...

Код

  Параметр _ВыборкаВерсий на выходе имел мутабельное значение (Выборка из результата запроса) и был очищен
Параметр _ВыборкаОбъектов на выходе имел мутабельное значение (Выборка из результата запроса) и был очищен
Параметр _Запрос на выходе имел мутабельное значение (Запрос) и был очищен


Портативные инструменты тоже очищают мутабельные значения на выходе, оказываццо. Может я просто на какую-то багу наткнулся случайно ? Немного поэкспериментировал, и вот какие результаты получил. Ошибка эта возникает при разборе версий документа "Экземпляр бюджета" в ERP 2.4 и не возникает при разборе какого-нибудь другого документа. Поэтому видоизменил слегка код на такой:


Код
СведенияОВерсии = ВерсионированиеОбъектов.СведенияОВерсииОбъекта(Ссылка, НомерВерсии);

Результат = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(СведенияОВерсии.ВерсияОбъекта, Ссылка);
Результат.Вставить("ИмяОбъекта",     Строка(Ссылка));
Результат.Вставить("АвторИзменения", СокрЛП(Строка(СведенияОВерсии.АвторВерсии)));
Результат.Вставить("ДатаИзменения",  СведенияОВерсии.ДатаВерсии);
Результат.Вставить("Комментарий",    СведенияОВерсии.Комментарий);

ХЗ1 = Новый ХранилищеЗначения(СведенияОВерсии);
ХЗ2 = Новый ХранилищеЗначения(Результат);

СведенияОВерсии = Неопределено;
Результат = Неопределено;


И посмотрел, в чём была разница в возвращаемых структурах. Разница оказалась в том, что у экземпляра бюджета в структурах добавились табличные документы. Тогда у меня возникла мысль сделать вот такую простую проверку в консоли кода:

Код

  Результат = Новый ТабличныйДокумент;

Выполняется в контексте клиента и выдаёт ошибку в контексте сервера в портативных инструментах:


Код
{ВнешняяОбработка.ирПортативный.МодульОбъекта(2926)}: Ошибка при вызове метода контекста (ВыполнитьКоманду)
         мДополнительныеОтчетыИОбработки.ВыполнитьКоманду(Параметры);
по причине:
Попытка передачи с сервера клиенту мутабельного значения 1-го параметра метода ВыполнитьКоманду ().


Если портативные инструменты всё-таки очищают мутабельные значения, может табличные документы тоже есть смысл обработать за компанию ?
 
tormozitДата: Вторник, 07.04.2020, 20:34 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6163
Репутация: 156
Статус: Оффлайн
sweep4, спасибо. Ошибку воспроизвел.
http://www.hostedredmine.com/issues/868156
 
tormozitДата: Воскресенье, 12.04.2020, 21:14 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 6163
Репутация: 156
Статус: Оффлайн
Исправлено в 5.27
 
Форум » Основной » Прочее » Вопрос по консоли кода в портативных ИР (Передача параметров клиент-сервер в консоли кода)
  • Страница 1 из 1
  • 1
Поиск: