Ошибка при переносе регистр сведений ЦеныНоменклатуры: "Ошибка записи! Не установлен отбор по регистратору"
Здравствуйте, при переносе регистра сведений ЦеныНоменклатуры с УТ 11 в Далион через конвертацию данных 2.1 при загрузке данных в Далион выдал такую ошибку
Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
Код модуль набора записей регистра сведений ЦеныНоменклатуры в УТ 11:
Код модуль набора записей регистра сведений ЦеныНоменклатуры в Далион:
Можете подсказать как исправить данную ошибку правила обмена?
Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
Код модуль набора записей регистра сведений ЦеныНоменклатуры в УТ 11:
Процедура ПередЗаписью(Отказ, Замещение)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
КонецПроцедуры
ПоказатьКод модуль набора записей регистра сведений ЦеныНоменклатуры в Далион:
Процедура УдалитьДублиПоИзмерениям()
Если Количество() = 0 Тогда
Возврат;
КонецЕсли;
Период = ЭтотОбъект[0].Период;
ТабНоменклатуры = Выгрузить(, "КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Период" , Период);
Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.Текст =
"ВЫБРАТЬ
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ПОМЕСТИТЬ ТабНоменклатуры
|ИЗ
| &ТабНоменклатуры КАК ТабНоменклатуры
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
| ЦеныНоменклатуры.КатегорияЦен
|ПОМЕСТИТЬ НоменклатураИзРегистра
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Период = &Период
| И ЦеныНоменклатуры.Регистратор <> &Регистратор
|;
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
| ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
| И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
| И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)";
Если НЕ Запрос.Выполнить().Пустой() Тогда
Запрос.Текст =
"ВЫБРАТЬ
| &Период КАК Период,
| &Регистратор КАК Регистратор,
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
| ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
| И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
| И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)
|ГДЕ
| НоменклатураИзРегистра.Номенклатура ЕСТЬ NULL ";
Загрузить(Запрос.Выполнить().Выгрузить());
КонецЕсли;
КонецПроцедуры
Процедура ИнкриминироватьПериодПриСовпадении()
Если Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТабНоменклатуры = Выгрузить(, "Период, КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.Текст =
"ВЫБРАТЬ
| ТабНоменклатуры.Период КАК Период,
| ТабНоменклатуры.Номенклатура КАК Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
| ТабНоменклатуры.Цена КАК Цена
|ПОМЕСТИТЬ ТабНоменклатуры
|ИЗ
| &ТабНоменклатуры КАК ТабНоменклатуры
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатуры.Период КАК Период,
| ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ЦеныНоменклатуры.КатегорияЦен КАК КатегорияЦен
|ПОМЕСТИТЬ ДублиПоПериодуИИзмерениям
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабНоменклатуры КАК ТабНоменклатуры
| ПО ЦеныНоменклатуры.Период = ТабНоменклатуры.Период
| И ЦеныНоменклатуры.Номенклатура = ТабНоменклатуры.Номенклатура
| И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры
| И ЦеныНоменклатуры.КатегорияЦен = ТабНоменклатуры.КатегорияЦен
|ГДЕ
| ЦеныНоменклатуры.Регистратор <> &Регистратор
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ДублиПоПериодуИИзмерениям.Период КАК Период
|ИЗ
| ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДублиПоПериодуИИзмерениям.Период ЕСТЬ NULL
| ТОГДА ТабНоменклатуры.Период
| ИНАЧЕ ДОБАВИТЬКДАТЕ(ТабНоменклатуры.Период, СЕКУНДА, 1)
| КОНЕЦ КАК Период,
| ТабНоменклатуры.Номенклатура КАК Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
| ТабНоменклатуры.Цена КАК Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
| ПО ТабНоменклатуры.Номенклатура = ДублиПоПериодуИИзмерениям.Номенклатура
| И ТабНоменклатуры.ХарактеристикаНоменклатуры = ДублиПоПериодуИИзмерениям.ХарактеристикаНоменклатуры
| И ТабНоменклатуры.КатегорияЦен = ДублиПоПериодуИИзмерениям.КатегорияЦен";
Результат = Запрос.ВыполнитьПакет();
Если Не Результат[2].Пустой() Тогда
Загрузить(Результат[3].Выгрузить());
ИнкриминироватьПериодПриСовпадении();
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, Замещение)
Если ДополнительныеСвойства.Свойство("НеЗаписыватьДублиПоИзмерениям") Тогда
УдалитьДублиПоИзмерениям();
КонецЕсли;
Если ДополнительныеСвойства.Свойство("ДопускаетсяОдинаковыйПериод") Тогда
ИнкриминироватьПериодПриСовпадении();
КонецЕсли;
КонецПроцедуры
ПоказатьМожете подсказать как исправить данную ошибку правила обмена?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)Сначала создавался правила автоматически и передавался поля регистратор и выдавал такую ошибку, потом правила для регистра сведений ЦеныНоменклатуры создал вручную и убрал поле регистратор, заново попытался загрузить но ничего не поменялся, выдал такую же ошибку....
Прикрепленные файлы:
(9)нет, там должно быть правило для конкретного типа документа.
Если поле составного типа, то можно оставить пустым и кодом в "ПередВыгрузкой" устанавливать нужное ПКО кодом
Если поле составного типа, то можно оставить пустым и кодом в "ПередВыгрузкой" устанавливать нужное ПКО кодом
Если ТипЗнч(Источник.Регистратор) = Тип(<типЗначения1>) Тогда
ИмяПКО = "<ИмяПКО1>";
ИначеЕсли ТипЗнч(Источник.Регистратор) = Тип(<типЗначения2>) Тогда
ИмяПКО = "<ИмяПКО2>";
........
КонецЕсли;
(12) А как определять "типЗначения1" и "ИмяПКО1"?
"типЗначения1" это документ от источника "ИмяПКО1" это имя документа приемника?
Если ТипЗнч(Источник.Регистратор) = Тип(<типЗначения1>) Тогда
ИмяПКО = "<ИмяПКО1>";
ИначеЕсли ТипЗнч(Источник.Регистратор) = Тип(<типЗначения2>) Тогда
ИмяПКО = "<ИмяПКО2>";
........
КонецЕсли;
"типЗначения1" это документ от источника "ИмяПКО1" это имя документа приемника?
Прикрепленные файлы:
(13) в вашем случае:
ТипЗначения1 = ДокументСсылка.КорректировкаРегистров
ТипЗначения2 = ДокументСсылка.УстановкаЦенНоменклатуры
ИмяПКО1 - имя правила конвертации объекта, соответствующее ТипЗначения1
ИмяПКО2 - имя правила конвертации объекта, соответствующее ТипЗначения2
Если вы уверены в том, что в передаваемых данных регистратор всегда может быть только одного типа, то можно просто его указать в качестве ПКО.
ТипЗначения1 = ДокументСсылка.КорректировкаРегистров
ТипЗначения2 = ДокументСсылка.УстановкаЦенНоменклатуры
ИмяПКО1 - имя правила конвертации объекта, соответствующее ТипЗначения1
ИмяПКО2 - имя правила конвертации объекта, соответствующее ТипЗначения2
Если вы уверены в том, что в передаваемых данных регистратор всегда может быть только одного типа, то можно просто его указать в качестве ПКО.
(14) Записал, сохранил и выдал такую ошибку:
Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Ожидается выражение
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Ожидается выражение
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Прикрепленные файлы:
(8) Не получилось)) выдал такую ошибку при выгрузке из источника))
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 1 (Активность --> Активность)
Объект = Установка цен номенклатуры ЕР-00000387 от 26.04.2021 (Установка цен номенклатуры)
СвойствоПриемника = Активность (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (Активность)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
КодСообщения = 13
Посмотрел ПКС объекта на вкладке типы источника и приемника, и в этой вкладке документы с "тип источника" и "тип приемника" не совпадают...
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 1 (Активность --> Активность)
Объект = Установка цен номенклатуры ЕР-00000387 от 26.04.2021 (Установка цен номенклатуры)
СвойствоПриемника = Активность (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (Активность)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
КодСообщения = 13
Посмотрел ПКС объекта на вкладке типы источника и приемника, и в этой вкладке документы с "тип источника" и "тип приемника" не совпадают...
Прикрепленные файлы:
(17) Убрал знаки, но ошибка та же
Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Переменная не определена (ДокументСсылка)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Переменная не определена (ДокументСсылка)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Прикрепленные файлы:
(19) Теперь при выгрузке прошло успешно, но при загрузке опять первую ошибку показывает
Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот