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) очевидно, не надо объект передавать. Передать какую-нибудь выгрузку их табличной части, например.
Или перенести из общего модуля сюда обработку, судя по общей стилистике кода, сильно хуже не будет.
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) да, в обработку все переносите, это самый простой способ.
3. japopov 53 26.12.16 11:55 Сейчас в теме
Анализировать обработку. Переносить код в процедуры, корректно помеченные &НаСервере и &НаКлиенте. При этом помнить, что между сервером и клиентом не передаются объекты и таблицы.
Вместо объектов передавать либо ссылки (а уже на сервере по ссылке получать объект), либо структуру с данными объекта (на сервере создавать объект и заполнять его полученными данными).
Вместо таблиц лучше бы не передавать ничего (прикиньте объём данных!), но если уж надо - выручит, например, массив структур с ключевыми полями. Опять же, на сервере запихивать этот массив в табличную часть...

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

Вакансии

Ведущий инженер - программист 1С
Москва
зарплата от 200 000 руб.
Полный день

Ведущий программист 1С
Нижний Новгород
зарплата от 100 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству