Имя: Пароль:
1C
1С v8
ДанныеФормыКоллекция.Выгрузить() Метод недоступен на клиенте
0 CrazyHorse
 
23.04.19
00:28
Доброго всем дня!
Передаю из обычной формы в общий модуль (стоят галки Сервер, Вызов сервера) ДанныеФормыСтруктура, в которой есть ДанныеФормыКоллекция
При попытке использовать методы ДанныеФормыКоллекция.Выгрузить() и ДанныеФормыКоллекция.Загрузить() пишет "Метод недоступен на клиенте".
При этом всё остальное работает как на сервере. Недовольны только эти два метода.
Видимо, я что-то глобальное недопомнимаю или пора на море. Кто может помочь?

Функция вызова в обычной форме:

Процедура КоманднаяПанельТоварыЯХ(Кнопка)
    
    Если Модифицированность() Тогда
        Ответ = Вопрос("Перед созданием документа ЯХ счет должен быть записан! Записать?",РежимДиалогаВопрос.ДаНет,60,КодВозвратаДиалога.Да,"Записать?");
        Если Ответ = КодВозвратаДиалога.Да Тогда
            Записать();
        Иначе
            Возврат;
        КонецЕсли;    
    КонецЕсли;
    
    Форма = ПолучитьФорму("Документ.ЯХПеремещение.Форма.ФормаДокумента");
    ДанныеФормы = Форма.Объект;
    ЯХ.СоздатьДокументЯХПеремещениеНаОснованииСчета(ДанныеФормы, Ссылка);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.Открыть();
    
КонецПроцедуры

Функция обработки в общем модуле:

Функция СоздатьДокументЯХПеремещениеНаОснованииСчета(ДокументЯХ, ДокументОснование) Экспорт

    Контрагент = ДокументОснование.Контрагент;    

    ЯХОтбора = ПоискЯчейкиОтбора(Контрагент);
    ДокументЯХ.ЯХОтбора = ЯХОтбора;
    
    ДокументЯХ.Дата = ТекущаяДата();
    ДокументЯХ.ДокументОснование = ДокументОснование;
    ДокументЯХ.Контрагент = Контрагент;    
    
    ТЗРеализации = ДокументОснование.Товары.Выгрузить();
    ТЗЯХ = ДокументЯХ.Товары.Выгрузить();    //ругается
    
    РезультатПодбора = НайтиЯХИсточники(ТЗРеализации, ТЗЯХ, ДокументЯХ.ЯХОтбора, Истина);
    ТЗЯХ.ЗаполнитьЗначения(ЯХОтбора, "ЯХПриемник");
    
    ДокументЯХ.Товары.Загрузить(ТЗЯХ); //ругается    
    
КонецФункции
1 palsergeich
 
23.04.19
00:44
(0) Врете батенька.
ДанныеФормыСтруктура - тип который есть только на УФ.
Из мануала.
Описание:

Структура данных для моделирования данных, редактируемых в управляемой форме
2 palsergeich
 
23.04.19
00:46
И что то мне говорит - галочка Клиент так же у этого модуля стоит.
А по правилу ближайшего контекста - если есть возможность остаться в текущем контексте, именно это и произойдет
3 CrazyHorse
 
23.04.19
12:26
по-прежнему нужна помощь
4 CrazyHorse
 
23.04.19
12:46
обошелся без использования этих методов, но всё равно хотелось бы знать, в чем проблема
5 hhhh
 
23.04.19
12:48
(4) ну не работает на клиенте метод Выгрузить(), в этом и проблема.
6 fisher
 
23.04.19
13:17
(4) Подозреваю, что коллекции "ДанныеФормы..." просто не обкатывали для использования вне контекста формы. Для них в СП даже сериализация не заявлена (хотя очевидно, что в контексте формы они сериализуются) и конструкторов у них тоже нет.
7 CrazyHorse
 
23.04.19
16:05
fisher, спасибо
8 palsergeich
 
23.04.19
21:02
(6) это не так, в общих модулях на сервере, если передать только данные формы структура метод выгрузить прекрасно работает.
Но нужно быть именно на сервере.
9 palsergeich
 
23.04.19
21:05
+ в телефонах стоят не 18650 а элементы другого типа.
10 palsergeich
 
23.04.19
21:06
(9) не в ту тему, сорри
11 palsergeich
 
23.04.19
21:11
Выгрузить (Unload)
Доступность:

Сервер, мобильное приложение(сервер).
12 Ботаник Гарден Меран
 
23.04.19
22:36
Еще бы не "сервер", если методы возвращают и принимают значение типа ТаблицаЗначений, которого нет на клиенте.
13 palsergeich
 
23.04.19
22:55
(12) А вот это неправда.
Таблица значений вполне себе существует на клиенте. Да, стандартный конструктор на клиенте не работает, но еще один конструктор - работает)
Другое дело что принципиально запрещена передача между контекстами.
14 palsergeich
 
23.04.19
23:02
Там дело в другом - на клиенте нет возможности узнать состав реквизитов и колонок в реквизитах формы.
Уточню - без обращения на сервер нельзя узнать какое количество колонок есть в (ТаблицаЗначений), например к конкретному значению обратиться можно, но самого описания реквизита формы нет.
Это на самом деле очень печалит и приходится изобретать хранилища состава реквизитов и колонок реквизитов, доступные на клиенте, для действительно сложных управляемых форм в целях оптимизации серверных вызовов, где любое обращение к контексту вызывает фриз более 5 секунд или сбивает текущее позиционирование на экране, ввод какой нибудь сложной тарифной сетки например.
15 palsergeich
 
23.04.19
23:04
(14) В общем то только потому что клиент "не знает" действительный состав реквизита формы, а только через коллекцию элементы можно получить состав отображаемых, метод Выгрузить не может быть реализован на клиенте(на самом деле может, но в 1с решили не заморачиваться, а мне приходилось реализовывать...).