|
Вопрос по Конвертации | ☑ | ||
---|---|---|---|---|
0
mzelensky
08.08.14
✎
08:37
|
Доброго всем!
Правила переноса из УТ в УТ для Украины (с политической веткой не путать!). Задача такая: Перегружаю справочник номенклатуры. У номенклатуры есть реквизит "Вид номенклатуры" (это другой спраочник). Нужные виды номенклатуры в приемнике уже созданы и пролисходит лишь их поиск по наименованию (если не нашли, то и не создаем). Нужно чтобы при выгрузке номенклатуры если стоит галочка "учет характеристик" (в источнике), то в приемнике вид номенклатуры искался по наименованию "ВидСХарактеристикой", а если галочки в источнике НЕТ, то искать в приемнике вид номенклатуры с наименованием "ВидБезХарактеристики". Как это настроить? |
|||
1
mzelensky
08.08.14
✎
08:39
|
Идеи такие: перед выгрузкой номенклатуры проверять нужную мне галочку и как-то надо запускать то или иное правило выгрузки для справочника "Вид номенклатуры"...но не представляю как оно потом будет загружаться.
|
|||
2
mehfk
08.08.14
✎
08:40
|
Обработчики "Правила конвертации объектов"
Поля поиска Условия возникновения события Только для платформы V8. Событие выполняется при поиске элемента ссылочного типа. Если установлен поиск по уникальнму идентификатору и программа нашла элемент, то поиск прекращается. Если поиск по уникальному идентификатору не дал положительного результата и указано, что нужно продолжить поиск в этом случае или поиск по уникальному идентификатору не проводился, то программа пытается найти элементы по свойствам поиска. В обработчике нужно установить список полей через запятую по которым нужно проводить поиск. Если очередная попытка дала положительный результат, то поиск прекращается. Поиск возможен только по тем полям у которых на этапе выгрузка был установлен флаг поиска данных!!! Параметры: НомерВариантаПоиска - число. Номер попытки поиска. Попыток поиска может быть не больше 10. СвойстваПоиска – соответствие, в котором хранятся текущие значения реквизитов поиска. Эти значения можно использовать в произвольных алгоритмах для идентификации объектов ИБ при загрузке данных. Следует иметь в виду, что при создании нового объекта, значения из соответствия СвойстваПоиска используются для заполнения свойств нового объекта. ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры, переданные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено. В данном обработчике соответствие содержит только те параметры, для которых установлен признак поиска. ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект. СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным УстанавливатьУОбъектаВсеСвойстваПоиска - булево. Определяет нужно ли после удачного завершения поиска установить объекту все реквизиты поиска. Объект может быть найден по части реквизитов. Этот флаг определяет нужно оставшиеся реквизиты, которые не участвовали в поиске (но по которым поиск возможен) установить объекту или нет. Значение по умолчанию: Истина. НастройкаПоиска - строка. Выбранный пользователем вариант сопоставления объектов. В ПКО есть таблица Варианты настроек полей поиска - с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика "Поля поиска". Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска - пустая строка. СтрокаИменСвойствПоиска – строка в которой задаются ключевые поля варианта поиска. Могут быть указаны только те свойства, для которых при настройке правил обмена был выставлен флаг поиска. Пример: Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Код, Наименование"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Код"; Иначе СтрокаИменСвойствПоиска = "Наименование"; КонецЕсли; |
|||
3
mzelensky
08.08.14
✎
08:44
|
(2) Оно в любом случае по наименованию будет (сейчас так и на строено). Просто если стоит галка в номенклатуре, то наименование для поиска справочника Вид номенклатуры "ВидСХарактеристикой", а если нет галки, то наименование для поиска справочника Вид номенклатуры "ВидБезХарактеристики"
|
|||
4
m-serg74
08.08.14
✎
08:44
|
(1) нафиг мудрить у свойства ВидНоменклатуры в зависимости от галки
Значение = "ВидС/БезХарактеристик" в ПКО ВидНоменклатуры Поиск по наименованию у свойства Наименование перед выгрузкой Значение = Источник; и всё |
|||
5
mzelensky
08.08.14
✎
08:48
|
(4) потому что в источнике НЕТ такого вида номенклатуры, какой мне нужен в приемнике. В Источнике везде вид номенклатуры "Товар", а в приемнике в зависимости от галочки должен подставляться вид номенкдлатуры "Товар с характеристикой" или "Товар без характристики"
|
|||
6
Alex S D
08.08.14
✎
09:01
|
(5) тебе же сказали, наименование меняется на то что тебе нужно, при выгрузке
|
|||
7
m-serg74
08.08.14
✎
09:22
|
(5) вроде всё доступно написал, я ХЗ...
|
|||
8
toypaul
гуру
08.08.14
✎
09:37
|
В обработчике, который отрабатывает поиск (не помню как называется) есть возможность указать найденный элемент и указать что поиск завершен.
|
|||
9
toypaul
гуру
08.08.14
✎
09:38
|
В правиле конвертации нужно настроить конвертацию по наименованию. Либо конвертацию по справочнику и по наименованию.
|
|||
10
Boroda
08.08.14
✎
09:38
|
(1) Как вариант:
Создай 2 правила: одно с характериками, другое - без. В первом в "Перед выгрузкой" напиши что-то типа: Если НЕ Источник.УчетХарактеристик Тогда Отказ = Истина; КонецЕсли; в другом правиле убери "НЕ" |
|||
11
toypaul
гуру
08.08.14
✎
09:40
|
что-то гоню я. никакого обработчика поиска тут не надо
|
|||
12
mzelensky
08.08.14
✎
09:43
|
(7) Я не понял вот про это:
в ПКО ВидНоменклатуры Поиск по наименованию у свойства Наименование перед выгрузкой Значение = Источник; Что за поиск по наименованию у свойства наименования? |
|||
13
toypaul
гуру
08.08.14
✎
09:44
|
в ПКС Наименование написать
Если Источник.МояГалка Тогда Значение = "СХар" Иначе Значение = "БезХар КонецЕсли |
|||
14
Boroda
08.08.14
✎
09:45
|
(0) "ВидСХарактеристикой", "ВидБезХарактеристики" - это отдельные справочники ?
|
|||
15
m-serg74
08.08.14
✎
09:46
|
(12) галочка в КД, в ПКО ВидНоменклатуры единственное ПКС Наименование
у него в событии ПередВыгрузкой: Значение = Источник; |
|||
16
mzelensky
08.08.14
✎
09:46
|
(13) а что в данном случае "Источником" будет?
Пиши плиз подробней, а то мне лично тяжко понимать про какой объект ты говоришь. |
|||
17
mzelensky
08.08.14
✎
09:47
|
(14) Это один справочник, но разные элементы в нем
|
|||
18
m-serg74
08.08.14
✎
09:47
|
(16) дай тим вивер покажу :)
|
|||
19
toypaul
гуру
08.08.14
✎
09:47
|
источником будет источник. почитай хотя бы описание обработчиков. эти описания есть в самой КД
|
|||
20
m-serg74
08.08.14
✎
09:48
|
(19) это кому сообщение?
|
|||
21
mzelensky
08.08.14
✎
09:48
|
(15) :( печаль ... Я имею ввиду про какой объект ты говришь, про спр. Номенклатура или спр. Вид номенклатуры...или еще что???
|
|||
22
toypaul
гуру
08.08.14
✎
09:49
|
(16) ПКС Наименование - два раза тыкнуть в свойство Наименование. там смотреть обработчик перед выгрузкой
|
|||
23
mzelensky
08.08.14
✎
09:49
|
(21) для (20)
|
|||
24
m-serg74
08.08.14
✎
09:49
|
(21) блин как можно неоднозначно понять ПКО ВидНоменклатуры
|
|||
25
toypaul
гуру
08.08.14
✎
09:51
|
(21) про вид номенклатуры речь.
|
|||
26
mzelensky
08.08.14
✎
09:53
|
А что получится при данном варианте, если мне отдельно нужно будет выгрузить справочник "Виды номенклатуры" ? Не через "Номенклатуру" ?
|
|||
27
toypaul
гуру
08.08.14
✎
09:54
|
а ... у тебя галка у номенклатуры
|
|||
28
toypaul
гуру
08.08.14
✎
09:55
|
тогда тебе нужно сделать доп. ПКО, в нем сделать как написано. и у свойства это ПКО указать.
и условие будет такое Если Источник.Владелец.МояГалка Тогда |
|||
29
Абыр
08.08.14
✎
09:55
|
ИмяПКО
|
|||
30
m-serg74
08.08.14
✎
09:56
|
(26) тогда проверку в ПКО ВидНоменклатуры,
в ПКС Наименование Если ТипЗнч(Источник) = Тип("Строка") Тогда Значение = Источник; Иначе Значение = Источник.Наименование; КонецЕсли; |
|||
31
toypaul
гуру
08.08.14
✎
09:56
|
(26) если будешь отдельно выгружать, то будет отрабатывать так какое стоит ПКО в ПВД для данного справочника. не понятно только зачем его отдельно выгружать.
|
|||
32
m-serg74
08.08.14
✎
09:57
|
(31) хватит огороды городить, см. (30)
|
|||
33
fenixx
08.08.14
✎
09:57
|
а почему (13) не подходит?
|
|||
34
mzelensky
08.08.14
✎
09:58
|
Блин, то ли я не догоняю ,то ли вы меня не так поняли...
|
|||
35
toypaul
гуру
08.08.14
✎
09:59
|
(34) ты не догоняешь
|
|||
36
Skylark
08.08.14
✎
10:00
|
(0) В (2) выдали отличную рабочую версию (которая при этом еще и канонична). Нужно только пораскинуть мозгами в этом направлении.
|
|||
37
mzelensky
08.08.14
✎
10:00
|
(35) Наверное. Давайте по этапам. Что сделал:
ПКО НОМЕНКЛАТУРА. у свойства "Вид номенклатуры" "Перед выгрузкой" пишу: Если Источник.ВестиУчетПоХарактеристикам Тогда Значение = "Товар (пр. ТМЦ) + х"; Иначе Значение = "Товар (пр. ТМЦ)"; КонецЕсли; |
|||
38
toypaul
гуру
08.08.14
✎
10:00
|
(32) какие еще огороды. это ты бредятину какую-то пишешь. а я на вопрос ответил.
|
|||
39
mzelensky
08.08.14
✎
10:01
|
(37) + у ПКО "ВИД НОМЕНКЛАТУРЫ" поставил поиск по наименованию
|
|||
40
fenixx
08.08.14
✎
10:02
|
(37) Правильно ты сделал. К этому ПКС надо прикрутить ПКО для справочника "ВидНоменклатуры" где источник - строка, приемник - справочник "ВидыНоменклатуры" с поиском по наименованию
|
|||
41
toypaul
гуру
08.08.14
✎
10:03
|
(40) источник пустой должен быть. КД не понимает простые типы. даже в принципе без разницы какой источник.
|
|||
42
mzelensky
08.08.14
✎
10:03
|
(39) + у ПКО "ВИД НОМЕНКЛАТУРЫ", ПКС "Наименование" "Перед выгрузкой" пишу:
Значение = Источник; |
|||
43
toypaul
гуру
08.08.14
✎
10:03
|
(39) ну. дальше тогда пишешь в ПКС Наименование у ПКО вид номенклатуры
Значение = Источник. чо не ясно-то?! |
|||
44
toypaul
гуру
08.08.14
✎
10:03
|
(42) ну. все правильно.
|
|||
45
Skylark
08.08.14
✎
10:04
|
> СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным
В этом месте ты можешь написать свой код, который будет искать как хочешь. Как по-своему найдешь, подставляй свою ссылку и готово. |
|||
46
toypaul
гуру
08.08.14
✎
10:05
|
(45) забудь уже про этот обработчик. это решение может и работает, но оно хуже чем предложенные дальше.
|
|||
47
m-serg74
08.08.14
✎
10:07
|
(42) нет, см. (30), если ВидНоменклатуры планируешь выгружать отдельно не как реквизит Номенклатуры
|
|||
48
mzelensky
08.08.14
✎
10:07
|
(40)(41) А в правиле ПКС для Вид номенклатуры что должно стоять источником?
|
|||
49
m-serg74
08.08.14
✎
10:07
|
(48) по барабану
|
|||
50
Boroda
08.08.14
✎
10:08
|
(17) В общем, сделай так: :)
1. Создай правило ВидыНоменклатуры - ВидыНоменклатуры поиск сделай по наименованию, в этом ПКС сразу пропиши в "перед выгрузкой" Значение = Источник; 2. Теперь в правиле выгрузкки номенклатуры, там где выгружаеся вид номенклатуры в "ПриВыгрузке" пропиши: Если источник.Учетхарактерисик Тогда Значение = "СХарактристикаи"; Иначе Значение = "БезХарактристик"; КонецЕсли; Должно сработать. в свойствах |
|||
51
mzelensky
08.08.14
✎
10:09
|
Блин...давайте какой-нить один вариант...я уже запутался немного
|
|||
52
mzelensky
08.08.14
✎
10:10
|
При выгрузке данных ошибка:
Ошибка в обработчике события ПередВыгрузкой (свойства) ПКО = Номенклатура (Справочник: Номенклатура) ПКС = 2 (ВидНоменклатуры --> ВидНоменклатуры) Объект = Половики (Номенклатура) СвойствоПриемника = ВидНоменклатуры (СправочникСсылка.ВидыНоменклатуры) Обработчик = ПередВыгрузкойСвойства ОписаниеОшибки = Преобразование значения к типу Булево не может быть выполнено ПозицияМодуля = (1) КодСообщения = 55 |
|||
53
toypaul
гуру
08.08.14
✎
10:10
|
(51) у тебя уже есть рабочий вариант. не ... мозк, а попробуй.
|
|||
54
toypaul
гуру
08.08.14
✎
10:12
|
(52) у тебя галка не задана для группы
|
|||
55
m-serg74
08.08.14
✎
10:12
|
(54) +
|
|||
56
mzelensky
08.08.14
✎
10:19
|
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = ВидыНоменклатуры (Справочник: Виды номенклатуры) ПКС = 2 (ПометкаУдаления --> ПометкаУдаления) Объект = Товар (пр. ТМЦ) (Строка) СвойствоПриемника = ПометкаУдаления (Булево) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8196) КодСообщения = 13 |
|||
57
Skylark
08.08.14
✎
10:23
|
(46) Как хотите. Если не получится по-вашему - приходите
|
|||
58
toypaul
гуру
08.08.14
✎
10:26
|
(56) тебе БЕСПЛАТНО предложили через ТВ все показать. не хочешь, мучайся дальше. или купи курс по КД для просветления мозгов.
я знаю откуда ошибка, но писать не буду. |
|||
59
mzelensky
08.08.14
✎
10:40
|
В общем ЧТО-ТО ПОЛУЧИЛОСЬ...
|
|||
60
mzelensky
08.08.14
✎
10:45
|
Всем спасибо за мучения.
Особенная благодарность: m-serg74 и toypaul |
|||
61
m-serg74
08.08.14
✎
10:46
|
приходите еще:)
|
|||
62
mzelensky
08.08.14
✎
10:51
|
Хотя вот еще вопрос остался. Когда указываю правила обмена в обработке ВЫГРУЗКИ, то считываются правила и выдается ошибка:
Ссылка на несуществующий объект метаданных в правилах обмена Объект = Строка ОписаниеОшибки = Значение не является значением объектного типа (ПКО) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(2071) КодСообщения = 11 |
|||
63
mzelensky
08.08.14
✎
10:51
|
(62) + При этом выгрузка вроде как проходит нормально
|
|||
64
m-serg74
08.08.14
✎
10:56
|
(62) ХЗ что там у тебя еще где в правилах
|
|||
65
mzelensky
08.08.14
✎
10:58
|
(64) Дык в том и дело .что не понятно куда глядеть
|
|||
66
m-serg74
08.08.14
✎
11:01
|
(65) знамо дело в отладчик, с Остановка По Ошибке
|
|||
67
mzelensky
08.08.14
✎
11:02
|
все, нашел...случайно одно ПКО добавил
|
|||
68
m-serg74
08.08.14
✎
11:02
|
+ Ошибка содержит текст и туда кусок текста ошибки, например:
"Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(2071)" |
|||
69
m-serg74
08.08.14
✎
11:03
|
(68) -> +(66), но уже теперь не актуально наверное :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |