Объект расчетов не встал после переноса из УТ10 в УТ11
После переноса данных с УТ 10 на УТ11.5 не проводится документ заказа покупателю, ошибка:

Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ОбъектыРасчетовСервер.Модуль(1445)}:ВызватьИсключение (СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{ОбщийМодуль.ОбъектыРасчетовСервер.Модуль(231)}:ЗаполнитьОбъектРасчетов(Объект, МассивСтруктур, РежимЗаписи);
{ОбщийМодуль.ВзаиморасчетыСервер.Модуль(8587)}:ОбъектыРасчетовСервер.ПроверитьОбъектыРасчетовПередЗаписью(Объект, ДополненныеПараметрыМеханизма.МассивПараметров, РежимЗаписи, Отказ);
{Документ.ЗаказКлиента.МодульОбъекта(466)}:ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(2019)}:Результат = Форма.Записать(ПараметрыЗаписи);
{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(8002)}:ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Не удалось найти объект расчетов для договора Основной договор.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
Обнаружено, что если открыть форму договора и записать его, то после этого документ проводится нормально.
Программная перезапись договора не помогает. Ошибка возникает у тех договоров, где не заполнен объект расчетов.
Трассировка записи договора из формы показывает такой стек:

Поэтому можно выполнить в групповой обработке такой код:
Сообщить(ОбрабатываемыйОбъект); ВзаиморасчетыСервер.ПередЗаписью(ОбрабатываемыйОбъект, ложь); ОбрабатываемыйОбъект.Записать();

Среда: УТ 11.5.20.68. Объем 1 час.

Аналогичный перенос из УТ 10.3.21 на УАС 11.5.20.104 Перезапись на сервере не помогает, только в форме запись в форме заполняет ОбъектРасчетов
ну как видите, я у себя нашел отладчиком, что он проставляет при записи из формы. это суровое undocumented 1с и чем дальше в ERP, тем страшней.
Да, чем дальше в 1С, тем страшней, видимо ваш код работал в предыдущих версиях, а сейчас нет. Я догадываюсь что какие параметры сохраняются на форме и подставляются, а на сервере они не работают, но пока копаться в этом деле нет времени.
да, «сила» легаси-кода 1С. 😉
В моем случае помог следующий код: (для закладки Произвольный алгоритм стандартной обработки «Групповое изменение реквизитов».
// Доступные переменные:
// Объект — обрабатываемый объект
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка);
ПараметрыМеханизма = МенеджерОбъекта.ПараметрыВзаиморасчеты(Объект.Ссылка);
ДополненныеПараметрыМеханизма = ВзаиморасчетыСервер.ДополненныеПараметрыМеханизма(Объект.Ссылка, ПараметрыМеханизма);
РежимЗаписи = РежимЗаписиДокумента.Запись;
Отказ = Ложь;
УстановитьПривилегированныйРежим(Истина);
ОбъектыРасчетовСервер.ПроверитьОбъектыРасчетовПередЗаписью(Объект, ДополненныеПараметрыМеханизма.МассивПараметров, РежимЗаписи, Отказ);
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
Объект.Записать();
УстановитьПривилегированныйРежим(Ложь);
да, не просто сейчас начальные остатки автоматизировать.
Где можно найти эту обработку?
Если про групповую обработку, выслал вам на почту. Но говорят, в новых версиях УТ уже поменялся алгоритм объекта расчетов, может не взлететь.
Понял, спасибо