Ошибка по заданиям распределений взаиморасчетов РИБ УТ 11.5
Ошибка проявляется таким образом:
Ошибка чтения файла сообщения обмена: Ошибка при вызове метода контекста (ПрочитатьИзменения)
{РегистрСведений.ЗаданияКРаспределениюВзаиморасчетов.МодульМенеджера(94)}:Задания.Записать(Ложь);
{РегистрСведений.ЗаданияКРаспределениюВзаиморасчетов.МодульМенеджера(118)}:СоздатьЗадания(МенеджерРегистра, ВидыЗаданий, НаборЗаписей, МенеджерВременныхТаблиц, ДанныеКРегистрацииЗаданий);
{РегистрНакопления.РасчетыСПоставщиками.МодульНабораЗаписей(643)}:РегистрыСведений.ЗаданияКРаспределениюВзаиморасчетов.СоздатьЗаданияПриОбменеДанными(ЭтотОбъект,
{Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(226)}:ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, КоличествоЭлементовВТранзакции);
{Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(79)}:ПрочитатьФайлСообщенияОбмена(Отказ, ЧтениеXML, ЗагрузитьТолькоПараметры, ЗагрузитьМетаданные, СообщениеОбОшибке);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5078)}:ОбработкаОбменаДанными.ВыполнитьЗагрузкуДанных(Отказ, ТолькоПараметры, СообщениеОбОшибке);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(8738)}:ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(1706)}:ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(9011)}:ВыполнитьДействиеОбмена(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(30)}:ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6474)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; // АПК:487 Исполняемый код безопасен.
{ОбщийМодуль.ДлительныеОперации.Модуль(1714)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(542)}:ВызватьПроцедуру(ИмяПроцедуры, ПараметрыЭкспортнойПроцедуры, ПараметрыВыполнения);
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(1240)}:Результат = ДлительныеОперации.ВыполнитьВФоне(
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Ошибка при вызове метода контекста (Записать)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Запись не верна! Значение поля "Организация" не может быть пустым!: ЗаданияКРаспределениюВзаиморасчетов: 31.07.2025 0:00:00, , bc882230-ef1a-4b7d-be94-02dbc0cb6c09 (Регистр сведений: Задания к распределению взаиморасчетов; Номер строки: 2)
[ОшибкаХранимыхДанных]

Расширяем Модуль менеджера регистра сведений ЗаданияКРаспределениюВзаиморасчетов:
&ИзменениеИКонтроль("СоздатьЗадания") Процедура дор_СоздатьЗадания(МенеджерРегистра, ВидыЗаданий, НаборЗаписей, МенеджерВременныхТаблиц, ДанныеКРегистрацииЗаданий) Если ВидыЗаданий.Количество() = 0 Или (НаборЗаписей.ДополнительныеСвойства.Свойство("НеСоздаватьЗаданияКРаспределениюВзаиморасчетов") И НаборЗаписей.ДополнительныеСвойства.НеСоздаватьЗаданияКРаспределениюВзаиморасчетов) Тогда Возврат; КонецЕсли; ДанныеКФормированиюЗаданий = МенеджерРегистра.ДанныеКФормированиюЗаданийНеоперативногоДопроведенияДокументов( НаборЗаписей, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве( Справочники.ВидыНеоперативныхЗаданий.РаспределениеВзаиморасчетовПоСрокам), МенеджерВременныхТаблиц, ДанныеКРегистрацииЗаданий); Если ДанныеКФормированиюЗаданий.Количество() > 0 Тогда Задания = СоздатьНаборЗаписей(); Для Каждого ТекущиеДанные Из ДанныеКФормированиюЗаданий Цикл НовоеЗадание = Задания.Добавить(); ЗаполнитьЗначенияСвойств(НовоеЗадание, ТекущиеДанные); НовоеЗадание.ИдентификаторЗаписи = Новый УникальныйИдентификатор; #Вставка //Осипов 25.11.26 удаляем, если организация не задана, это какой-то сбой Если Не ЗначениеЗаполнено(НовоеЗадание.Организация) Тогда Задания.Удалить(НовоеЗадание); КонецЕсли; #КонецВставки КонецЦикла; УстановитьПривилегированныйРежим(Истина); Задания.Записать(Ложь); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; КонецПроцедуры
Проблема в том, что я даже не понимаю, что убрать из регистрации на точку, чтобы эти пустые организации не приходили. Поэтому могу только не создавать такие сбойные задания.
Вторая серия
После пролечивания этой ошибки возникла еще одна ошибка.
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ОтложенныеЗадания.Модуль(232)}:ИсточникЗаданий.Записать(Ложь);
{АнтиОшибкиРИБ ОбщийМодуль.ОтложенныеЗадания.Модуль(9)}:ПродолжитьВызов(Очередь, Данные, СгенерироватьИдентификаторЗаписи, ТаблицаЗаданий);
{РегистрСведений.ЗаданияКОтражениюСостоянияЗаказов.МодульМенеджера(32)}:ОтложенныеЗадания.ДобавитьЗаданияВОчередь("ЗаданияКОтражениюСостоянияЗаказов", Данные,, ТаблицаЗаданий);
{РегистрСведений.СостоянияЗаказовКлиентов.МодульМенеджера(171)}:РегистрыСведений.ЗаданияКОтражениюСостоянияЗаказов.ДобавитьЗадания(Заказ, Действие, ТаблицаЗаданий);
{ОбщийМодуль.СостоянияДокументов.Модуль(132)}:РегистрыСведений[ИмяРегистра].ДобавитьЗаданияКОтражениюСостоянияЗаказов(
{ПланОбмена.Полный.МодульОбъекта(317)}:СостоянияДокументов.ДобавитьЗаданияКОтражениюСостоянияЗаказов(
{ПланОбмена.Полный.МодульОбъекта(141)}:ПослеЗагрузкиДанных();
{Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(232)}:ЧтениеСообщения.ЗакончитьЧтение();
{Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(79)}:ПрочитатьФайлСообщенияОбмена(Отказ, ЧтениеXML, ЗагрузитьТолькоПараметры, ЗагрузитьМетаданные, СообщениеОбОшибке);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5078)}:ОбработкаОбменаДанными.ВыполнитьЗагрузкуДанных(Отказ, ТолькоПараметры, СообщениеОбОшибке);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(8738)}:ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(1706)}:ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(9011)}:ВыполнитьДействиеОбмена(Отказ, УзелИнформационнойБазы,
{Обработка.ПомощникСозданияОбменаДанными.МодульМенеджера(1721)}:ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(ПараметрыЗагрузки.УзелИнформационнойБазы, ПараметрыОбмена, ПараметрыЗагрузки.ЕстьОшибки);
{Обработка.ПомощникСозданияОбменаДанными.МодульМенеджера(468)}:ЗагрузитьСообщениеПередОбновлениемИнформационнойБазы(ПараметрыПроцедуры);
{(1)}:Обработки.ПомощникСозданияОбменаДанными.ЗагрузитьСообщениеПередОбновлениемИнформационнойБазыВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6474)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; // АПК:487 Исполняемый код безопасен.
{ОбщийМодуль.ДлительныеОперации.Модуль(1714)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1681)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Запись не верна! Значение поля "Документ" не может быть пустым!: ЗаданияКОтражениюСостоянияЗаказов: , ee7365aa-eb14-472b-a536-d6ae17c4d1a3 (Регистр сведений: Задания к отражению состояния заказов; Номер строки: 1)
[ОшибкаХранимыхДанных]
Исправляю процедуру ОтложенныеЗадания.ЗаданияКРаспределениюВзаиморасчетовПоставщики:
&ИзменениеИКонтроль("ДобавитьЗаданияВОчередь") Процедура дор_ДобавитьЗаданияВОчередь(Очередь, Данные, СгенерироватьИдентификаторЗаписи, ТаблицаЗаданий) ... Если КоличествоЗаписей > 0 Тогда УстановитьПривилегированныйРежим(Истина); #Вставка //Осипов 25.11.26 - удаляем записи без документа Всего = ИсточникЗаданий.Количество(); Для Инд = 1 По Всего Цикл МЗ = ИсточникЗаданий[Всего - Инд]; Попытка //Не всегда есть колонка Документ, как оказалось Если Не ЗначениеЗаполнено(МЗ.Документ) Тогда ИсточникЗаданий.Удалить(МЗ); КонецЕсли; Исключение КонецПопытки; КонецЦикла; #КонецВставки ИсточникЗаданий.Записать(Ложь); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации( Очередь, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КраткоеПредставлениеОшибки = ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); ВызватьИсключение СтрШаблон(НСтр("ru = 'Не удалось добавить запись в регистр очереди ""%1"" по причине: |%2.'"), Очередь, КраткоеПредставлениеОшибки); КонецПопытки; КонецЕсли; ... КонецПроцедуры
Третья серия
На этот раз ошибка выскочила в ОперативныеВзаиморасчетыСервер.ЗаполнитьОперативныеВзаиморасчеты, в таблице «Основные параметры» на входе — битые ссылки и 1С это «не переваривает»:

В километровый листинг вставил заплатку:
&ИзменениеИКонтроль("ЗаполнитьОперативныеВзаиморасчеты") Процедура зрибмарт2025_ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры, ДополнительныеСвойстваПроведения) ... ГлобальныеПеременные = Новый Структура; Для Каждого СтрокаОсновныхПараметровРасчета Из ДополненнаяТаблицаПараметровРаспределения Цикл ... ГлобальныеПеременные.Вставить("Регистратор", СтрокаОсновныхПараметровРасчета.Регистратор); КонецЦикла; #Вставка //Осипов 25.11.27 встречается, если битые ссылки на входе Если НЕ ГлобальныеПеременные.Свойство("Регистратор") Тогда Возврат; КонецЕсли; #КонецВставки ... КонецПроцедуры
Среда: УТ 11.5.25.63 Объем: 0.8 час.




Это как избавляться от тараканов — гоняться за каждым
это типичный подход 1с — они пишут код для тепличных условий, который валится в реальной жизни.
но в итоге эти три заплатки решили проблему, хотя и пришлось повозиться.
РИБ для 1с сейчас не мейнстрим, поэтому там много косяков.
у меня есть клиент с РИБ на УТ11, такое себе.
Коллеги, есть ли более простой способ исправить работоспобность РИБов?
работоспособность в чем именно? Последние типовые не сильно заточены под РИБ
Ошибка та же самая что возникает и в теме обсуждения, есть ли способ обойти эту ошибку типовыми средствами? Допустим, почистить кэш, удалить файлы сообщений обмена между РИБами, или только способ через «заплатки». Если через заплатки, есть ли риск что какой-то другой механизм сломается?
не поможет, там проблема с ссылками, под которыми нет объектов, т.е. объекты не дошли в базу. Поэтому только латать, где протекает.
1с не рассчитывает, что что-то может не доехать до базы…
Я правильно понимаю, что данная ошибка решаешься только такими заплатками? и никак не связана с ведением учета в программе? Как-то можно добиться от разработчиков выпуска патча?
никак. добиться чего-то от 1с еще никому не удавалось. Можно униженно просить и лет через 5 они может соизволят.