| 
    
            
         
         | 
    
    
  | 
Правила конвертации, выгружаю только ссылку как проверить что объект есть в приемнике? | ☑ | ||
|---|---|---|---|---|
| 
    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) да и Запись.Удалить() вообще не работает нужно видимо Объект.Удалить(индекс)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |