|   |   | 
| 
 | Конвертация данных перенос контрагентов в одну папку? | ☑ | ||
|---|---|---|---|---|
| 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 ку данные тащить надо.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |