|
Конвертация данных перенос контрагентов в одну папку? | ☑ | ||
---|---|---|---|---|
0
vl_programmer
21.09.11
✎
09:20
|
Есть 2 базы структура идентичная мне нужно перенести контрагентов из одной базы в другую. То есть все контрагенты в месте с папками должны перенестись в бд приемник в одну единственную папку которую я там создал
не важно есть ли контрагент в базе приемника или нет есть ли папка из источника в приемнике тупо без всякого поиска нужно залить в одну папку. Пишу в правилах конвертация на обработчике событий "после загрузки" Если Не ЗначениеЗаполнено(Объект.Родитель) Тогда Объект.Родитель = Справочники.Контрагенты.НайтиПоКоду("ЦБ004306"); КонецЕсли; Но все контрагенты и папки кидаются в корень и получается что в корне по две одинаковых папки (структура папок контрагентов тоже похожа). Не пойму что я не так делаю? |
|||
1
OFF
21.09.11
✎
09:22
|
СП читай что возвращает НайтиПоКоду
|
|||
2
jsmith82
21.09.11
✎
09:25
|
я делал много раз такую шляпу
один раз тожде облажался, но потом понял в чём дело то ли обработчик не тот, то ли чё в общем, какая-то мелочёвка |
|||
3
ptiz
21.09.11
✎
09:26
|
(0) Если делаешь После загрузки, то тогда еще
Объект.Записать(); |
|||
4
vl_programmer
21.09.11
✎
09:27
|
(1) ага учту
(2) Жаль не помните :) (3) Спасибо! |
|||
5
Рэйв
21.09.11
✎
09:42
|
(3)Не надо. Это уже когда все поля заполнены(загружено) и осталось только записать.Запись еще будет
|
|||
6
vl_programmer
21.09.11
✎
09:48
|
при загрузке ругается
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML(4788) КодСообщения = 26 |
|||
7
qeos
21.09.11
✎
10:10
|
при выгрузке Родитель..
если родитель пустая() тогда Значение = ТребуемыйРодитель. и все. |
|||
8
vl_programmer
21.09.11
✎
10:11
|
(7)
Если Не ЗначениеЗаполнено(Объект.Родитель) Тогда Объект.Родитель = Справочники.Контрагенты.НайтиПоКоду("ЦБ004306"); КонецЕсли; и должно работать? |
|||
9
qeos
21.09.11
✎
10:14
|
(8) нет..
|
|||
10
qeos
21.09.11
✎
10:15
|
ПКС _Родитель_ ПередВыгрузкой
Если Не ЗначениеЗаполнено(Источник.Родитель) Тогда Значение = Справочники.Контрагенты.НайтиПоКоду("ЦБ004306"); КонецЕсли; |
|||
11
vl_programmer
21.09.11
✎
10:16
|
(10) ага спасибо!!!! Щас попробую
|
|||
12
Aprobator
21.09.11
✎
10:20
|
не взлетит.
|
|||
13
vl_programmer
21.09.11
✎
10:21
|
(12) что сделать чтоб взлетело?
|
|||
14
ptiz
21.09.11
✎
10:27
|
(10) Тогда уж "перед загрузкой" или как там, т.е. уже в приемнике.
|
|||
15
Aprobator
21.09.11
✎
10:28
|
Создать правило именно для такого родителя с наименованием типа "ОбязательныйРодитель". В нем из реквизитов указать только код. У кода в ПКС ПередВыгрузкой указать Значение = "ЦБ004306". Поставить поиск по коду. Новый не создавать - только искать.
А в самом ПКО Справочника (откуда будет по необходимости делаться перенаправление на обязательного родителя) перед выгрузкой прописать следующее Если Не ЗначениеЗаполнено(Источник.Родитель) Тогда ИмяПКО = "ОбязательныйРодитель"; // перенаправление на твое правило КонецЕсли; |
|||
16
Aprobator
21.09.11
✎
10:29
|
(15) упс вот так надо:
|
|||
17
qeos
21.09.11
✎
10:29
|
(12) чойто не взлетит?
(15) чото не понял логику |
|||
18
Aprobator
21.09.11
✎
10:30
|
(17) а как он его найдет ПередВыгрузкой в базе приемнике?
|
|||
19
Aprobator
21.09.11
✎
10:31
|
(17) чего непонятного то? Для родителя создается правило, которое будет тупо искать родителя в базе приемнике по коду.
|
|||
20
Aprobator
21.09.11
✎
10:32
|
подобный метод используется в типовых правилах переноса Бухгалтерия 7.7 - УПП, для Организации.
|
|||
21
qeos
21.09.11
✎
10:32
|
(18) хм.. ну да. я бы тогда просто создал такую группу в истонике и все.. ))
|
|||
22
Aprobator
21.09.11
✎
10:33
|
(21) для разового решения вполне пригодный вариант. Об этом я не подумал )
|
|||
23
fisher
21.09.11
✎
10:51
|
(0) Странно. Должно работать.
Можно еще тоже самое в "Перед выгрузкой" ПКС родителя делать. Если Не ЗначениеЗаполнено(Источник.Родитель) Тогда Выражение = "Справочники.Контрагенты.НайтиПоКоду("ЦБ004306")"; КонецЕсли; Еще такая фича работает: Если Не ЗначениеЗаполнено(Источник.Родитель) Тогда Значение = "ЦБ004306"; КонецЕсли; Ну а самый универсальный способ из штатных, как уже сказали - создание отдельного правила для поиска по коду. |
|||
24
fisher
21.09.11
✎
10:53
|
Упс.
Выражение = "Справочники.Контрагенты.НайтиПоКоду(""ЦБ004306"")"; |
|||
25
vl_programmer
21.09.11
✎
10:54
|
Попробую всем спасибо!
|
|||
26
fisher
21.09.11
✎
10:55
|
(23) + Забыл сказать.
Фича с прямым присвоением кода работает только когда вообще не указано никакое правило конвертации. |
|||
27
vl_programmer
21.09.11
✎
11:28
|
Почти все получилось но группы сделал он элементами и в результате большая часть контрагентов не выгрузилась
|
|||
28
SIS72
21.09.11
✎
11:50
|
читай http://www.mykod.info - 7 пример - все подробно разжевано для начинаюших изучать конвертацию данных
|
|||
29
Aprobator
21.09.11
✎
11:54
|
(27) дык е мое. Реквизит то ЭтоГруппа кто будет прописывать?
В ПКС ПередВыгрузкой Значение = Источник.ЭтоГруппа(); Неужели типовые правила тяжело найти и посмотреть? Такая фигня даже в демо конверташке лежит. |
|||
30
Aprobator
21.09.11
✎
11:55
|
(29) хотя странно, если конфа идентичная, как такая фигня вылезти могла?
|
|||
31
Aprobator
21.09.11
✎
11:56
|
(29) так делается, если с 7 ки в 8 ку данные тащить надо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |