|
Создание единицы измерения при конвертации данных | ☑ | ||
---|---|---|---|---|
0
ДедUndead
16.11.16
✎
14:51
|
Коллеги, добрый день.
Подскажите, как сделать лучше следующее. КД 2.1.8 Переношу данные в УТ 11.2. В источнике на номенклатуре нет единиц измерения. При переносе элемента номенклатуры в ПКО в обработчике ПослеЗагрузки создаю новый элемент справочника УпаковкиЕдиницыИзмерения. Но есть одно но - элемент номенклатуры - владелец единицы измерения в этот момент еще не записан, поэтому запись единицы измерения падает с ошибкой - не установлено поле Номенклатура. Как лучше создать и записать элемент подчиненного справочника при переносе номенклатуры? |
|||
1
Timon1405
16.11.16
✎
14:53
|
а типовые правила это момент не рассматривают?
|
|||
2
ДедUndead
16.11.16
✎
15:12
|
Исходная - самописанный шлак.
|
|||
3
DailyLookingOnA Sunse
16.11.16
✎
15:19
|
В самописном шлаке в модуле объектов в обработчике ПриЗаписи нужно поставить
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; |
|||
4
ДедUndead
16.11.16
✎
15:24
|
Оттуда данные читаются, пишутся в УТ 11.2. При переносе номенклатуры надо создать единицу измерения - подчиненный номенклатуре справочник.
|
|||
5
takefive
16.11.16
✎
15:24
|
ПКО без источника слабо нарисовать?
|
|||
6
ДедUndead
16.11.16
✎
15:25
|
Конечно, я могу это сделать в обработчике в конечной базе. Вопрос - как это сделать при конвертации?
|
|||
7
ДедUndead
16.11.16
✎
15:25
|
(5) Была такая мысль, не додумал, видимо.
|
|||
8
takefive
16.11.16
✎
15:28
|
хотя бы поля поиска... Остальное можно заполнить после загрузки
|
|||
9
ДедUndead
16.11.16
✎
15:29
|
(8) А подробнее можно? Как искать в Упаковках?
|
|||
10
Йохохо
16.11.16
✎
15:33
|
одноразовый перенос или обмен?
|
|||
11
ДедUndead
16.11.16
✎
15:35
|
Одноразовый
|
|||
12
takefive
16.11.16
✎
15:35
|
получить из входящих.В ПКС собираешь в структуру исходящих, в пко только флажки поставить
|
|||
13
DailyLookingOnA Sunse
16.11.16
✎
15:41
|
Да как костыль, в обработчике ПослеЗагрузки объект номенклатуры можно и записать.
|
|||
14
ДедUndead
16.11.16
✎
15:42
|
Вот вариант - В ПКС Упаковок я указываю, что получаю свойство владелец из входящих данных. При выгрузке номенклатуры их источника в обработчике послевыгрузки создаю исходящие данные и выгружаю по правилу. при загрузке упаковок проверяю, есть ли запись с таким владельцем, заполняю реквизиты. Вроде все.
|
|||
15
ДедUndead
16.11.16
✎
15:43
|
(13) пробовал, ошибки при записи, не хочется так делать.
|
|||
16
takefive
16.11.16
✎
15:48
|
(14) Нет... В ПКО Единицы измерения
|
|||
17
DailyLookingOnA Sunse
16.11.16
✎
15:48
|
"загрузке упаковок проверяю, есть ли запись с таким владельцем, заполняю реквизиты." - вот это непонятно.
А так всегда хватает ПКО, которое вызывается через ВыгрузитьПоПравилу и в которое передаются входящие данные. Даже если владелец еще не записан, ссылка на него есть либо в виде ГУИДа, либо будет создана по полям поиска. |
|||
18
takefive
16.11.16
✎
15:50
|
В ПКС ЕдиницаИзмеренияОстатков ты формируешь исходящую структуру для ПКО ЕдиницыИзмерения
|
|||
19
ДедUndead
16.11.16
✎
15:53
|
В исходной нет единиц измерения. я что-то не понимаю, видимо.
|
|||
20
ДедUndead
16.11.16
✎
15:54
|
Я не понимаю, как искать в справочнике УпаковкиЕдиницыИзмерения, по каким полям исходной базы?
|
|||
21
takefive
16.11.16
✎
15:57
|
как костыль
После загрузки Номенклатура пиши Объект.Записать(); Создаешь единицы где владелец Объект.Ссылка Присваиваешь полям объекта единицы и еще раз Объект.Записать(); |
|||
22
h-sp
16.11.16
✎
15:58
|
(20) поле Владелец.
|
|||
23
ДедUndead
16.11.16
✎
15:59
|
(21) Да, делал так уже. Ошибки при записи номенклатуры, хочется написать чистые правила.
|
|||
24
h-sp
16.11.16
✎
16:02
|
(23) ПолучитьСсылкуНового делай тогда
|
|||
25
ДедUndead
16.11.16
✎
16:02
|
(24) Делал. Не работает.
|
|||
26
ДедUndead
16.11.16
✎
16:03
|
(24) Ссылку по GUID, устанавливал - ошибка та же при записи.
|
|||
27
takefive
16.11.16
✎
16:16
|
Ты сделал ПКО для единиц измерения?
|
|||
28
ДедUndead
16.11.16
✎
16:20
|
Нет единиц измерения в источнике. В том-то и дело.
|
|||
29
ДедUndead
16.11.16
✎
16:20
|
Там нет штук, килограммов, метров и т.д.
|
|||
30
ДедUndead
16.11.16
✎
16:20
|
(27) Нет такого справочника.
|
|||
31
takefive
16.11.16
✎
16:20
|
без источника
|
|||
32
takefive
16.11.16
✎
16:21
|
приемник же есть
|
|||
33
takefive
16.11.16
✎
16:22
|
поля источник ПУСТЫЕ в ПКО и его ПКС
|
|||
34
takefive
16.11.16
✎
16:23
|
Как минимум должно быть ПКС Владелец
|
|||
35
gorakh
16.11.16
✎
16:25
|
(27) 1) Использовать обработчик "после загузки"
|
|||
36
ДедUndead
16.11.16
✎
16:25
|
Сделал так. ПКС Владелец, из входящих данных. Поля пусты.е
|
|||
37
ДедUndead
16.11.16
✎
16:26
|
Пробую собрать все.
|
|||
38
takefive
16.11.16
✎
16:27
|
Укажи поля поиска - флажки
|
|||
39
ДедUndead
16.11.16
✎
16:29
|
В ПКС Владелец?
|
|||
40
takefive
16.11.16
✎
16:30
|
да. Искать в приемнике нужно по владельцу
|
|||
41
ДедUndead
16.11.16
✎
16:31
|
Да, сделал. Пытаюсь все запустить...
|
|||
42
takefive
16.11.16
✎
16:32
|
В пко есть кнопка, которая тебе создаст код структуры входящих. Его вставь в ПКС ед. ПКО номенклатуры
|
|||
43
takefive
16.11.16
✎
16:35
|
и напиши заполнение этой структуры
|
|||
44
ДедUndead
16.11.16
✎
16:38
|
не увидел. Что-то совсем затупил - если у ПКО нет источника, соответственно, я не могу создать ПВО. И, соответственно, не смогу выполнить обработчик ПослеЗагрузки и заполнить новую упаковкуединицуизмерения...
|
|||
45
takefive
16.11.16
✎
16:41
|
ПВО тебе не нужен. Ты же выгружаешь Номенклатуру а не ед...
|
|||
46
ДедUndead
16.11.16
✎
16:42
|
Да, но как мне тогда заполнить поля новой подчиненной единицы измерения?... Ведь в исходной такого справочника нет.
|
|||
47
takefive
16.11.16
✎
16:43
|
Для номенклатуры создай ПКС без источника. Приемник Единица
|
|||
48
takefive
16.11.16
✎
16:44
|
Укажи правило которое ты только что создал
|
|||
49
ДедUndead
16.11.16
✎
16:46
|
а, не надо создавать пко без источника. Только ПКС для номенклатуры без источника...
|
|||
50
ДедUndead
16.11.16
✎
16:49
|
Создал ПКС, источник пустой, приемник Номенклатура.ЕдиницаИзмерения. дальше что?
|
|||
51
ДедUndead
16.11.16
✎
16:49
|
У меня почти 12 ночи, уже все, видимо..
|
|||
52
takefive
16.11.16
✎
16:49
|
Перед выгрузкой Сформируй структуру исходящих для твоего правила
|
|||
53
takefive
16.11.16
✎
16:51
|
ого... Да это все вро де бы. т.е. ты передаешь В ПКО без источника данные. Удачи
|
|||
54
ДедUndead
16.11.16
✎
16:52
|
а где там эта кнопка?..
|
|||
55
ДедUndead
16.11.16
✎
16:54
|
В ПКО для Номенклатуры?
|
|||
56
Михаил Козлов
16.11.16
✎
16:54
|
Делал так (в ПослеЗагрузки в справочнике Номенклатура):
Если Объект.ЭтоНовый() Тогда ЗаписатьОбъектВИБ(Объект, Тип("СправочникСсылка.Номенклатура")); КонецЕсли;// это чтобы ссылка появилась // собственно ЕХО Если НЕ Объект.ЭтоГруппа И НЕ Объект.Услуга И (НЕ ЗначениеЗаполнено(Объект.ЕдиницаХраненияОстатков) ИЛИ Объект.ЕдиницаХраненияОстатков.Владелец <> Объект.Ссылка) Тогда Если (НЕ ЗначениеЗаполнено(Объект.ЕдиницаХраненияОстатков) ИЛИ Объект.ЕдиницаХраненияОстатков.Владелец <> Объект.Ссылка) И НЕ Объект.ЭтоГруппа Тогда ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка); Если ВыборкаЕдиниц.Следующий() Тогда НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка; Иначе НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = СокрЛП(Объект.БазоваяЕдиницаИзмерения); НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; НайденнаяЕдиницаОбъект.Владелец = Объект.Ссылка; НайденнаяЕдиницаОбъект.УстановитьНовыйКод(); //НайденнаяЕдиницаОбъект.Записать(); ЗаписатьОбъектВИБ(НайденнаяЕдиницаОбъект, Тип("СправочникСсылка.ЕдиницыИзмерения")); НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка; КонецЕсли; Объект.ЕдиницаХраненияОстатков = НайденнаяЕдиница; Если НЕ ЗначениеЗаполнено(Объект.ЕдиницаДляОтчетов) Тогда Объект.ЕдиницаДляОтчетов = НайденнаяЕдиница; КонецЕсли; ИначеЕсли ЗначениеЗаполнено(Объект.ЕдиницаХраненияОстатков) И НЕ ЗначениеЗаполнено(Объект.ЕдиницаХраненияОстатков.Наименование) Тогда НайденнаяЕдиницаОбъект = Объект.ЕдиницаХраненияОстатков.ПолучитьОбъект(); НайденнаяЕдиницаОбъект.Наименование = СокрЛП(Объект.БазоваяЕдиницаИзмерения); НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения; ЗаписатьОбъектВИБ(НайденнаяЕдиницаОбъект, Тип("СправочникСсылка.ЕдиницыИзмерения")); КонецЕсли; КонецЕсли; |
|||
57
takefive
16.11.16
✎
16:54
|
на последней закладке. Закладка есть только когда есть флаг получить из входящих. В ПКО для Единицы
|
|||
58
ДедUndead
16.11.16
✎
16:59
|
Про закладку пока смутно, видимо, завтра продолжу. Не понял, завтра все соберу. Всем спасибо, за код, за советы.
|
|||
59
ДедUndead
16.11.16
✎
16:59
|
Первый раз работаю с КД.
|
|||
60
ДедUndead
16.11.16
✎
17:03
|
Все, дошло про исходящие. Спасибо takefive!!!
|
|||
61
ДедUndead
16.11.16
✎
17:04
|
Завтра напишу про результат.
|
|||
62
ДедUndead
16.11.16
✎
17:10
|
А, нет. Есть поле ЕдиницаИзмерения, которое надо заполнить. В исходящих я не смогу это поле заполнить - нет такого типа в исходной базе.
|
|||
63
takefive
16.11.16
✎
18:58
|
После загрузки заполняй
|
|||
64
patapum
16.11.16
✎
19:43
|
(0) как вариант, если не думать, для одноразовой загрузки. делаешь правило Номенклатура - Номенклатура и правило Номенклатура - Единица. сначала грузишь по первому. когда грузишь по второму - номенклатура уже есть.
|
|||
65
ДедUndead
17.11.16
✎
10:32
|
(64) Да, тоже вариант, хотел сделать за один раз. Не исключено, что эта загрузка может меняться потом и проходить несколько раз. Кто знает.
|
|||
66
ДедUndead
17.11.16
✎
12:18
|
Все получилось, всем спасибо.
Сделал ПКО УпаковкиЕдиницыИзмерения с пустым источником и приемником УпаковкиЕдиницыИзмерения. Указал в ПКО ПКС с приемником Владелец и получением из входящих данных. Обработчик ПослеЗагрузки этого ПКО <code> ЕдиницаШтука = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("796"); Объект.ЕдиницаИзмерения = ЕдиницаШтука; Объект.КоличествоУпаковок = 1; Объект.МеждународноеСокращение = ЕдиницаШтука.МеждународноеСокращение; Объект.НаименованиеПолное = ЕдиницаШтука.НаименованиеПолное; Объект.Наименование = ЕдиницаШтука.Наименование; Объект.ТипУпаковки = ЕдиницаШтука.ТипУпаковки; </code> В ПКО Номенклатура указал обработчик ПослеВыгрузки <code> ИсходящиеДанные = Новый Структура("Владелец"); ИсходящиеДанные.Владелец = Источник.Ссылка; ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"УпаковкиЕдиницыИзмерения"); </code> И там же ПослеЗагрузки <code> Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар; Если НЕ ЗначениеЗаполнено(Объект.ЕдиницаИзмерения) Тогда Единицы = Справочники.УпаковкиЕдиницыИзмерения.Выбрать(, Объект.Ссылка); Если Единицы.Следующий() Тогда Объект.ЕдиницаИзмерения = Единицы.Ссылка; Объект.ЕдиницаДляОтчетов = Единицы.Ссылка; Объект.КоэффициентЕдиницыДляОтчетов = 1; КонецЕсли; КонецЕсли; </code> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |