Добрый день!
В новой конфигурации 1С на 2017 год не получается с помощью внешней обработки сформировать сводные ведомости. В базе 2016 года после перехода на клиент-серверный вариант обработка работала, устанавливала только флажок "Клиент обычное приложение". Сейчас эта галочка стоит в общем модуле РасчетныеВедомости, но при запуске обработки выходит сообщение:
В обработке создается документ, заполняется и записывается:
При записи документа происходит обращение к общему модулю:
Что можно сделать?
В новой конфигурации 1С на 2017 год не получается с помощью внешней обработки сформировать сводные ведомости. В базе 2016 года после перехода на клиент-серверный вариант обработка работала, устанавливала только флажок "Клиент обычное приложение". Сейчас эта галочка стоит в общем модуле РасчетныеВедомости, но при запуске обработки выходит сообщение:
{Форма.Форма.Форма(548)}: Ошибка при вызове метода контекста (Записать)
НовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
НовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
В обработке создается документ, заполняется и записывается:
НовДок = Документы.ВедомостьНачислений.СоздатьДокумент();
***
НовДок.Дата=НачПериода;
НовДок.Записать();
***
НовДок.Дата=НачПериода;
НовДок.Записать();
При записи документа происходит обращение к общему модулю:
Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт
***
ЭтоЗагрузка = ложь;
Если Объект.ДополнительныеСвойства.Свойство("ЭтоЗагрузка") Тогда
Если Объект.ДополнительныеСвойства.ЭтоЗагрузка Тогда
ЭтоЗагрузка = истина;
КонецЕсли;
КонецЕсли;
МДСодержание = Объект.Ссылка.Метаданные().ТабличныеЧасти.Найти("Содержание");
Если не ЭтоЗагрузка и не Объект.Проведен Тогда
Если МДСодержание <> неопределено Тогда
Если МДСодержание.Реквизиты.Найти("ВидВыплат") <> неопределено Тогда
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
***
КонецПроцедуры
Показать***
ЭтоЗагрузка = ложь;
Если Объект.ДополнительныеСвойства.Свойство("ЭтоЗагрузка") Тогда
Если Объект.ДополнительныеСвойства.ЭтоЗагрузка Тогда
ЭтоЗагрузка = истина;
КонецЕсли;
КонецЕсли;
МДСодержание = Объект.Ссылка.Метаданные().ТабличныеЧасти.Найти("Содержание");
Если не ЭтоЗагрузка и не Объект.Проведен Тогда
Если МДСодержание <> неопределено Тогда
Если МДСодержание.Реквизиты.Найти("ВидВыплат") <> неопределено Тогда
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
***
КонецПроцедуры
Что можно сделать?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Анализировать обработку. Переносить код в процедуры, корректно помеченные &НаСервере и &НаКлиенте. При этом помнить, что между сервером и клиентом не передаются объекты и таблицы.
Вместо объектов передавать либо ссылки (а уже на сервере по ссылке получать объект), либо структуру с данными объекта (на сервере создавать объект и заполнять его полученными данными).
Вместо таблиц лучше бы не передавать ничего (прикиньте объём данных!), но если уж надо - выручит, например, массив структур с ключевыми полями. Опять же, на сервере запихивать этот массив в табличную часть...
В общем, дерзайте сами или кладите сюда обработку, вместе поковыряем...
Вместо объектов передавать либо ссылки (а уже на сервере по ссылке получать объект), либо структуру с данными объекта (на сервере создавать объект и заполнять его полученными данными).
Вместо таблиц лучше бы не передавать ничего (прикиньте объём данных!), но если уж надо - выручит, например, массив структур с ключевыми полями. Опять же, на сервере запихивать этот массив в табличную часть...
В общем, дерзайте сами или кладите сюда обработку, вместе поковыряем...
Конфигурацию для изменений открыла.
Во внешнюю обработку перенесла процедуру ПередЗаписью из общего модуля РасчетныеВедомости.
Ошибка та же:
Во внешнюю обработку перенесла процедуру ПередЗаписью из общего модуля РасчетныеВедомости.
Ошибка та же:
{Форма.Форма.Форма(638)}: Ошибка при вызове метода контекста (Записать)
НовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
ПоказатьНовДок.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
НовДок.Записать();
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
{ОбщийМодуль.РасчетныеВедомости.Модуль(1752)}: Ошибка при вызове метода контекста (УпорядочитьСодержание)
ДляРасчетныхВедомостейСервер.УпорядочитьСодержание(Объект);
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода УпорядочитьСодержание ().
(11) ДляРасчетныхВедомостейСервер (проблема в этом модуле, в предыдущий раз я писал не о том модуле, был невнимателен) видать не имеет галки "Клиент (обычное приложение)". Тут или ставить эту галку, или менять входные/выходные параметры, или может на время даже скопировать полностью этот общий модуль, окончание какоенибудь ему влепить и снова нашу галку. А потом уже дожидаться программиста, ведь не просто так контекст начал путаться
(8) теперь надо взять эту процедуру.упорядочитьСодержание() и сделать одно из:
1) перенести ее содержимое на клиент туда, откуда она вызывается. Если это возможно, это самое простое.
2) переделать и саму процедуру и ее вызов так, чтобы передавать ей не объект, а что-то, что можно передать с клиента на сервер.
Что за процедура-то, что она делает, зачем ей целый объект?
1) перенести ее содержимое на клиент туда, откуда она вызывается. Если это возможно, это самое простое.
2) переделать и саму процедуру и ее вызов так, чтобы передавать ей не объект, а что-то, что можно передать с клиента на сервер.
Что за процедура-то, что она делает, зачем ей целый объект?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот