Имя: Пароль:
1C
1С v8
Ошибка при синхронизации БД через УТ
0 kleminaV
 
04.04.21
00:10
Здравствуйте. Помогите разобраться с ошибкой

Событие: Отправка.
ПОД: Справочник_ШтрихкодыНоменклатуры_Отправка.
ПКО: Справочник_ШтрихкодыНоменклатуры_Отправка.
Объект: Регистр сведений набор записей: Штрихкоды, РегистрСведенийНаборЗаписей.Штрихкоды.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(572)}: Ошибка при вызове метода контекста (Проверить)
            ОбъектXDTO.Проверить();
по причине:
Ошибка проверки данных XDTO:
Структура объекта '/НоменклатураОтбор' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4}КлючевыеСвойстваНоменклатура
Проверка свойства 'Наименование':
    форма: Элемент
    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4}Наименование
    тип: {http://www.w3.org/2001/XMLSchema}string
Отсутствует обязательное свойство
1 hhhh
 
04.04.21
00:13
(0) ну, пустое наименование где-то. Читать-то умеете?
2 Garykom
 
гуру
04.04.21
00:20
(1) проблема в том что разработчики вот этой уйни не подумали что надо бы подобные ошибки нормально обрабатывать
это же идиотизм что одна ошибка в данных (несущественная по сути) и обмен совсем падает
3 kleminaV
 
04.04.21
12:18
Читать умею, я новичок. Остальные ошибки нашла и устранила. А эту не найду: что пустое наименованием Справочниках штрихкодов, или какой- то номенклатуре штрих-код не присвоен? Как это вычислить?
4 hhhh
 
04.04.21
13:51
(3) наверно сортировка спасет мать русской демократии. Открыть справочник, задать сортировку по наименованию, элемент с пустым наименованием будет в самом верху.

ну или обработка Групповое изменение реквизитов, которая в администрировании. Там отбор задать на пустое наименование. Все пустые элементы и высветятся.
5 Garykom
 
гуру
04.04.21
16:35
(4) Не не скажи какой именно справочник открыть чтобы пустое наименование искать ))
6 Chameleon1980
 
04.04.21
17:27
(5) ну все слова еще раз перечитать и станет понятно
7 Garykom
 
гуру
04.04.21
17:56
(6) А вот и хрен
Может быть как у Номенклатуры так и у любого из реквизитов
8 kleminaV
 
04.04.21
18:39
Всем спасибо за остроумные и ценные советы, ошибку я не нашла
9 Garykom
 
гуру
04.04.21
18:41
(8) И где ошибка была?
И самый сложный вопрос а как сделать чтобы обмен в будущем не падал при подобных ошибках а просто выводил их и пропускал объекты?
10 kleminaV
 
04.04.21
19:18
Не нашла я ошибку, я начинающий бухгалтер, не программист
11 kleminaV
 
06.04.21
12:45
Вот текст ошибки из конфигуратора, может кто подскажет в каком элементе искать

Процедура ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Объект, ПравилоОбработки = Неопределено) Экспорт
    
    ЗаписьXML = КомпонентыОбмена.ФайлОбмена;
    Если ТипЗнч(Объект) <> Тип("Структура") Тогда
        
        ОбъектМетаданныхТекущий = Объект.Метаданные();
        
        Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ОбъектМетаданныхТекущий) Тогда
            ТекОбъект = Объект.Ссылка;
        Иначе
            ТекОбъект = Объект;
        КонецЕсли;
        
        КомпонентыОбмена.ВыгруженныеОбъекты.Добавить(ТекОбъект);
        
        Попытка
            ПравилоОбработки = ПОДПоОбъектуМетаданных(КомпонентыОбмена, ОбъектМетаданныхТекущий);
        Исключение
            ТекстОшибки = Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Событие: %1.
                    |Объект: %2.
                    |
                    |%3.'"),
                КомпонентыОбмена.НаправлениеОбмена,
                ПредставлениеОбъектаДляПротокола(ТекОбъект),
                ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
            ЗаписатьВПротоколВыполнения(КомпонентыОбмена, СокрЛП(ТекстОшибки));
            Возврат;
        КонецПопытки;
    Иначе
        КомпонентыОбмена.ВыгруженныеОбъекты.Добавить(Объект);
    КонецЕсли;
    
    // Отработка ПОД
    ИспользованиеПКО = Новый Структура;
    Для Каждого ИмяПКО Из ПравилоОбработки.ИспользуемыеПКО Цикл
        ИспользованиеПКО.Вставить(ИмяПКО, Истина);
    КонецЦикла;
    
    Если ЗначениеЗаполнено(ПравилоОбработки.ПриОбработке) Тогда
        ПриОбработкеПОД(
            КомпонентыОбмена,
            ПравилоОбработки,
            Объект,
            ИспользованиеПКО);
    КонецЕсли;
    
    // Отработка ПКО
    НесколькоПКО = (ПравилоОбработки.ИспользуемыеПКО.Количество() > 1);
    
    Для Каждого ТекущееПКО Из ИспользованиеПКО Цикл
        Попытка
            Если Не ТекущееПКО.Значение Тогда
                // Если правил конвертации несколько, и некоторые из них не используются -
                // необходимо выгрузить удаление объекта на случай если  ранее он был выгружен по этим правилам.
                
                Если НесколькоПКО Тогда
                    ЕстьКолонкаОчисткаДанных = КомпонентыОбмена.ПравилаОбработкиДанных.Колонки.Найти("ОчисткаДанных") <> Неопределено;
                    Если Не ЕстьКолонкаОчисткаДанных Или ПравилоОбработки.ОчисткаДанных Тогда
                        ПравилоКонвертации = КомпонентыОбмена.ПравилаКонвертацииОбъектов.Найти(ТекущееПКО.Ключ, "ИмяПКО");
                        ВыгрузитьУдаление(КомпонентыОбмена, Объект.Ссылка, ПравилоКонвертации);
                    КонецЕсли;
                КонецЕсли;
                
                Продолжить;
            КонецЕсли;
            
            // 1. Поиск правила конвертации.
            
            ПравилоКонвертации = КомпонентыОбмена.ПравилаКонвертацииОбъектов.Найти(ТекущееПКО.Ключ, "ИмяПКО");
            
            // 2. Конвертируем Данные в Структуру по правилам конвертации.
            ДанныеXDTO = ДанныеXDTOИзДанныхИБ(КомпонентыОбмена, Объект, ПравилоКонвертации, Неопределено);
            
            // 3. Конвертируем Структуру в ОбъектXDTO.
            СсылкиИзОбъекта = Новый Массив;
            ОбъектXDTO = ОбъектXDTOИзДанныхXDTO(КомпонентыОбмена, ДанныеXDTO, ПравилоКонвертации.ТипXDTO,,СсылкиИзОбъекта);
            
            ОбъектXDTO.Проверить();
            
            Если КомпонентыОбмена.ЭтоОбменЧерезПланОбмена Тогда
                
                Для Каждого ЗначениеСсылки Из СсылкиИзОбъекта Цикл
                    
                    Если КомпонентыОбмена.ВыгруженныеОбъекты.Найти(ЗначениеСсылки) = Неопределено
                        И ВыгружатьОбъектПоНеобходимости(КомпонентыОбмена, ЗначениеСсылки) Тогда
                        
                        Если Не РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ОбъектЕстьВРегистре(
                            ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента) Тогда
                            
                            ОбъектВыгружаемыйПоСсылке = Неопределено;
                            
                            Если ОбщегоНазначения.СсылкаСуществует(ЗначениеСсылки) Тогда
                                ОбъектВыгружаемыйПоСсылке = ЗначениеСсылки.ПолучитьОбъект();
                            КонецЕсли;
                            
                            Если ОбъектВыгружаемыйПоСсылке <> Неопределено Тогда
                                
                                ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ОбъектВыгружаемыйПоСсылке);
                                КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты.Добавить(ЗначениеСсылки);
                                РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ДобавитьОбъектВФильтрРазрешенныхОбъектов(
                                    ЗначениеСсылки, КомпонентыОбмена.УзелКорреспондента);
                                
                            КонецЕсли;
                            
                        КонецЕсли;
                        
                    КонецЕсли;
                    
                КонецЦикла;
                
            КонецЕсли;
                
            // 4. Записываем ОбъектXDTO в XML-файл.
            ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
        Исключение
            ТекстОшибки = Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Событие: %1.
                    |ПОД: %2.
                    |ПКО: %3.
                    |Объект: %4.
                    |
                    |%5'"),
                КомпонентыОбмена.НаправлениеОбмена,
                ПравилоОбработки.Имя,
                ТекущееПКО.Ключ,
                ПредставлениеОбъектаДляПротокола(Объект),
                ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
            ЗаписатьВПротоколВыполнения(КомпонентыОбмена, СокрЛП(ТекстОшибки));
12 vicof
 
06.04.21
12:51
А может позвать программиста?
13 Garykom
 
гуру
06.04.21
13:21
(12) программист денег стоит
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн