Имя: Пароль:
1C
1С v8
Конвертация данных. Загрузка единиц измерения
0 Slon747
 
02.06.19
09:52
Обмен между УТ10 и УТ10.
Т.к. у единиц измерений владелец номенклатура, то сначала в базе-приемнике должен создаться элемент номенклатуры, а потом единица измерений.
Как правильно реализовать обмен?
Пока что в ПослеЗагрузки номенклатуры прописал это:

Если НЕ Объект.ЭтоГруппа И НЕ Объект.Услуга И ЗначениеЗаполнено(Объект.БазоваяЕдиницаИзмерения) Тогда
    
    ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка);
    
    Если ВыборкаЕдиниц.Следующий() Тогда
        НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
        НайденнаяЕдиницаОбъект = НайденнаяЕдиница.ПолучитьОбъект();
    КонецЕсли;
        
    Объект.ЕдиницаХраненияОстатков = НайденнаяЕдиница;
    Если НЕ ЗначениеЗаполнено(Объект.ЕдиницаДляОтчетов) Тогда
        Объект.ЕдиницаДляОтчетов = НайденнаяЕдиница;
    КонецЕсли;

КонецЕсли;

В итоге при первой загрузке единица хранения остатков и отчетов пустые. Заполняются только при повторной загрузке.
1 OnNeOn
 
02.06.19
10:11
Попробуй В ПКО правило выгрузки единиц измерения положить выше номенклатуры.
2 Slon747
 
02.06.19
10:37
(1) Не пойму. А как положить выше номенклатуры?
3 ДенисЧ
 
02.06.19
10:57
(2) У правила есть поле порядок
4 Slon747
 
02.06.19
11:00
(3) Нашел синие стрелки вверх-вниз.
Но ЕдиницыИзмерения у меня выше номенклатуры стоит.

P.S. В настройках ПКО единиц измерений установлена галочка "Искать объект приемника по внутреннему идентификатору"
5 hhhh
 
02.06.19
11:18
(4) попробуй тогда ниже номенклатуры
6 Slon747
 
02.06.19
13:03
(5) К сожалению, не помогло(
7 OnNeOn
 
02.06.19
13:09
(6) Ты через что выгружаешь данные? Через план обмена или обработку Универсальный обмен в формате XML?
8 OnNeOn
 
02.06.19
13:12
И я надеюсь ты выгружаешь 1 документ, у тебя на обмене не пачка документов разных типов?
9 OnNeOn
 
02.06.19
13:14
И да, проверь что у тебя правильные правила подставляются, у меня бывало, что они кешировались. Напиши какую-нибудь дичь в правилах, и проконтролируй, что бы она выполнилась.
10 Slon747
 
02.06.19
13:14
(7) Обмен через УниверсальныйОбменДаннымиXML.epf
(8) Пока что выгружаю только справочники
11 OnNeOn
 
02.06.19
13:16
(10) Выгружай 1 запись справочника номенклатуры. Все выгружать тебе не нужно. Выгрузи 1 Запись справочника, загрузи ее и посмотри в ЖР что у тебя с номенклатурой, у меня подозрение, что она перезаписывается несколько раз в течении одной загрузки данных.
12 hhhh
 
02.06.19
13:58
(4) запиши объект хотя бы

Объект.Записать();
ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка);

а то, сам понимаешь, что у незаписанного объекта, Объект.Ссылка не существует
13 Slon747
 
02.06.19
14:04
(12) Я ранее пробовал Объект.Записать(); в событии ПослеЗагрузки. Но почему-то в момент загрузки ругалась на "Записать".
Потом проверил отладчиком.
Заметил, что ЕдиницаДляОтчетов заполнена верно, а ЕдиницаХранения - пустая.
Убрал весь текст из ПослеЗагрузки и единицы измерения загрузились.
Вероятно, нужно было просто поднять номенклатуру выше единиц измерения и больше ничего не делать.
Всме спасибо.
14 Ёпрст
 
гуру
03.06.19
09:23
(0) Какой-то х..ней занимаешься. Всё и так работает, штатно. Достаточно иметь 2 ПКО - один ПКО для справочника Единицы измерения и один, для номенклатуры. И о чудо - всё работает и без танцев с бубном и без кода в обработчиках событий.
AdBlock убивает бесплатный контент. 1Сергей