|   |   | 
| 
 | Правила конвертации, выгружаю только ссылку как проверить что объект есть в приемнике? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Бешеный заяц 21.01.20✎ 10:33 | 
        Нужно чтобы при загрузки регистра сведений если в реквизите "Владелец" битая ссылка (номенклатуры) то такой регистр не загружался и не плодились записи с битыми ссылками.
 Предполагаю необходимо в модуле "Перед загрузкой" проверять так как там есть "Отказ" поставить, но как проверить будет ли ссылка битой или нет? | |||
| 1
    
        mikecool 21.01.20✎ 10:35 | 
        а почему не перегружаешь номенклатуру по ссылке?     | |||
| 2
    
        pechkin 21.01.20✎ 10:35 | 
        после загрузки ставь отказ если ссылка битая     | |||
| 3
    
        Бешеный заяц 21.01.20✎ 10:37 | 
        (2) точно спасибо, не дочитал до конца описание обработчика:-) 
 (1) другая номенклатура для другой базы | |||
| 4
    
        Aleksey 21.01.20✎ 10:37 | 
        Никак, ибо в самой КД заложены битые ссылки. Так как владелец может быть загружен позже. Т.е. на доанном этапе ссылка битая, а уже в конце загрузки или в следующем пакете - опа и всё норм     | |||
| 5
    
        mikecool 21.01.20✎ 11:09 | 
        (4) по идее - номенклатура выгружается раньше, чем документ, в котором она участвует, порядок у нее будет меньше     | |||
| 6
    
        Бешеный заяц 21.01.20✎ 13:55 | 
        Не буду плодить отдельную тему, еще вопрос связанный с данным вопросом.
 В модуле "После загрузки" пытаюсь выполнить проверку на битую ссылку Если СокрЛП(Объект.Владелец.Код) = "" Тогда Отказ = Истина; КонецЕсли; В результате получаю ошибку при этом открываю УПП вижу что у регистра "Штрихкоды" Владелец есть, подскажите в чем проблема? как лечить? Ошибка в обработчике события ПослеЗагрузкиОбъекта ИмяПКО = ШтрихкодыНоменклатуры ТипОбъекта = Регистр сведений набор записей: Штрихкоды Объект = РегистрСведенийНаборЗаписей.Штрихкоды Обработчик = ПослеЗагрузкиОбъекта ОписаниеОшибки = Поле объекта не обнаружено (Владелец) ПозицияМодуля = (1) КСообщенияОбОшибках = 21 | |||
| 7
    
        Бешеный заяц 21.01.20✎ 13:56 | 
        может существуют особенности для конвертации регистров?     | |||
| 8
    
        mikecool 21.01.20✎ 13:56 | 
        а что есть объект в этом случае? Добавть сначала 
 Сообщить(Объект); Сообщить(ТипЗнч(Объект)); | |||
| 9
    
        Cyberhawk 21.01.20✎ 13:59 | 
        Веселуха будет когда в одном сообщении обмена будет и сам объект (новый, которого еще нет в приемнике), и запись регистра с этим объектом, и:
 - нет управления порядком объектов при загрузке или - нет механизма пропуска ошибочных объектов в приемнике с передачей и перерегистрацией оных в источнике . | |||
| 10
    
        Cyberhawk 21.01.20✎ 13:59 | 
        Второе, исходя из постановки, автору без первого не подойдет, и первого тоже нет     | |||
| 11
    
        Бешеный заяц 21.01.20✎ 14:03 | 
        (8) РегистрСведенийНаборЗаписей.Штрихкоды и Регистр сведений набор записей: Штрихкоды     | |||
| 12
    
        Cyberhawk 21.01.20✎ 14:05 | 
        (11) Не томи, давай уже структуру регистра из дерева метаданных     | |||
| 13
    
        Бешеный заяц 21.01.20✎ 14:09 | ||||
| 14
    
        Cyberhawk 21.01.20✎ 14:11 | 
        Ну добавь тогда еще
 Сообщить(Объект.Владелец); Сообщить(ТипЗнч(Объект.Владелец)); | |||
| 15
    
        Бешеный заяц 21.01.20✎ 14:18 | 
        (14)  Поле объекта не обнаружено (Владелец)     | |||
| 16
    
        Бешеный заяц 21.01.20✎ 14:19 | 
        по метаданным набора записей можно циклом пройтись посмотреть что там вообще есть?     | |||
| 17
    
        palsergeich 21.01.20✎ 14:19 | 
        (16) Можно     | |||
| 18
    
        Бешеный заяц 21.01.20✎ 14:21 | 
        (17) не по метаданным регистра. а именно текущего набора записей, тогда вопрос как?     | |||
| 19
    
        Бешеный заяц 21.01.20✎ 14:23 | 
        возможно особенности какие есть при работе с регистром сведений в конвертации? это же не совсем объект на подобно документу или справочнику.     | |||
| 20
    
        Cyberhawk 21.01.20✎ 14:23 | 
        А, ну так у тебя ж набор, а не запись. Нет у набора никаких свойств-измерений регистра.     | |||
| 21
    
        Cyberhawk 21.01.20✎ 14:24 | 
        Объект[0].Владелец - вот так будет     | |||
| 22
    
        pechkin 21.01.20✎ 14:27 | 
        (9) если в выгружаются объекты по ссылкам, то такого быть не может     | |||
| 23
    
        Cyberhawk 21.01.20✎ 14:29 | 
        (22) Как скажешь     | |||
| 24
    
        Бешеный заяц 21.01.20✎ 14:46 | 
        (21) на владельца продолжает ругаться, но уже в другом месте в попытке исключения
 Если СокрЛП(Объект[0].Владелец.Код) = "" Тогда Отказ = Истина; КонецЕсли; Попытка Если Объект.Владелец[0].ВидНоменклатуры.код = "000000046" или Объект[0].Владелец.ВидНоменклатуры.код = "000000003" и НЕ Отказ Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ 1 | СоответствияНоменклатуры.НоменклатураИсточник, | СоответствияНоменклатуры.ХарактеристикаИсточник |ИЗ | РегистрСведений.СоответствияНоменклатуры КАК СоответствияНоменклатуры |ГДЕ | СоответствияНоменклатуры.НоменклатураПриемник = &НоменклатураПриемник | И СоответствияНоменклатуры.ХарактеристикаПриемник = &ХарактеристикаПриемник"; Запрос.УстановитьПараметр("НоменклатураПриемник",Объект[0].Владелец); Запрос.УстановитьПараметр("ХарактеристикаПриемник",Объект[0].ХарактеристикаНоменклатуры); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); Объект[0].Владелец = Выборка.НоменклатураИсточник; Объект[0].ХарактеристикаНоменклатуры = Выборка.ХарактеристикаИсточник; Объект[0].ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка(); КонецЕсли; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; | |||
| 25
    
        Бешеный заяц 21.01.20✎ 15:21 | 
        (24) нашел косяк в коде всем спасибо     | |||
| 26
    
        Бешеный заяц 22.01.20✎ 12:16 | 
        Еще одна проблема ОТКАЗ = Истина для регистра сведений не работает, как обойти?
 те у меня набор, соответственно если у меня в наборе есть не заполненный владелец ставлю отказ=истина те не загружать, в результате у меня всё равно грузит запись с битыми ссылками. Вопрос как грамотно удалить запись набора? если написать Запись.Удалить() то у меня цикл посыпется если нет следующей записи ? Для Каждого Запись Из Объект Цикл Если НЕ ЗначениеЗаполнено(Запись.Владелец) или СокрЛП(Запись.Владелец.Код) = "" Тогда ЗаписьЖурналаРегистрации("Загрузка ШК",,,, "Сработал отказ: "+СокрЛП(Запись.Владелец.Код)); Отказ = Истина; Иначе ЗаписьЖурналаРегистрации("Загрузка ШК",,,, "Проверка пройдена: "+СокрЛП(Запись.Владелец.Код)); КонецЕсли; КонецЦикла; | |||
| 27
    
        Бешеный заяц 22.01.20✎ 12:22 | 
        (26) да и Запись.Удалить() вообще не работает нужно видимо Объект.Удалить(индекс)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |