Здравствуйте, при выгрузке номенклатуры с помощью обработки "V8Exchan82" выдал такую ошибку "Преобразование значения к типу Число не может быть выполнено"
Как можно это исправить?
В номенклатуре есть объекты помеченные на удаление, может ли быть это причиной, или номенклатура неправильно заполнена?
(10) Правильно сказали, при синхронизации объектов смотрю, а там нет справочника номенклатура, как так? Куда он исчез? По поиску искал, не находить... Странно...
"
Ссылка на несуществующий объект метаданных в правилах обмена
Объект = Строка
ОписаниеОшибки = Значение не является значением объектного типа (ПКО)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(2175)
КодСообщения = 11"
Можете подсказать как конвертировать строки в число?
(25) Этот вопрос надо решать с заказчиком и руководителем проекта. Когда ты принесешь свой говнокод, и тебя начнут ругать, аргументы: мне в интернете сказали так сделать - не прокатят.
(28) Ну Рустам ако лазил по форумам но не смог найти ответы, поэтому спросил у форумчан, у Вас огромный опыт по 1С, и наверняка вы знайте как создать правило обмена, вы же сразу указали где ошибка, иначе я лазил бы по процедурам с отладкой...
(29) У меня несколько вариантов решения этой проблемы, но я бы их сначала обсудил с заказчиком. А вам я горячо советую потратить время на обучение: У 1С есть хорошие курсы по конвертации.
(30) Заказчиков нет, просто пока тренируюсь как можно например перенести данные между различными конфигурациями используя конвертацию данных 2.1, посмотрел пару роликов у Леонтьева Илии и приступил к переносу данных с ERP в Далион, и в номенклатуре столкнулся с этой проблемой у далиона в справочник.номенклатура код типа число у ERP и у остальных типовых решений 1С в справочник.номенклатура код типа строка
(19) В конфигурации источника Справочник.Номенклатура тип кода строка, в конфигурации приемника тип кода число, как можно конвертировать такой тип данных в конвертация данных 2.1?
(32) Тип кода поменять не получится. Да и незачем. Уберите вообще код из конвертации и пусть система сама присваивает код в приемнике. Поиска то по коду нет.
(35) Сначала была поиск по коду, потом снял галочку... Как можно убрать код из конвертации? Взял в конфигурации приемнике поменял тип кода справочника с "число" в "строка" и выгрузился номенклатура, можно ли так делать или нельзя?
(38) Спасибо вам большое, пока учусь, 2 недели назад надо было ЗУП перенести в идентичную конфигурация, с помощью обработки выгрузки и загрузки XML много мучался не смог перенести, думаю в будущем много раз понадобиться, а можно ли например с помощью конвертации данных наладить постоянный обмен данных между розницей и РМК?
(42) При переносе цены номенклатуры выдал такую ошибку...
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4867)}: Ошибка записи объекта
ТипОбъекта = Регистр сведений запись: Цены номенклатуры
Объект = РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
КодСообщения = 26
(42) В приемнике "Регистр сведений ЦеныНоменклатуры: Модуль набора записей" в процедурах "УдалитьДублиПоИзмерениям()" и "ИнкриминироватьПериодПриСовпадении()" установлен отбор по регистраторам и при загрузке данных выдал такую ошибку, как можно это исправить?
Процедура УдалитьДублиПоИзмерениям()
Если Количество() = 0 Тогда
Возврат;
КонецЕсли;
Период = ЭтотОбъект[0].Период;
ТабНоменклатуры = Выгрузить(, "КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Период" , Период);
Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.Текст =
"ВЫБРАТЬ
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ПОМЕСТИТЬ ТабНоменклатуры
|ИЗ
| &ТабНоменклатуры КАК ТабНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
| ЦеныНоменклатуры.КатегорияЦен
|ПОМЕСТИТЬ НоменклатураИзРегистра
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Период = &Период
| И ЦеныНоменклатуры.Регистратор <> &Регистратор
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
| ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
| И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
| И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)";
Если НЕ Запрос.Выполнить().Пустой() Тогда
Запрос.Текст =
"ВЫБРАТЬ
| &Период КАК Период,
| &Регистратор КАК Регистратор,
| ТабНоменклатуры.Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен,
| ТабНоменклатуры.Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураИзРегистра КАК НоменклатураИзРегистра
| ПО (НоменклатураИзРегистра.Номенклатура = ТабНоменклатуры.Номенклатура)
| И (НоменклатураИзРегистра.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры)
| И (НоменклатураИзРегистра.КатегорияЦен = ТабНоменклатуры.КатегорияЦен)
|ГДЕ
| НоменклатураИзРегистра.Номенклатура ЕСТЬ NULL ";
Загрузить(Запрос.Выполнить().Выгрузить());
КонецЕсли;
КонецПроцедуры
Процедура ИнкриминироватьПериодПриСовпадении()
Если Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТабНоменклатуры = Выгрузить(, "Период, КатегорияЦен, Номенклатура, ХарактеристикаНоменклатуры, Цена");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТабНоменклатуры", ТабНоменклатуры);
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.Текст =
"ВЫБРАТЬ
| ТабНоменклатуры.Период КАК Период,
| ТабНоменклатуры.Номенклатура КАК Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
| ТабНоменклатуры.Цена КАК Цена
|ПОМЕСТИТЬ ТабНоменклатуры
|ИЗ
| &ТабНоменклатуры КАК ТабНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатуры.Период КАК Период,
| ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ЦеныНоменклатуры.КатегорияЦен КАК КатегорияЦен
|ПОМЕСТИТЬ ДублиПоПериодуИИзмерениям
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабНоменклатуры КАК ТабНоменклатуры
| ПО ЦеныНоменклатуры.Период = ТабНоменклатуры.Период
| И ЦеныНоменклатуры.Номенклатура = ТабНоменклатуры.Номенклатура
| И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = ТабНоменклатуры.ХарактеристикаНоменклатуры
| И ЦеныНоменклатуры.КатегорияЦен = ТабНоменклатуры.КатегорияЦен
|ГДЕ
| ЦеныНоменклатуры.Регистратор <> &Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ДублиПоПериодуИИзмерениям.Период КАК Период
|ИЗ
| ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДублиПоПериодуИИзмерениям.Период ЕСТЬ NULL
| ТОГДА ТабНоменклатуры.Период
| ИНАЧЕ ДОБАВИТЬКДАТЕ(ТабНоменклатуры.Период, СЕКУНДА, 1)
| КОНЕЦ КАК Период,
| ТабНоменклатуры.Номенклатура КАК Номенклатура,
| ТабНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТабНоменклатуры.КатегорияЦен КАК КатегорияЦен,
| ТабНоменклатуры.Цена КАК Цена
|ИЗ
| ТабНоменклатуры КАК ТабНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиПоПериодуИИзмерениям КАК ДублиПоПериодуИИзмерениям
| ПО ТабНоменклатуры.Номенклатура = ДублиПоПериодуИИзмерениям.Номенклатура
| И ТабНоменклатуры.ХарактеристикаНоменклатуры = ДублиПоПериодуИИзмерениям.ХарактеристикаНоменклатуры
| И ТабНоменклатуры.КатегорияЦен = ДублиПоПериодуИИзмерениям.КатегорияЦен";
Результат = Запрос.ВыполнитьПакет();
Если Не Результат[2].Пустой() Тогда
Загрузить(Результат[3].Выгрузить());
ИнкриминироватьПериодПриСовпадении();
КонецЕсли;
КонецПроцедуры