Ошибка при синхронизации Значение поля "Код" не уникально
Текст ошибки подробно:
Уже всю голову сломала, не понимаю, как это исправить. Очевидно, что где-то есть дубликат такого же кода. Разве нормально для кода такое странное значение? Сначала я подумала, что это уникальный идентификатор элемента справочника, сделала обработку для перебора всех справочников и поиска элемента с таким GUID, но ни одного элемента во всех справочниках не нашлось. Потом начала искать по коду, но по коду выдаёт либо "Неопределено", либо "0", либо пустые ссылки.
Прикрепляю часть кода обработки:
Занимаюсь 1С первые две недели, могу тупить :'D
Значение "ce92c30b-5e42-4f99-a7f7-2fe499fd19b8" поля "Код" не уникально
{Обработка.КонвертацияОбъектовXDTO.МодульОбъекта(763)}: УзелОбменаОбъект.Записать();
{Обработка.КонвертацияОбъектовXDTO.МодульОбъекта(361)}: ПроверитьКодыУзлов(РезультатАнализаДанныхКЗагрузке, КомпонентыОбмена.УзелКорреспондента);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7271)}: ОбработкаОбменаДаннымиXML.ВыполнитьЗагрузкуДанных(ПараметрыЗагрузки);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6851)}: ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}: ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3883)}: ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}: ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4883)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1026)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1016)}: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Значение "ce92c30b-5e42-4f99-a7f7-2fe499fd19b8" поля "Код" не уникально
ПоказатьУже всю голову сломала, не понимаю, как это исправить. Очевидно, что где-то есть дубликат такого же кода. Разве нормально для кода такое странное значение? Сначала я подумала, что это уникальный идентификатор элемента справочника, сделала обработку для перебора всех справочников и поиска элемента с таким GUID, но ни одного элемента во всех справочниках не нашлось. Потом начала искать по коду, но по коду выдаёт либо "Неопределено", либо "0", либо пустые ссылки.
Прикрепляю часть кода обработки:
&НаСервереБезКонтекста
Функция НайтиЭлементСправочникаНаСервере()
Идентификатор = Новый УникальныйИдентификатор("ce92c30b-5e42-4f99-a7f7-2fe499fd19b8");
Код = "ce92c30b-5e42-4f99-a7f7-2fe499fd19b8";
Для Каждого Спр Из Справочники Цикл
Сообщить(Спр);
СсылкаНаЭлемент = Спр.ПолучитьСсылку(Идентификатор);
СсылкаНаЭлемент2 = Спр.НайтиПоКоду(Код);
Если СсылкаНаЭлемент.ПолучитьОбъект() <> Неопределено Тогда
Возврат СсылкаНаЭлемент.ПолучитьОбъект();
КонецЕсли;
КонецЦикла;
КонецФункции
ПоказатьЗанимаюсь 1С первые две недели, могу тупить :'D
По теме из базы знаний
- Обмен через универсальный формат. Пример нестандартной конвертации данных
- 1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
- Система управления интеграциями на базе 1С:Шины
- Хранение секретов в Hashicorp Vault для 1С
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Попробуйте так, возможно это не Справочник
Можно еще убрать ПометкуУдаления, на тот случай если объект удален, тогда надо изменить запрос:
Функция НайтиСсылкуПоУИД(знач УИД) Экспорт
ЭтоМассив = ТипЗнч(УИД) = Тип("Массив");
МассивУидов = Новый Массив;
Если ЭтоМассив Тогда
МассивУидов = УИД;
Иначе
МассивУидов.Добавить(УИД);
КонецЕсли;
Результат = Неопределено;
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Справочники);
МассивМетаданных.Добавить(Документы);
МассивМетаданных.Добавить(ПланыВидовХарактеристик);
МассивМетаданных.Добавить(ПланыСчетов);
МассивМетаданных.Добавить(ПланыВидовРасчета);
МассивМетаданных.Добавить(ПланыОбмена);
МассивМетаданных.Добавить(БизнесПроцессы);
МассивМетаданных.Добавить(Задачи);
МассивТипов = Новый Массив;
Для Каждого СтрМетаданное Из МассивМетаданных Цикл
Для Каждого Стр Из СтрМетаданное.ТипВсеСсылки().Типы() Цикл
МассивТипов.Добавить(Стр);
КонецЦикла;
КонецЦикла;
ТаблицаСсылок = Новый ТаблицаЗначений;
ТаблицаСсылок.Колонки.Добавить("УИД" , Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(36)));
ТаблицаСсылок.Колонки.Добавить("Ссылка" , Новый ОписаниеТипов(МассивТипов));
Для Каждого СтрМетаданное Из МассивМетаданных Цикл
Для Каждого Менеджер Из СтрМетаданное Цикл
Для Каждого СтрУИД Из МассивУидов Цикл
Попытка
НовСтр = ТаблицаСсылок.Добавить();
НовСтр.Ссылка = Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрУИД));
НовСтр.УИД = СтрУИД;
Исключение
КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаСсылок.Ссылка КАК Ссылка,
| ТаблицаСсылок.УИД КАК УИД
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТаблицаСсылок КАК ТаблицаСсылок
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| ВТ.УИД КАК УИД
|ИЗ
| ВТ КАК ВТ
|ГДЕ
| НЕ ВТ.Ссылка.ПометкаУдаления ЕСТЬ NULL";
Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаСсылок);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Если ЭтоМассив Тогда
Результат = РезультатЗапроса.Выгрузить();
Иначе
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Результат = ВыборкаДетальныеЗаписи.Ссылка;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
ПоказатьМожно еще убрать ПометкуУдаления, на тот случай если объект удален, тогда надо изменить запрос:
"ВЫБРАТЬ
| ТаблицаСсылок.Ссылка КАК Ссылка,
| ТаблицаСсылок.УИД КАК УИД
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТаблицаСсылок КАК ТаблицаСсылок
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| ВТ.УИД КАК УИД
|ИЗ
| ВТ КАК ВТ";
Показать
(6) Попробовала оба варианта и с пометкой на удаление, и без, ещё немного переделала ваш вариант под поиск по коду, при поиске по уид пишет <Объект не найден>, а в варианте с кодом результат запроса пустой :(
Вариант с кодом:
Вариант с кодом:
&НаСервереБезКонтекста
Функция НайтиСсылкуПоКоду(Код) Экспорт
ЭтоМассив = ТипЗнч(Код) = Тип("Массив");
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Справочники);
МассивМетаданных.Добавить(Документы);
МассивМетаданных.Добавить(ПланыВидовХарактеристик);
МассивМетаданных.Добавить(ПланыСчетов);
МассивМетаданных.Добавить(ПланыВидовРасчета);
МассивМетаданных.Добавить(ПланыОбмена);
МассивМетаданных.Добавить(БизнесПроцессы);
МассивМетаданных.Добавить(Задачи);
МассивТипов = Новый Массив;
Для Каждого СтрМетаданное Из МассивМетаданных Цикл
Для Каждого Стр Из СтрМетаданное.ТипВсеСсылки().Типы() Цикл
МассивТипов.Добавить(Стр);
КонецЦикла;
КонецЦикла;
ТаблицаСсылок = Новый ТаблицаЗначений;
ТаблицаСсылок.Колонки.Добавить("Код" , Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(36)));
ТаблицаСсылок.Колонки.Добавить("Ссылка" , Новый ОписаниеТипов(МассивТипов));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаСсылок.Ссылка КАК Ссылка,
| ТаблицаСсылок.Код КАК Код
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТаблицаСсылок КАК ТаблицаСсылок
|;
|
|ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| ВТ.Код КАК Код
|ИЗ
| ВТ КАК ВТ";
Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаСсылок);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Если ЭтоМассив Тогда
Результат = РезультатЗапроса.Выгрузить();
Иначе
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Результат = ВыборкаДетальныеЗаписи.Ссылка;
КонецЕсли;
Иначе
Сообщить("Не найдено");
КонецЕсли;
Возврат Результат;
КонецФункции
Показать
Установите в отладчике остановку по ошибке и автоматическое подключение к фоновым заданиям и посмотрите, что находится в УзелОбменаОбъект при попытке записать объект.
p.s. Вряд ли там справочник, кстати, реквизит "Код" может быть еще у узла плана обмена, а ваш код только по сравочникам отрабатывает.
p.s. Вряд ли там справочник, кстати, реквизит "Код" может быть еще у узла плана обмена, а ваш код только по сравочникам отрабатывает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот