Добрый день, подскажите нужно передать структуру с сервера на клиент. Видел вариант как передать её в функцию через параметры и потом вызвать на клиенте, но на клиент ругается что ни чего не знает о перемененной указанной в параметре, а без неё ругается что не хватает этих параметров, замкнутый круг ?
&НаСервере
Функция Вопросы(Структура1)
Структура = Структура1;
Возврат Структура;
КонецФункции
&НаКлиенте
Процедура ВыборПриИзменении(Элемент)
Вопрос = Вопросы(Структура);
Для Каждого Элемент Из Вопрос Цикл
Сообщить(Элемент.Ключ + " " + Элемент.Значение);
КонецЦикла;
КонецПроцедуры
Показать
{Документ.Форма.ФормаДокумента1.Форма(274,38)}: Переменная не определена (Структура)
Вопрос = Вопросы(<<?>>Структура); (Проверка: Тонкий клиент)
(1) Все манипуляции с клиентом-сервером и непонятными ошибками лучше делать через временное хранилище
Передавать параметр - адрес временного хранилища, который возвращает функция ПоместитьВоВременноеХранилище()
&НаСервере
Функция Вопросы(Структура1)
Структура = Структура1;
Возврат Структура;
КонецФункции
&НаКлиенте
Процедура ВыборПриИзменении(Элемент)
Структура = Новый Структура("Ключ", "Значение");
Вопрос = Вопросы(Структура);
Для Каждого Элемент Из Вопрос Цикл
Сообщить(Элемент.Ключ + " " + Элемент.Значение);
КонецЦикла;
КонецПроцедуры
(6) Так на клиенте структура не определена, правильно ругается.
&НаСервере
Функция Вопросы()
Структура = Новый Структура;
Возврат Структура;
КонецФункции
&НаКлиенте
Процедура ВыборПриИзменении(Элемент)
Вопрос = Вопросы();
Для Каждого Элемент Из Вопрос Цикл
Сообщить(Элемент.Ключ + " " + Элемент.Значение);
КонецЦикла;
КонецПроцедуры
(16) Не надо их туда передавать, потому что это передача с клиента на сервер.
А ты спрашивал, как передать с сервера на клиент.
Так что с клиента вызываешь серверную функцию (без параметров), в которой формируется твоя структура и которую ты потом вернешь на клиент.
Ферштейн?
понял только видимо это не мой случай. Я получаю данные для клиента в процедуре их надо передать на клиент как я уже писал вижу это через функцию, но возникают ошибки с параметрами. Вот как вы бы их передали ?
&НаКлиенте
Процедура ВыборПриИзменении(Элемент)
// В это месте встань отладчиком и посмотри, что содержится в переменной Структура
Вопрос = Вопросы(Структура);
Для Каждого Элемент Из Вопрос Цикл
Сообщить(Элемент.Ключ + " " + Элемент.Значение);
КонецЦикла;
КонецПроцедуры
(1) Все манипуляции с клиентом-сервером и непонятными ошибками лучше делать через временное хранилище
Передавать параметр - адрес временного хранилища, который возвращает функция ПоместитьВоВременноеХранилище()
(35)я вам написал выше, если вы читать умеете, причитайте внимательно, а не между строк как вы умеете. и мастером себя в отличии от вас я не считаю, что так же написано выше.
(37) Ты бы у меня даже в стажеры не прошел бы, если считаешь, что структуру нельзя передать с клиента на сервер и обратно "как есть". А уж за использование ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр - и в джуны не прошел бы.
(40) как и ты у меня, таких выгоняю сразу, кто считает себя местным гением и вправе всех поучать. про передачу структуры как есть с сервера на клиент вроде как никто не писал. так что еще раз. сними корону, голову раздавит и перечитай.
(40)просто расскажи человеку какие данные можно передавать между сервером и клиентом и обратно, что такое примитивные типы, что такое мутабельные значения. он тебе спасибо скажет. а ты будешь глубоко спать с короной на ушах)))) но видимо у вас большая команды: вы и ...вы, остальных всех выгоняете))))
(46)У ТС сложности с возвратом данных с одной процедуры в другую даже с учетом того, что в теме есть примеры кода.
Мало хотеть рассказать, надо чтобы хотели слушать и понимать.
Это же не какие-то сокровенные знания, это основы.
Как из одной процедуры передать данные в другую процедуру.
Как вернуть данные функцией.
Тут ведь даже не о мутабельных значениях вопрос.
Еще конечно важно правильно формулировать вопросы. А то даже если получишь ответы, они никак не помогут.
(49) я с вами соглашусь и в тоже время не соглашусь. надо понимать, что тут на форуме нет ограничений по знаниям 1С. вопросы задают как новички и самоучки, так и с опытом. поэтому не всегда можно ждать правильность вопроса с высоты нашего знания.
но правильно сформулированный вопрос, это на половину ответ))) отличная штука метод "утенка" ))
(50)Если в 2х словах, это переменные с типом, которые нельзя передать с клиента на сервер и обратно.
Пример - ДокументОбъект, СписокЗначений и подобные.
(54)Не уточнил, сразу, извиняюсь - он мутабельный в обычном приложении.
То есть если будет модуль с флагом Сервер и Вызов сервера - с него в обычном приложении не вернуть список значений в клиент-серверной базе.
(54)Список значений не удачный пример, это тяжкое наследие обычного приложения.
Мутабельные - все объектные - справочник объект, документ объект, ПВХ объект, объект обработки и подобные.
https://kb.mista.ru/article.php?id=941
(57) Читал это определение. Иными словами, понятие "мутабельное значение" имеет смысл только в режиме Обычного приложения и относится к тем типам данных, про которые указано, что они мутабельные в СП? =) Я думал будет какой-нибудь более прозрачный критерий, объясняющий суть.
(58) Руководство разработчика.
4.3. Типы данных и переменные
Типы бывают мутабельными (изменяемыми) и иммутабельными (неизменяемыми). Иммутабельный тип ‑ это тип, для которого после создания значения невозможно изменить состояние объекта. Подмножеством иммутабельных типов являются примитивные типы: Неопределено, NULL, Число, Дата, Строка, Булево. Если, например, со значением типа Число выполняется какая-либо операция ‑ создается новое значение типа Число, но не происходит модификации уже существующего объекта. В то же время примером мутабельного типа служит, например, тип, описывающий какой-либо элемент справочника (подробнее см. здесь). Мутабельный тип позволяет изменять состояние объекта этого типа, не создавая нового объекта. Еще одно различие между объектами мутабельных и иммутабельных типов заключается в том, как выполняется сравнение этих объектов:
● Значения иммутабельных типов сравниваются «по значению», поэтому значения разных переменных типа Число будут равны, если для создания каждого значения использовалось одно и тоже значение числа.
● Значения мутабельных типов сравниваются «по ссылке». Другими словами, сравниваются адреса памяти, где размещаются значения. Таким образом, два значения мутабельного типа, даже ссылающихся на один и тот же физический элемент данных (например, элемент справочника с одной и той же ссылкой), всегда не равны друг-другу. Значение мутабельного типа равно только само себе.
(64) Тогда у меня, скорее, вопрос в том, есть ли какая-либо закономерность между определённым мутабельным типом и его возможностью передачи клиент/сервер?
(58) Если рассматривать только особенность передачу между клиентом и сервером, то по сути да.
В управляемом приложении текст ошибки при передаче таких объектов изменился.
Вместо "Попытка передачи мутабельного значения" как это было в обычном приложении, теперь выдается "Ошибка преобразования данных XDTO" (если вернуть объект) или "Отсутствует отображение типа" (если вернуть таблицу значений). Может еще какие есть.
С объектами есть и другие проблемы - их нельзя поместить во временное хранилище чтобы потом передать в параметр в фонового задания. При получении из временного хранилища в фоновом задании такие параметры будут неопределено.
Я ведь и написал, что "не работает" и это был ответ на определение "переменные с типом, которые нельзя передать с клиента на сервер и обратно." без указания режима запуска. Да и по теме мы вроде бы пришли к выводу, что невозможность передачи не может являться определением мутабельности.