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

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

При записи документа происходит обращение к общему модулю:

Что можно сделать?
---
А можно "ОбщийМодуль.РасчетныеВедомости.Модуль(1752)" строку показать, чего-то мы явно еще не знаем
---
очевидно, не надо объект передавать. Передать какую-нибудь выгрузку их табличной части, например.
Или перенести из общего модуля сюда обработку, судя по общей стилистике кода, сильно хуже не будет.
---
К сожалению, я скорее админ, чем программист. В идеале бы вообще конфигурацию не менять. Как в этом случае лучше поступить?
Процедуру ПередЗаписью() вставляем во внешнюю обработку?
---
На поддержке конфа? в теории можно поставить у модуля в свойствах галку "толстый клиент" и должно взлететь (по крайнемере данный модуль).
---
нет такой галки или не там смотрю.
Вообще конфигурация на поддержке, но обычно все-равно открывали для изменений. Сейчас работаем в базе, восстановленной из *.dt от разработчиков, с поддержки снять не могу, изменить тоже.
---
да, в обработку все переносите, это самый простой способ.
---
Анализировать обработку. Переносить код в процедуры, корректно помеченные &НаСервере и &НаКлиенте. При этом помнить, что между сервером и клиентом не передаются объекты и таблицы.
Вместо объектов передавать либо ссылки (а уже на сервере по ссылке получать объект), либо структуру с данными объекта (на сервере создавать объект и заполнять его полученными данными).
Вместо таблиц лучше бы не передавать ничего (прикиньте объём данных!), но если уж надо - выручит, например, массив структур с ключевыми полями. Опять же, на сервере запихивать этот массив в табличную часть...

В общем, дерзайте сами или кладите сюда обработку, вместе поковыряем...
---
Конфигурацию для изменений открыла.
Во внешнюю обработку перенесла процедуру ПередЗаписью из общего модуля РасчетныеВедомости.
Ошибка та же:
---
А можно "ОбщийМодуль.РасчетныеВедомости.Модуль(1752)" строку показать, чего-то мы явно еще не знаем
---
1752 строка выделена на рисунке
---
ДляРасчетныхВедомостейСервер (проблема в этом модуле, в предыдущий раз я писал не о том модуле, был невнимателен) видать не имеет галки "Клиент (обычное приложение)". Тут или ставить эту галку, или менять входные/выходные параметры, или может на время даже скопировать полностью этот общий модуль, окончание какоенибудь ему влепить и снова нашу галку. А потом уже дожидаться программиста, ведь не просто так контекст начал путаться
---
теперь надо взять эту процедуру.упорядочитьСодержание() и сделать одно из:
1) перенести ее содержимое на клиент туда, откуда она вызывается. Если это возможно, это самое простое.
2) переделать и саму процедуру и ее вызов так, чтобы передавать ей не объект, а что-то, что можно передать с клиента на сервер.
Что за процедура-то, что она делает, зачем ей целый объект?
---
Строка НовДок.Записать() из внешней обработки.
---
Закомментировала эту строку, заработало! Экономисты проверили, вроде все корректно.
АААА!!! Спасибо огромное!!!!!
---
Прикольное решение проблемы)))) Смотри чтоб потом проблем не было, так как содержание будет неупорядоченным отныне (судя по наименованию процедуры)
---
В нашем случае это нет так важно. Программа используется исключительно для загрузки документов, формирования по ним сводных ведомостей и выгрузки в другую программу.
Еще раз всем спасибо!!!