Мутабельное значение

1. Елена Ермилова (Taisa07) 26.12.16 11:17 Сейчас в теме
Добрый день!
В новой конфигурации 1С на 2017 год не получается с помощью внешней обработки сформировать сводные ведомости. В базе 2016 года после перехода на клиент-серверный вариант обработка работала, устанавливала только флажок "Клиент обычное приложение". Сейчас эта галочка стоит в общем модуле РасчетныеВедомости, но при запуске обработки выходит сообщение:
{Форма.Форма.Форма(548)}: Ошибка при вызове метода контекста (Записать)
НовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);


В обработке создается документ, заполняется и записывается:
НовДок = Документы.ВедомостьНачислений.СоздатьДокумент();
***
НовДок.Дата=НачПериода;
НовДок.Записать();


При записи документа происходит обращение к общему модулю:
Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт

***
ЭтоЗагрузка = ложь;
Если Объект.ДополнительныеСвойства.Свойство("ЭтоЗагрузка") Тогда
Если Объект.ДополнительныеСвойства.ЭтоЗагрузка Тогда
ЭтоЗагрузка = истина;
КонецЕсли;
КонецЕсли;

МДСодержание = Объект.Ссылка.Метаданные().ТабличныеЧасти.Найти("Содержание");

Если не ЭтоЗагрузка и не Объект.Проведен Тогда
Если МДСодержание <> неопределено Тогда
Если МДСодержание.Реквизиты.Найти("ВидВыплат") <> неопределено Тогда
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
КонецЕсли;
КонецЕсли;
КонецЕсли;

***
КонецПроцедуры


Что можно сделать?
Найденные решения
10. Алексей А (alexei366) 26.12.16 14:54 Сейчас в теме
(8) А можно "ОбщийМодуль.РасчетныеВедомости.Модуль(1752)" строку показать, чего-то мы явно еще не знаем
Остальные ответы
2. Д. Р. (starjevschik) 26.12.16 11:22 Сейчас в теме
(1) очевидно, не надо объект передавать. Передать какую-нибудь выгрузку их табличной части, например.
Или перенести из общего модуля сюда обработку, судя по общей стилистике кода, сильно хуже не будет.
3. J Popov (japopov) 32 26.12.16 11:55 Сейчас в теме
Анализировать обработку. Переносить код в процедуры, корректно помеченные &НаСервере и &НаКлиенте. При этом помнить, что между сервером и клиентом не передаются объекты и таблицы.
Вместо объектов передавать либо ссылки (а уже на сервере по ссылке получать объект), либо структуру с данными объекта (на сервере создавать объект и заполнять его полученными данными).
Вместо таблиц лучше бы не передавать ничего (прикиньте объём данных!), но если уж надо - выручит, например, массив структур с ключевыми полями. Опять же, на сервере запихивать этот массив в табличную часть...

В общем, дерзайте сами или кладите сюда обработку, вместе поковыряем...
4. Елена Ермилова (Taisa07) 26.12.16 11:58 Сейчас в теме
(2) К сожалению, я скорее админ, чем программист. В идеале бы вообще конфигурацию не менять. Как в этом случае лучше поступить?
Процедуру ПередЗаписью() вставляем во внешнюю обработку?
5. Алексей А (alexei366) 26.12.16 12:34 Сейчас в теме
(4) На поддержке конфа? в теории можно поставить у модуля в свойствах галку "толстый клиент" и должно взлететь (по крайнемере данный модуль).
6. Елена Ермилова (Taisa07) 26.12.16 12:47 Сейчас в теме
(5) нет такой галки или не там смотрю.
Вообще конфигурация на поддержке, но обычно все-равно открывали для изменений. Сейчас работаем в базе, восстановленной из *.dt от разработчиков, с поддержки снять не могу, изменить тоже.
Прикрепленные файлы:
7. Д. Р. (starjevschik) 26.12.16 13:20 Сейчас в теме
(4) да, в обработку все переносите, это самый простой способ.
8. Елена Ермилова (Taisa07) 26.12.16 13:45 Сейчас в теме
Конфигурацию для изменений открыла.
Во внешнюю обработку перенесла процедуру ПередЗаписью из общего модуля РасчетныеВедомости.
Ошибка та же:
{Форма.Форма.Форма(638)}: Ошибка при вызове метода контекста (Записать)
НовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
9. Елена Ермилова (Taisa07) 26.12.16 13:46 Сейчас в теме
Строка НовДок.Записать() из внешней обработки.
10. Алексей А (alexei366) 26.12.16 14:54 Сейчас в теме
(8) А можно "ОбщийМодуль.РасчетныеВедомости.Модуль(1752)" строку показать, чего-то мы явно еще не знаем
11. Елена Ермилова (Taisa07) 26.12.16 15:08 Сейчас в теме
(10) 1752 строка выделена на рисунке
Прикрепленные файлы:
12. Д. Р. (starjevschik) 26.12.16 15:14 Сейчас в теме
(8) теперь надо взять эту процедуру.упорядочитьСодержание() и сделать одно из:
1) перенести ее содержимое на клиент туда, откуда она вызывается. Если это возможно, это самое простое.
2) переделать и саму процедуру и ее вызов так, чтобы передавать ей не объект, а что-то, что можно передать с клиента на сервер.
Что за процедура-то, что она делает, зачем ей целый объект?
13. Алексей А (alexei366) 26.12.16 15:19 Сейчас в теме
(11) ДляРасчетныхВедомостейСервер (проблема в этом модуле, в предыдущий раз я писал не о том модуле, был невнимателен) видать не имеет галки "Клиент (обычное приложение)". Тут или ставить эту галку, или менять входные/выходные параметры, или может на время даже скопировать полностью этот общий модуль, окончание какоенибудь ему влепить и снова нашу галку. А потом уже дожидаться программиста, ведь не просто так контекст начал путаться
14. Елена Ермилова (Taisa07) 26.12.16 15:30 Сейчас в теме
Закомментировала эту строку, заработало! Экономисты проверили, вроде все корректно.
АААА!!! Спасибо огромное!!!!!
15. Алексей А (alexei366) 26.12.16 15:32 Сейчас в теме
(14) Прикольное решение проблемы)))) Смотри чтоб потом проблем не было, так как содержание будет неупорядоченным отныне (судя по наименованию процедуры)
16. Елена Ермилова (Taisa07) 26.12.16 15:45 Сейчас в теме
В нашем случае это нет так важно. Программа используется исключительно для загрузки документов, формирования по ним сводных ведомостей и выгрузки в другую программу.
Еще раз всем спасибо!!!
Оставьте свое сообщение