|
Конвертация Справочника V8 -> V77 | ☑ | ||
---|---|---|---|---|
0
Михей
12.10.11
✎
09:09
|
Доброе утро.
Переношу справочник Номенклатуры из V8 в V77 с помощью КД2, при загрузке в V77 необходимо настроить гибкий поиск. Если номенклатура не найдена по Коду то попробовать поискать по реквизиту КодV8. Как сие реализовать? Спасибо. |
|||
1
Рэйв
12.10.11
✎
09:11
|
ищи уж сразу тогда по КодV8
|
|||
2
Михей
12.10.11
✎
09:14
|
(1) нельзя, может дубль тогда создаться
|
|||
3
SuperMario
12.10.11
✎
09:15
|
(0) Поля поиска.
|
|||
4
Михей
12.10.11
✎
09:16
|
(3) а оно в V7 работает? в справке написано что только V8
|
|||
5
SuperMario
12.10.11
✎
09:19
|
(4) ты прав. Только для V8
|
|||
6
Рэйв
12.10.11
✎
09:22
|
(2)Тогда только курочить обработку загрузки. Находить место где идет поиск, проверять объект на тип и если нужный - проверять нашел или нет и в случае необходимости искать по второму варианту
|
|||
7
SuperMario
12.10.11
✎
09:27
|
Была похожая задачка. Я в обработчик "При загрузке" получал свойство источника и сравнивал его с кодом магазина. Если условие не проходит, то отказ от загрузки объекта.
Думаю, что можешь код поправить для своих целей. ПриЗагрузке: КодПолучателя = УстановитьРеквизитV8(Узел.ВыбратьУзел("Свойство[@Имя=""Комментарий""]"), "Документ", "ПоступлениеТМЦРозница", "Комментарий"); Если КодПолучателя <> "Для магазина:"+ СокрП(Константа.КодТекущегоУзла) Тогда Отказ = 1; КонецЕсли; |
|||
8
ДемонМаксвелла
12.10.11
✎
09:37
|
кто-то с восьмерки на семерку переходит...
(0) не понял какой смысл искать и по коду и по КодV8, притом сам пишешь, что по коду можешь и не найти (есть дубли по коду? новые коды присваиваешь?) проще сделать тогда сразу поиск по КодV8, до выгрузки проверить на уникальность |
|||
9
Михей
12.10.11
✎
10:17
|
Иходные данные;
СправочникV8: - Код - КодV77 - ЭтоГруппа СправочникV7: - Код - КодV8 - ЭтоГруппа Если перегрузка идет V77 -> V8 то там все просто, я могу зазать ПоляПоиска со следующим алгоритмом: Если ЗначениеЗаполнено(СвойстваПоиска.Получить("КодV8")) Тогда СтрокаИменСвойствПоиска = "Код, ЭтоГруппа"; Иначе СтрокаИменСвойствПоиска = "КодV77, ЭтоГруппа"; КонецЕсли; А в v7 я такого написать не могу. |
|||
10
nicxxx
12.10.11
✎
10:29
|
есть в обработке v77imp.ert функция:
Функция УстановитьСправочникПоСсылкеV8() в (6) правильно сказали - надо в этой функции изменить алгоритм поиска, вот начала ветвления: Если КолвоРеквизитовПоиска = 0 Тогда // Поиск не производим! ИначеЕсли (ПустоеЗначение(Код) = 0) И (КолвоРеквизитовПоиска = 1) Тогда Если Справочник.НайтиПоКоду(Код, 0) = 0 Тогда // создаем новый ИначеЕсли Справочник.ЭтоГруппа() <> ЭтоГруппа Тогда // создаем новый Иначе Если ЗапоминатьЗагруженныеОбъекты = 1 Тогда ЗапомнитьСсылку(Вид, Ссылка.ПредставлениеXML, Справочник.ТекущийЭлемент()); КонецЕсли; Возврат Справочник.ТекущийЭлемент(); КонецЕсли; |
|||
11
Михей
12.10.11
✎
10:31
|
(10) да нашел, но еще нашел и такое
Функция СравнитьРеквизитыСправочникаV8(Справочник, РеквизитыПоиска) Вид = Справочник.Вид(); Для Сч = 0 По РеквизитыПоиска.КоличествоУзлов() - 1 Цикл Реквизит = РеквизитыПоиска.ПолучитьУзел(Сч); ИдРеквизита = Реквизит.ПолучитьАтрибут("Имя"); //ТипРеквизита = ""; //ПрочитатьИнформациюОТипеРеквизита("Справочник", Вид, ИдРеквизита, ТипРеквизита); //Если ПустоеЗначение(ТипРеквизита) = 1 Тогда // ПредставлениеРеквизита = "Справочник." + Вид + "." + ИдРеквизита; // ЗаписатьОшибку("Неверное имя реквизита:" + ПредставлениеРеквизита); // Продолжить; //КонецЕсли; Значение = УстановитьРеквизитV8(Реквизит, "Справочник", Вид, ИдРеквизита); СуществующееЗначение = Справочник.ПолучитьАтрибут(ИдРеквизита); Если (ТипЗначенияСтр(СуществующееЗначение) = "Строка") Или (ПустоеЗначение(СуществующееЗначение) = 1) Тогда СуществующееЗначение = СокрЛП(СуществующееЗначение); Значение = СокрЛП(Значение); КонецЕсли; Если СуществующееЗначение <> Значение Тогда Возврат(0) КонецЕсли; КонецЦикла; Возврат(1); КонецФункции Вот думаю может РеквизитыПоиска, как то изменять при выгрузке |
|||
12
Михей
12.10.11
✎
10:51
|
Все оказалось проще, в ПКС свойства по которому мне не нужно проводить поиск поставил
Отказ = ПустоеЗначение(Источник.КодV77); И оно тогда не выгружается ваще. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |