|   |   | 
| 
 | Конвертация данных: Один справочник в два | ☑ | ||
|---|---|---|---|---|
| 0
    
        abask 11.08.11✎ 15:44 | 
        Не могу разобраться...
  Делаю перенос контактных лиц из БП в УТ В БП один справочник КонтактныеЛица в УТ два КонтактныеЛица и КонтактныеЛицаКонтрагентов Справочник КонтактныеЛицаКонтрагентов содержит ссылку на КонтактныеЛица подкиньте мысль как это правильно делается... | |||
| 1
    
        Живой Ископаемый 11.08.11✎ 15:46 | 
        два правила     | |||
| 2
    
        abask 11.08.11✎ 15:46 | 
        (2) ПВД или ПКО?     | |||
| 3
    
        PVV65 11.08.11✎ 15:47 | 
        (2) ПКО     | |||
| 4
    
        abask 11.08.11✎ 15:49 | 
        (3) с запросом типа этого
  Запрос = Новый Запрос(" |ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий, | КонтактнаяИнформация.ЗначениеПоУмолчанию, | КонтактнаяИнформация.ТипДома, | КонтактнаяИнформация.ТипКорпуса, | КонтактнаяИнформация.ТипКвартиры |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"); Запрос.УстановитьПараметр("Объект", Источник); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация"); КонецЦикла; | |||
| 5
    
        abask 11.08.11✎ 15:49 | 
        ?     | |||
| 6
    
        Живой Ископаемый 11.08.11✎ 15:51 | 
        Пока Выборка.Следующий() Цикл
  ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация"); ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация2"); КонецЦикла; | |||
| 7
    
        abask 11.08.11✎ 16:29 | 
        сделал два ПКО
  КонтактныеЛица и КонтактныеЛицаКонтрагентов в ПКО КонтактныеЛицаКонтрагентов в обработчик ПослеВыгрузки поместил этот код Запрос = Новый Запрос(" |ВЫБРАТЬ | КонтактныеЛица.Ссылка КАК КонтактноеЛицо, | КонтактныеЛица.ОбъектВладелец, | КонтактныеЛица.Наименование, | КонтактныеЛица.Роль, | КонтактныеЛица.Должность |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Ссылка = &Объект"); Запрос.УстановитьПараметр("Объект", Источник); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка, , , , "КонтактныеЛицаКонтрагентов"); ВыгрузитьПоПравилу(Выборка, , , , "КонтактныеЛица"); КонецЦикла; выдает такую ошибку ОписаниеОшибки = Ошибка при вызове метода контекста (Выполнить): {(11, 24)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. КонтактныеЛица.Ссылка <<?>>= &Объект хотя при отладке типы вроде совпадают | |||
| 8
    
        Buster007 11.08.11✎ 16:48 | 
        а Источник точно тип Ссылка? может быть Источник.Ссылка?     | |||
| 9
    
        abask 11.08.11✎ 16:53 | 
        Источник.Ссылка - то же самое     | |||
| 10
    
        PVV65 11.08.11✎ 17:03 | 
        (7) 
  1. В ПКО КонтактныеЛицаКонтрагентов Источник - КонтактныеЛица или КонтактныеЛицаКонтрагентов? 2. Вместо обработчика ПослеВыгрузки - ПередВыгрузкой. | |||
| 11
    
        abask 11.08.11✎ 17:26 | 
        (10)
  Источник КонтактныеЛица и там и там КонтактныеЛицаКонтрагентов в БП нету | |||
| 12
    
        PVV65 12.08.11✎ 08:51 | 
        Создаешь ПКО "КонтактныеЛица" - Источник "КонтактныеЛица", приемник "КонтактныеЛица".
  В обработчике ПередВыгрузкой пишешь - ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛицаКонтрагентов"); Создаешь ПКО "КонтактныеЛицаКонтрагентов" - Источника нет, приемник "КонтактныеЛицаКонтрагентов". В обоих ПКО синхронизируешь свойства. | |||
| 13
    
        PVV65 12.08.11✎ 08:52 | 
        +(12) В ПКО "КонтактныеЛицаКонтрагентов" - Источник "КонтактныеЛица".     | |||
| 14
    
        abask 12.08.11✎ 10:44 | 
        Не помогло
  (12) с чем синхронизировать свойство КонтактноеЛицо в ПКО КонтактныеЛицаКонтрагентов? | |||
| 15
    
        PVV65 12.08.11✎ 10:49 | 
        (12) Если я правильно понимаю структуру метаданных, то в ПКС КонтактноеЛицо - Источник - нет, Приемник - КонтактноеЛицо, Перед Выгрузкой - "Значение = Источник".     | |||
| 16
    
        abask 12.08.11✎ 11:51 | 
        тогда ошибка
  Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(10224)}: Поле объекта не обнаружено (КонтактныеЛица) видимо нужно в ПКО или ПВД КонтактныеЛица предусмотреть, чтобы не обрабатывалось это ПКС | |||
| 17
    
        PVV65 12.08.11✎ 12:03 | 
        (16) В (15) у меня не было "КонтактныеЛица". Что там у тебя напутано. "КонтактныеЛица" - это справочник. Где у тебя "КонтактныеЛица" - поле объекта?     | |||
| 18
    
        abask 12.08.11✎ 12:42 | 
        Поле объекта КонтактноеЛицо есть в справочнике КонтактныеЛицаКонтрагентов
  Мы выгружаем КонтактныеЛица по правилу КонтактныеЛицаКонтрагентов (12) Вот отсюда, похоже, и проблема... | |||
| 19
    
        abask 12.08.11✎ 12:44 | 
        упс, а ведь там (16) не КонтактноеЛицо, а КонтактныеЛица, сейчас буду разбираться     | |||
| 20
    
        PVV65 12.08.11✎ 12:52 | 
        (18) В (16) написано >> Поле объекта не обнаружено (КонтактныеЛица). В (18) пишешь >> Поле объекта КонтактноеЛицо есть в справочнике.
  Как решается эта задача: 1. ПКО "КонтактныеЛица" - в обработчике ПередВыгрузкой - ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛицаКонтрагентов"); + анализ надо ли выгружать. Источник "КонтактныеЛица", приемник - "КонтактныеЛица". ПКС - стандартные. 2. ПКО "КонтактныеЛицаКонтрагентов" - обработчиков нет. Источник "КонтактныеЛица", приемник - "КонтактныеЛицаКонтрагентов". ПКС - стандартные. | |||
| 21
    
        abask 14.08.11✎ 11:03 | 
        Все равно в УТ в справочнике КонтактныеЛицаКонтрагентов не создается ссылка на элемент справочника Контактные лица
  Не поленился - специально создал с нуля две тестовые конфигурации для тестирования. Положил сюда http://depositfiles.com/files/uy8bdpvwg размер 22 кб | |||
| 22
    
        abask 14.08.11✎ 21:51 | 
        Задача решена. Правила Обмена для моих тестовых конфигураций тут http://depositfiles.com/files/xnw5pgbre
  В трех словах решение такое: 1. Создаем все, что создается автоматически. 2. Создаем ПКО КонтактныеЛица -> КонтактныеЛицаКонтрагентов и автоматически для него ПВД 3. В ПКО КонтактныеЛицаКонтрагентов добавляем ПКС Источник - Пустой, Приемник - КонтактноеЛицо. 4. Для этого ПКС указываем ПравилоКонвертации - КонтактныеЛица. 5. Для этого же ПКС алгоритм перед выгрузкой: Значение = Источник; | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |