![]() |
![]() |
![]() |
|
Конвертация v2: Как у справочника Единицы Измерения поменять тип Владелец? | ☑ | ||
---|---|---|---|---|
0
Castlevania
14.07.09
✎
12:49
|
Создали обмен между УТ и УПП. Правила конвертации использовали те, которые создавались автоматически. Появилась проблема: номенклатура выгружается с пустыми единицами измерения. Посоветовали в ПКО Единицы Измерения в событии ПерезВыгпузкой добавить код : Если Правила.Номенклатура.Выгруженные[Источник.Владелец] = Неопределено Тогда
ВыгрузитьПоПравилу(Источник.Владелец); КонецЕсли; Но выдается ошибка. Выяснилось, что в ПКО Единицы Измерения у реквизита Владелец пустые значения Источника и Приемника. Попробовала поменяла вручную на СправочникСсылка. Номенклатура и справочник.Ссылка.Номенклатурные группы. Но выдается ошибка "Ошибка при выгрузке данных для узла плана обмена ТипОбъекта = Документ объект: Реализация товаров и услуг Объект = Реализация товаров и услуг М0000000010 от 08.07.2009 13:11:07 ОписаниеОшибки = Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = ЕдиницыИзмерения (СправочникСсылка.ЕдиницыИзмерения --> СправочникСсылка.ЕдиницыИзмерения) Объект = шт (Справочник ссылка: Единицы измерения) Обработчик = ПередВыгрузкойОбъекта ОписаниеОшибки = Получение элемента по индексу для значения не определено" |
|||
1
ТелепатБот
гуру
14.07.09
✎
12:49
|
||||
2
DUDE
14.07.09
✎
13:53
|
Я в похожей ситуации добавил в ПКО номенклатуры в ПослеЗагрузки проверку в том случае, когда объект уже повторно переносился, на наличие движений для единицы хранения остатков, а для остальных единиц - проверку на пустоту: если переносимый реквизит на данный момент пуст, то берем значение из реквизита ссылки, иначе - из реквизита самого объекта.
Кроме этого убрал правило выгрузки ЕдиницИзмерения. И стал их выгружать только вместе с номенклатурой. Саму проблему это решило. Наверное, есть и другие способы, но времени всегда не хватает. |
|||
3
Castlevania
14.07.09
✎
13:57
|
(2) Мне сложно представить как это описать
|
|||
4
Castlevania
14.07.09
✎
14:07
|
(2)Как описать условие, когда объект уже повторно переносился
|
|||
5
DUDE
14.07.09
✎
14:08
|
У меня это выглядит так:
Если (НЕ Объект.ЭтоГруппа) Тогда Если ОбъектНайден Тогда // проверяем ссылки на ед.хранения остатков, для остальных единиц - проверяем, что переносятся непустые Запрос = Новый Запрос(); Запрос.УстановитьПараметр("ТекущийВладелец", Ссылка); ТипНоменклатура = ТипЗнч(Справочники.Номенклатура.ПустаяСсылка()); Запрос.Текст = ""; Для Каждого РегистрНакопления Из Метаданные.РегистрыНакопления Цикл Для Каждого РеквизитРегистра Из РегистрНакопления.Измерения Цикл Если РеквизитРегистра.Тип.СодержитТип(ТипНоменклатура) Тогда Если Запрос.Текст <> "" Тогда Запрос.Текст = Запрос.Текст + " |ОБЪЕДИНИТЬ ВСЕ |"; КонецЕсли; Запрос.Текст = Запрос.Текст + " |ВЫБРАТЬ ПЕРВЫЕ 1 | РегистрНакопления."+РегистрНакопления.Имя+"."+РеквизитРегистра.Имя+" КАК Номенклатура |ГДЕ | "+РеквизитРегистра.Имя+" = &ТекущийВладелец |"; КонецЕсли; КонецЦикла; КонецЦикла; СуществуютСсылки = НЕ Запрос.Выполнить().Пустой(); Попытка Если (Не Объект.Услуга) И (Объект.ЕдиницаХраненияОстатков.Пустая() И (НЕ Ссылка.ЕдиницаХраненияОстатков.Пустая())) Тогда Объект.ЕдиницаХраненияОстатков = Ссылка.ЕдиницаХраненияОстатков; ИначеЕсли (Не Объект.Услуга) И (Ссылка.ЕдиницаХраненияОстатков <> Объект.ЕдиницаХраненияОстатков) И СуществуютСсылки Тогда // не будем ругаться, если единица пустая Если НЕ Объект.ЕдиницаХраненияОстатков.Пустая() Тогда ТекстСообщения = "Единица """ + СокрЛП(Ссылка.ЕдиницаХраненияОстатков) + """ является единицей хранения остатков для """ + Объект.Наименование + """ |и уже участвует в товародвижении. |Изменить эту единицу уже нельзя!"; ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения); КонецЕсли; Объект.ЕдиницаХраненияОстатков = Ссылка.ЕдиницаХраненияОстатков; КонецЕсли; Исключение // не подменяем ед.изм. Объект.ЕдиницаХраненияОстатков = Ссылка.ЕдиницаХраненияОстатков; КонецПопытки; Объект.ЕдиницаДляОтчетов = ?(Объект.ЕдиницаДляОтчетов.Пустая(), Ссылка.ЕдиницаДляОтчетов, Объект.ЕдиницаДляОтчетов); Объект.ЕдиницаИзмеренияМест = ?(Объект.ЕдиницаИзмеренияМест.Пустая(), Ссылка.ЕдиницаИзмеренияМест, Объект.ЕдиницаИзмеренияМест); КонецЕсли; КонецЕсли; Заранее извиняюсь за недостатки форматирования. |
|||
6
DUDE
14.07.09
✎
14:10
|
Факт повторно переноса, по идее, указывается флагом ОбъектНайден (то есть, что этот объект по УИД или полям поиска был найден в базе-получателе.
Код кривоват, но задачу решает. |
|||
7
Castlevania
14.07.09
✎
14:11
|
(6) Спасибо огромное сейчас попробую. А тогда тип Приемника и Источника какой будет?
|
|||
8
DUDE
14.07.09
✎
14:14
|
Код выполняется уже при загрузке данных. А тип Приемника, Источника регулирует выгрузку, их я не менял - Номенклатура в Номенклатура, Ед.изм. в Ед. изм.
|
|||
9
Castlevania
14.07.09
✎
15:05
|
(8)Не работает:(
|
|||
10
Castlevania
14.07.09
✎
15:07
|
Единицы измерения не переносятся
|
|||
11
DUDE
14.07.09
✎
15:21
|
На каком этапе не работает? При выгрузке или загрузке?
Кстати, возвращаясь к (0), может быть в "Правила.Номенклатура.Выгруженные[Источник.Владелец]" нужно передавать или тип владельца строкой или делать поиск (я так понимаю это массив выгруженных объектов): Правила.Номенклатура.Выгруженные.Найти(Источник.Владелец) = НЕОПРЕДЕЛЕНО так как оператор [] не предполагает передачи самого значения. |
|||
12
Castlevania
14.07.09
✎
15:31
|
(11) Отключила выгрузку Единиц Измерения, в ПКО Номенклатура в событии после загрузки добавила данный код. Выгрузила документы из УТ-загрузила в УПП. Но номенклатура все также без единиц измерения.
А насчет [Источник.Владелец]-У меня было правило для первоначального переноса-там этот код работал. Для автообмена я взяла правило, которое создается при натройке обмена, и добавила к нему установку счетов номенклатуры |
|||
13
DUDE
14.07.09
✎
15:34
|
Попробуй выгрузить один документ в файловом режиме и посмотреть сам файл - все ли выгружается.
|
|||
14
Castlevania
14.07.09
✎
15:48
|
(13) Единица измерения не проставлятся в Номенклатуре
|
|||
15
Castlevania
14.07.09
✎
15:49
|
(13) Пробовала документы кидать этими же правилами через Унивесальный Обмен в формате XML-та же беда
|
|||
16
Castlevania
14.07.09
✎
15:51
|
Пробовала в план обмена запихнуть свои рабочие правила-но такая ошибка: Получение элемента по индексу для значения не определено
Хотя через Унивесальный Обмен в формате XML они работают |
|||
17
DUDE
14.07.09
✎
15:54
|
Если данных нет уже в файле обмена, значит проблемы с выгрузкой.
|
|||
18
Castlevania
14.07.09
✎
16:16
|
Сделала! В ПКО Единицы Измерения у реквизита Владелец задала Правило Конвертации-Номенклатура. Алгоритм использовала тот, который вы написали. Теперь номенклатура с единицами измерения
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |