Ошибка при переносе регистр сведений ЦеныНоменклатуры: "Ошибка записи! Не установлен отбор по регистратору"

1. Gok9 10.02.23 07:05 Сейчас в теме
Здравствуйте, при переносе регистра сведений ЦеныНоменклатуры с УТ 11 в Далион через конвертацию данных 2.1 при загрузке данных в Далион выдал такую ошибку

Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26

Код модуль набора записей регистра сведений ЦеныНоменклатуры в УТ 11:
Процедура ПередЗаписью(Отказ, Замещение)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);

КонецПроцедуры
Показать

Код модуль набора записей регистра сведений ЦеныНоменклатуры в Далион:
Процедура УдалитьДублиПоИзмерениям()
	
	Если Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Период      = ЭтотОбъект[0].Период;
	
	ТабНоменклатуры = Выгрузить(, "КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("Период"         , Период);
	Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
	Запрос.УстановитьПараметр("Регистратор",     ЭтотОбъект.Отбор.Регистратор.Значение);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТабНоменклатуры.Номенклатура,
	|	ТабНоменклатуры.ХарактеристикаНоменклатуры,
	|	ТабНоменклатуры.КатегорияЦен,
	|	ТабНоменклатуры.Цена
	|ПОМЕСТИТЬ ТабНоменклатуры
	|ИЗ
	|	&ТабНоменклатуры КАК ТабНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатуры.Номенклатура,
	|	ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
	|	ЦеныНоменклатуры.КатегорияЦен
	|ПОМЕСТИТЬ НоменклатураИзРегистра
	|ИЗ
	|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
	|ГДЕ
	|	ЦеныНоменклатуры.Период = &Период
	|	И ЦеныНоменклатуры.Регистратор <> &Регистратор
	|;
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ ПЕРВЫЕ 1
	|	ТабНоменклатуры.Номенклатура,
	|	ТабНоменклатуры.ХарактеристикаНоменклатуры,
	|	ТабНоменклатуры.КатегорияЦен,
	|	ТабНоменклатуры.Цена
	|ИЗ
	|	ТабНоменклатуры КАК ТабНоменклатуры
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
	|		ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
	|			И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
	|			И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)";
	
	
	Если НЕ Запрос.Выполнить().Пустой() Тогда
		
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	&Период КАК Период,
		|	&Регистратор КАК Регистратор,
		|	ТабНоменклатуры.Номенклатура,
		|	ТабНоменклатуры.ХарактеристикаНоменклатуры,
		|	ТабНоменклатуры.КатегорияЦен,
		|	ТабНоменклатуры.Цена
		|ИЗ
		|	ТабНоменклатуры КАК ТабНоменклатуры
		|		ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
		|		ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
		|			И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
		|			И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)
		|ГДЕ
		|	НоменклатураИзРегистра.Номенклатура ЕСТЬ NULL ";

		Загрузить(Запрос.Выполнить().Выгрузить());
	КонецЕсли;
	
КонецПроцедуры

Процедура ИнкриминироватьПериодПриСовпадении()
	
	Если Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ТабНоменклатуры = Выгрузить(, "Период, КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
	Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ТабНоменклатуры.Период КАК Период,
	|	ТабНоменклатуры.Номенклатура КАК Номенклатура,
	|	ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
	|	ТабНоменклатуры.Цена КАК Цена
	|ПОМЕСТИТЬ ТабНоменклатуры
	|ИЗ
	|	&ТабНоменклатуры КАК ТабНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЦеныНоменклатуры.Период КАК Период,
	|	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
	|	ЦеныНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ЦеныНоменклатуры.КатегорияЦен КАК КатегорияЦен
	|ПОМЕСТИТЬ ДублиПоПериодуИИзмерениям
	|ИЗ
	|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабНоменклатуры КАК ТабНоменклатуры
	|		ПО ЦеныНоменклатуры.Период = ТабНоменклатуры.Период
	|			И ЦеныНоменклатуры.Номенклатура = ТабНоменклатуры.Номенклатура
	|			И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры
	|			И ЦеныНоменклатуры.КатегорияЦен = ТабНоменклатуры.КатегорияЦен
	|ГДЕ
	|	ЦеныНоменклатуры.Регистратор <> &Регистратор
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ ПЕРВЫЕ 1
	|	ДублиПоПериодуИИзмерениям.Период КАК Период
	|ИЗ
	|	ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА ДублиПоПериодуИИзмерениям.Период ЕСТЬ NULL
	|			ТОГДА ТабНоменклатуры.Период
	|		ИНАЧЕ ДОБАВИТЬКДАТЕ(ТабНоменклатуры.Период, СЕКУНДА, 1)
	|	КОНЕЦ КАК Период,
	|	ТабНоменклатуры.Номенклатура КАК Номенклатура,
	|	ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
	|	ТабНоменклатуры.Цена КАК Цена
	|ИЗ
	|	ТабНоменклатуры КАК ТабНоменклатуры
	|		ЛЕВОЕ СОЕДИНЕНИЕ ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
	|		ПО ТабНоменклатуры.Номенклатура = ДублиПоПериодуИИзмерениям.Номенклатура
	|			И ТабНоменклатуры.ХарактеристикаНоменклатуры = ДублиПоПериодуИИзмерениям.ХарактеристикаНоменклатуры
	|			И ТабНоменклатуры.КатегорияЦен = ДублиПоПериодуИИзмерениям.КатегорияЦен";
	
	Результат = Запрос.ВыполнитьПакет();
	
	Если Не Результат[2].Пустой() Тогда
		Загрузить(Результат[3].Выгрузить());
		
		ИнкриминироватьПериодПриСовпадении();
	КонецЕсли;
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ, Замещение)
	
	Если ДополнительныеСвойства.Свойство("НеЗаписыватьДублиПоИзмерениям") Тогда
		УдалитьДублиПоИзмерениям();
	КонецЕсли;
	
	Если ДополнительныеСвойства.Свойство("ДопускаетсяОдинаковыйПериод") Тогда
		ИнкриминироватьПериодПриСовпадении();
	КонецЕсли; 
	
КонецПроцедуры

Показать


Можете подсказать как исправить данную ошибку правила обмена?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 119 10.02.23 08:17 Сейчас в теме
(1) А регистратор передается в диалон?
3. Gok9 10.02.23 08:21 Сейчас в теме
(2) Да, выгрузил с УТ 11 все прошло успешно, при загрузке в диалон выдал такую ошибку...
Прикрепленные файлы:
4. glek 119 10.02.23 08:33 Сейчас в теме
(3) "Выгрузка прошла хорошо" и "регистратор передается в диалон" - разные понятия. Надо смотреть правила, файл переноса и так далее.
Ошибка ясна: набор записей РС, подчиненного регистратору, пытается записаться без оного.
5. Gok9 10.02.23 08:43 Сейчас в теме
(4)Сначала создавался правила автоматически и передавался поля регистратор и выдавал такую ошибку, потом правила для регистра сведений ЦеныНоменклатуры создал вручную и убрал поле регистратор, заново попытался загрузить но ничего не поменялся, выдал такую же ошибку....
Прикрепленные файлы:
6. nomad_irk 76 10.02.23 09:04 Сейчас в теме
(5)в первом случае не было указано ПКО для регистратора, во втором случае данные о регистраторе просто не передавались.

Что вы хотите от бедной 1С? Она вам прямым текстом говорит, в чем ошибка правил обмена, вы упорно игнорируете эту информацию.
7. Gok9 10.02.23 11:02 Сейчас в теме
(6)
в первом случае не было указано ПКО для регистратора
можете подсказать как правильно указать правило конвертации для регистратора?
8. nomad_irk 76 10.02.23 11:35 Сейчас в теме
(7)указать его в ПКС для поля "Регистратор"
Прикрепленные файлы:
9. Gok9 10.02.23 11:38 Сейчас в теме
(8) Вот так правильно будет?
Прикрепленные файлы:
12. nomad_irk 76 10.02.23 12:20 Сейчас в теме
(9)нет, там должно быть правило для конкретного типа документа.
Если поле составного типа, то можно оставить пустым и кодом в "ПередВыгрузкой" устанавливать нужное ПКО кодом

Если ТипЗнч(Источник.Регистратор) = Тип(<типЗначения1>) Тогда
 ИмяПКО = "<ИмяПКО1>";
ИначеЕсли ТипЗнч(Источник.Регистратор) = Тип(<типЗначения2>) Тогда
 ИмяПКО = "<ИмяПКО2>";
........
КонецЕсли;
13. Gok9 10.02.23 12:39 Сейчас в теме
(12) А как определять "типЗначения1" и "ИмяПКО1"?
Если ТипЗнч(Источник.Регистратор) = Тип(<типЗначения1>) Тогда
 ИмяПКО = "<ИмяПКО1>";
ИначеЕсли ТипЗнч(Источник.Регистратор) = Тип(<типЗначения2>) Тогда
 ИмяПКО = "<ИмяПКО2>";
........
КонецЕсли;

"типЗначения1" это документ от источника "ИмяПКО1" это имя документа приемника?
Прикрепленные файлы:
14. nomad_irk 76 10.02.23 13:12 Сейчас в теме
(13) в вашем случае:
ТипЗначения1 = ДокументСсылка.КорректировкаРегистров
ТипЗначения2 = ДокументСсылка.УстановкаЦенНоменклатуры

ИмяПКО1 - имя правила конвертации объекта, соответствующее ТипЗначения1
ИмяПКО2 - имя правила конвертации объекта, соответствующее ТипЗначения2

Если вы уверены в том, что в передаваемых данных регистратор всегда может быть только одного типа, то можно просто его указать в качестве ПКО.
15. Gok9 10.02.23 13:15 Сейчас в теме
(14) При выгрузке метаданных источника не выгрузил движения документов, никаких ошибок не выдаст?

Вот так поставил, правильно ли?
Прикрепленные файлы:
16. Gok9 10.02.23 14:00 Сейчас в теме
(14) Записал, сохранил и выдал такую ошибку:

Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Ожидается выражение
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Прикрепленные файлы:
17. nomad_irk 76 10.02.23 14:53 Сейчас в теме
10. glek 119 10.02.23 11:40 Сейчас в теме
(8)
1. Разве в случае нескольких типов конвертация не должна автоматически определять ПКО?
2. Слабо помню, но вроде как нужен еще правило поиска для записей (давно было)
11. Gok9 10.02.23 12:13 Сейчас в теме
(8) Не получилось)) выдал такую ошибку при выгрузке из источника))

Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 1 (Активность --> Активность)
Объект = Установка цен номенклатуры ЕР-00000387 от 26.04.2021 (Установка цен номенклатуры)
СвойствоПриемника = Активность (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (Активность)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
КодСообщения = 13

Посмотрел ПКС объекта на вкладке типы источника и приемника, и в этой вкладке документы с "тип источника" и "тип приемника" не совпадают...
Прикрепленные файлы:
18. Gok9 11.02.23 09:01 Сейчас в теме
(17) Убрал знаки, но ошибка та же

Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ЦеныНоменклатуры (Регистр сведений: Цены номенклатуры)
ПКС = 4 (Регистратор --> Регистратор)
Объект = (Выборка из результата запроса)
СвойствоПриемника = Регистратор ()
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,41)}: Переменная не определена (ДокументСсылка)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8928)
КодСообщения = 55
Прикрепленные файлы:
19. nomad_irk 76 11.02.23 11:10 Сейчас в теме
(18)значение типа должно быть в кавычках, т.е. Тип("ДокументСсылка.КорректировкаРегистров")
20. Gok9 11.02.23 11:36 Сейчас в теме
(19) Теперь при выгрузке прошло успешно, но при загрузке опять первую ошибку показывает
Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
Прикрепленные файлы:
21. nomad_irk 76 11.02.23 13:07 Сейчас в теме
(20)сам регистратор сформировался?
что в ПКО для самого регистратора?
22. Gok9 11.02.23 13:31 Сейчас в теме
(21) После записи сохранил ПКО, выгрузил с источника, при загрузке в приемник выдал ошибку
Прикрепленные файлы:
23. Gok9 13.02.23 05:50 Сейчас в теме
(21) Это ПКО регистратора, правильно понимаю?
Прикрепленные файлы:
24. nomad_irk 76 13.02.23 06:05 Сейчас в теме
(23)это ПКО для каждой записи регистра сведений.
ПКО регистратора для объекта ДокументСсылка.<Чего-то-там>

Если в базе-источник и базе-приемник документы-регистраторы одинаковые, то будет проще сделать ПКО для документа, включающее его движения.
25. Gok9 13.02.23 06:19 Сейчас в теме
(24) Как можно понять сформировался ли регистратор? В свойствах надо посмотреть?
Прикрепленные файлы:
26. nomad_irk 76 13.02.23 12:15 Сейчас в теме
(25)необходимо отладить процесс загрузки данных из файла
27. Gok9 15.02.23 09:51 Сейчас в теме
(26) Не смог отладить обработку V8Exchan82, читал на ресурсах и сделал как написали но при нажатии выполнить на добавленную обработку выдает ошибку...
Прикрепленные файлы:
28. nomad_irk 76 15.02.23 09:56 Сейчас в теме
(27)запускать нужно на той же машине, на которой запущен 1С сервер.
30. Gok9 15.02.23 14:00 Сейчас в теме
(28) Видимо я что-то не понял) если база файловая то все делаю правильно? Или вы что-то другое имеете ввиду?)
31. nomad_irk 76 15.02.23 15:33 Сейчас в теме
(30)тогда не понятно, почему внешняя обработка не может быть найдена по указанному пути.
29. Gok9 15.02.23 10:43 Сейчас в теме
(28) База файловая, не на сервере...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот