|
Передать ТЗ с сервера на клиент | ☑ | ||
---|---|---|---|---|
0
John83
16.03.22
✎
22:16
|
УПП 1.3 толстый клиент
Нужно из привилегированного модуля передать ТЗ в модуль внешней обработки заполнения ТЧ. Пишу в функции прив. модуля тз = ОбщегоНазначения.ТаблицаЗначенийВМассив(НаборДвижений); Возврат тз; Но ругается Попытка передачи с сервера клиенту мутабельного значения 2-го параметра метода Это же массив. Что ему не нравится? |
|||
1
VladZ
16.03.22
✎
22:44
|
(0) Не нужно передавать ТЗ с сервера на клиент.
|
|||
2
Мимохожий Однако
16.03.22
✎
23:16
|
из ТЗ в массив. Передать. А потом из массива в ТЗ )
|
|||
3
John83
16.03.22
✎
23:27
|
(2) ОбщегоНазначения.ТаблицаЗначенийВМассив(НаборДвижений)
оно так и делает, по факту передается массив. Переменную неудачно обозвал |
|||
4
sandal_r
16.03.22
✎
23:59
|
где-то внутри НаборДвижений лежит мутабельный объект
|
|||
5
Said_We
17.03.22
✎
00:46
|
Объекты бывают мутабельные и иммутабельные. Значение иммутабельного объекта нельзя изменить после того, как он был создан, а значение мутабельного можно.
1С решило что массив иммутабельный объект, а ТЗ мутабельный. Логики тут можно не искать. Просто где нарисовали возможность передачи с клиента и обратно, назвали иммутабельным объектом. А где нет, там значит мутабельный объект. Как только нарисуют передачу ТЗ с клиента на сервер и обратно (грозятся каждый раз более 10 лет), то и ТЗ перестанет быть мутабельным объектом. |
|||
6
OldCondom
17.03.22
✎
01:53
|
Нет никакого смысла передавать ТЗ на клиент.
На клиенте рисуем и складываем 2+2, все. |
|||
7
Chai Nic
17.03.22
✎
07:02
|
(5) По-моему тут дело не в мутабельности, а во-первых в сериализуемости, во-вторых в совместимости с джаваскриптом.
|
|||
8
John83
17.03.22
✎
10:58
|
(4) так и есть - ссылка на документ
|
|||
9
timurhv
17.03.22
✎
11:10
|
(8) Ссылка - не мутабельный.
НаборДвижений - тут что? Судя по названию - не таблица значений. НаборДвижений.Выгрузить() ? |
|||
10
acht
17.03.22
✎
12:20
|
(7) > в совместимости с джаваскриптом.
И животноводство! |
|||
11
John83
17.03.22
✎
12:24
|
(9) НаборДвижений = Документы.АктСверкиВзаиморасчетов.ПустаяСсылка().ПоДаннымОрганизации.Выгрузить()
|
|||
12
Малыш Джон
17.03.22
✎
13:28
|
(11) Выгрузить() - это ТЗ
|
|||
13
John83
17.03.22
✎
13:38
|
(12) фыва = ОбщегоНазначения.ТаблицаЗначенийВМассив(НаборДвижений);
возврат фыва |
|||
14
Малыш Джон
17.03.22
✎
13:44
|
(13) ну значит, как и писали выше - в одной из колонок таблицу - мутабельное значение
|
|||
15
Малыш Джон
17.03.22
✎
13:45
|
(13) Попробуй выгружать не все сразу, а добавлять по колонке и пробовать, на какой споткнется
|
|||
16
John83
17.03.22
✎
13:52
|
(15) что тут мутабельное?
https://ibb.co/6XxWRPd |
|||
17
Малыш Джон
17.03.22
✎
13:57
|
(16) ¯\_(ツ)_/¯
|
|||
18
Малыш Джон
17.03.22
✎
13:58
|
(16) как говорят герои: никто, кроме тебя.
Пробуй (15), потом нам расскажешь, что именно было. |
|||
19
John83
17.03.22
✎
14:15
|
сделал вообще
НаборДвижений.Очистить(); НаборДвижений.Свернуть("Дата","Дебет, Кредит"); тз = ОбщегоНазначения.ТаблицаЗначенийВМассив(НаборДвижений); Возврат тз; т.е. пустая тз и простые типы - все равно {ВнешняяОбработка.Комплектация_ЗаполниениеДолейСтоимости.МодульОбъекта(59)}: Ошибка при вызове метода контекста (ЗаполнитьПоДаннымБухгалтерскогоУчета) фыва = крассПривилегированныйМодуль.ЗаполнитьПоДаннымБухгалтерскогоУчета(СоотвОбеъкт, ФильтрСписокСчетов, МетаданныеПоДокументам); по причине: Попытка передачи с сервера клиенту мутабельного значения 2-го параметра метода ЗаполнитьПоДаннымБухгалтерскогоУчета (). |
|||
20
John83
17.03.22
✎
14:15
|
и почему 2го параметра?
|
|||
21
1Сергей
17.03.22
✎
14:22
|
(20) ну а что в ФильтрСписокСчетов?
|
|||
22
John83
17.03.22
✎
14:29
|
(21) ФильтрСписокСчетов = Новый массив();
внутри счета БУ |
|||
23
1Сергей
17.03.22
✎
14:32
|
(22) точно не реквизит объекта или формы?
|
|||
24
Малыш Джон
17.03.22
✎
14:33
|
(19) а СоотвОбеъкт - это чисто случайно не соответствие объектов?
|
|||
25
John83
17.03.22
✎
14:34
|
(24) СоотвОбеъкт = Новый Соответствие();
Для Каждого рек Из Метаданные.Документы.АктСверкиВзаиморасчетов.Реквизиты Цикл СоотвОбеъкт.Вставить(рек.Имя, Объект[рек.Имя]); КонецЦикла; |
|||
26
John83
17.03.22
✎
14:36
|
(23) ФильтрСписокСчетов = Новый массив();
Для каждого СтрокаСчета Из Объект.СписокСчетов Цикл Если НЕ ЗначениеЗаполнено(СтрокаСчета.Счет) или СтрокаСчета.УчаствуетВРасчетах = Ложь Или Найти(СтрокаСчета.Счет.Код, 60)>0 Тогда Продолжить; Иначе ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет); КонецЕсли; КонецЦикла; |
|||
27
Малыш Джон
17.03.22
✎
14:45
|
(25) мммм, какая неожиданность...
объект - мутабельный |
|||
28
John83
17.03.22
✎
14:58
|
в прив. модуле сделал
Функция ЗаполнитьПоДаннымБухгалтерскогоУчета(Знач Объект, Знач ФильтрСписокСчетов, Знач МетаданныеПоДокументам) Экспорт Не знаю, на сколько правильно, но заработало Всем спасибо! |
|||
29
ДедМорроз
17.03.22
✎
21:55
|
Массив содержит только значения,а Т.З.в обычных формах - значения и оформление,вот последнее передать нельзя,т.к.оно не сериализуется.
И именно из-за этих косяков в управляемых формах Т.З.нет на клиенте,т.к.оформление для web-клиента не придумали,а сделать Т.З.без оформления было стыдно. Хотя,ДанныеФормыКоллекция это и есть Т.З.и некоторая часть оформления,а другая передается в составе элементов формы. |
|||
30
acht
17.03.22
✎
23:06
|
(29) > Массив содержит только значения,а Т.З.в обычных формах - значения и оформление
https://www.youtube.com/watch?v=OGsHshpYkiU |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |