Передать табличную часть на сервер. Управляемые формы.
По теме из базы знаний
- Под капотом управляемых форм
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"
- Дружелюбный интерфейс итогов в диалоге табличных частей, для Управляемых форм.
- Решение задач на Управляемые формы из Сборника задач для подготовки к экзамену 1С:Специалист по платформе
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Что то не получается как я написал. Передаю значение в функцию... вроде нормально всё. Но при возвращении значения(значение типа булево). Пишет что "Нельзя изменять поле содержащее объект данных формы. Вроде в явном виде нигде ничего не меняю.... Только на стороне сервера в цикле обхожу табличную часть.
Разберитесь, чем отличается &НаСервере и &НаСервереБезКонтекста, а также зачем в описании аргументов функции ставится префикс ЗНАЧ.
Либо используйте контекстный серверный вызов без аргументов, в этом случае содержимое табличной части будет доступно на сервере. Это наиболее тяжелый вариант, поскольку на сервер едет вся форма.
Либо сериализуйте и отправляйте табличную часть на сервер вручную во внеконтекстном вызове, например, в виде массива структур.
Либо (что правильнее всего) используйте платформенные события.
Ошибка "Нельзя изменять поле содержащее объект данных формы" происходит скорее всего из-за того, что Вы используете контекстный вызов, в котором передаете табличную часть по ссылке. Таким образом, у вас на сервер передается одна табличная часть в двух экземплярах, и вот тот экземпляр, который вы передали в качестве аргумента, меняется, а на клиенте после возврата обновлен быть не может.
За такой вызов следует гнать из профессии ссаными тряпками.
Либо используйте контекстный серверный вызов без аргументов, в этом случае содержимое табличной части будет доступно на сервере. Это наиболее тяжелый вариант, поскольку на сервер едет вся форма.
Либо сериализуйте и отправляйте табличную часть на сервер вручную во внеконтекстном вызове, например, в виде массива структур.
Либо (что правильнее всего) используйте платформенные события.
Ошибка "Нельзя изменять поле содержащее объект данных формы" происходит скорее всего из-за того, что Вы используете контекстный вызов, в котором передаете табличную часть по ссылке. Таким образом, у вас на сервер передается одна табличная часть в двух экземплярах, и вот тот экземпляр, который вы передали в качестве аргумента, меняется, а на клиенте после возврата обновлен быть не может.
За такой вызов следует гнать из профессии ссаными тряпками.
(10) asved.ru,
Я в курсе чем они отличаются....
Это ты самоутвердится написал?
Разберитесь, чем отличается &НаСервере и &НаСервереБезКонтекста, а также зачем в описании аргументов функции ставится префикс ЗНАЧ.
Я в курсе чем они отличаются....
За такой вызов следует гнать из профессии ссаными тряпками.
Это ты самоутвердится написал?
(11) TODD22,
Судя по описанной ошибке, это не так.
Если когда-нибудь Вашей основной задачей станет разбор и коррекция кода, написанного коллегами, Вы еще не так выражаться будете. Причем в матюгальник.
Я в курсе чем они отличаются...
Судя по описанной ошибке, это не так.
Это ты самоутвердится написал?
Если когда-нибудь Вашей основной задачей станет разбор и коррекция кода, написанного коллегами, Вы еще не так выражаться будете. Причем в матюгальник.
не знаю только правильно ли так передавать.
так передавать нельзя, на что корректно указал asved.ru в (10).
Если вы делаете контекстный вызов сервера, табличная часть уже там доступна.
Передать в безконтекстный ДанныеФормыСтруктура нельзя. Ее перед этим необходимо сериализовать, но на клиенте родственная табличной части коллекция ТаблицаЗначений остутствует, следовательно необходимо колхозить массив структур. Или не париться и использоваться готовые события формы, а именно ПередЗаписьюНаСервере(), где без проблем совершается Отказ и откуда можно сообщить пользователю инфу через Новый СообщениеПользователю;
Таки (10) прав и причину хорошо расписал. Так не получится, я ошибся.
Можно на сервере (в контекстном серверном вызове) выгрузить табличную часть в таблицу значений, передать твоей функции параметром, а потом модифицированную таблицу значений загрузить обратно в табличную часть.
Можно на сервере (в контекстном серверном вызове) выгрузить табличную часть в таблицу значений, передать твоей функции параметром, а потом модифицированную таблицу значений загрузить обратно в табличную часть.
(15) TODD22, Ну так я про тоже самое и написал. Только "подготовка данных" заключается в методе Выгрузить().
ЗЫ. Если решается задача глобальной модификации табличной части, то это как раз тот случай, когда использование контекстного серверного вызова полностью оправдано. Альтернативы с "упаковкой" данных клиента для неконтекстного вызова и загрузкой результата на клиенте еще менее оптимальны при большом количестве строк.
ЗЫ. Если решается задача глобальной модификации табличной части, то это как раз тот случай, когда использование контекстного серверного вызова полностью оправдано. Альтернативы с "упаковкой" данных клиента для неконтекстного вызова и загрузкой результата на клиенте еще менее оптимальны при большом количестве строк.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот