![]() |
|
Перенос ПКГС "из одного - в многие", ТиС 7.7 - УТ 11. | ☑ | ||
---|---|---|---|---|
0
DenYuliya
17.01.18
✎
15:16
|
Добрый день!
Эх, игнор в мою прежнюю тему, видимо сильно далеко она уползла. Открою новую... Дано: Переход с ТиС 7.7 на УТ 11. В 1С ТиС 7.7 есть справочник "Контрагенты". У него есть реквизиты строкового типа: 1) - ФИО руководителя - должность руководителя - тел руководителя - почта руководителя 2) 1) - ФИО менеджера - должность менеджера - тел менеджера - почта менеджера и т.д., 1) и 2) - это 8 реквизитов спр. Контрагенты строкового типа. Я часть реквизитов (ФИО, должность) конвертировала в элементы справочника "Контактные лица партнера". Сделала ПКО "Контрагенты_КонтактныеЛица", в обработчике "после выгрузки в файл" код: + Code СЗ = СоздатьОбъект("СписокЗначений"); Если ПустоеЗначение(Источник.ФИОРуководителя) = 0 Тогда //рукль СЗ.Установить("Наименование", Источник.ФИОРуководителя); СЗ.Установить("ДолжностьПоВизитке", Источник.ДолжностьРуководителя); СЗ.Установить("ДатаРождения", Источник.ДатаРуководителя); СЗ.Установить("Комментарий", Источник.ПочтаРуководителя + Источник.Телефон1); СЗ.Установить("Автор", Источник.Проект); СЗ.Установить("Владелец", Источник); ВыгрузитьПоПравилу(СЗ,,,,"Контакты"); КонецЕсли; Если ПустоеЗначение(Источник.ФИОРукПродаж) = 0 Тогда //Рукль продаж СЗ.Установить("Наименование", Источник.ФИОРукПродаж); СЗ.Установить("ДолжностьПоВизитке", Источник.ДолжностьРукПродаж); СЗ.Установить("ДатаРождения", Источник.ДатаРукПродаж); СЗ.Установить("Комментарий", Источник.ПочтаРукПродаж + Источник.Телефон2); СЗ.Установить("Автор", Источник.Проект); СЗ.Установить("Владелец", Источник); ВыгрузитьПоПравилу(СЗ,,,,"Контакты"); КонецЕсли; КонецЕсли; Есть ПКО "Контакты", с пустым источником, приемником "КонтактныеЛицаПартнеров", и ПКС на каждый из реквизитов по подобному принципу в обработчике "Перед выгрузкой": Значение = Источник.Получить("ДолжностьПоВизитке"); Все работает, элементы создаются. Теперь собсна сам вопрос: надо же теперь еще как-то "контактную информацию" для "Контактных лиц партнера" заполнить... А вот тут я не могу понять.. С учетом идиотской схемы хранения КИ в Доп.реквизитах, как лучше поступить? Заполнять КИ через "Выгрузить по правилу", в тех же ПКО, по аналогии с реквизитами "ФИО" и "Должность", как бы в том же цикле (пробовала - не получается...)? или сделать новое ПКО для заполнения КИ, и выгружать по аналогии типовых правил для выгрузки КИ, например тех же партнеров? |
|||
1
DenYuliya
17.01.18
✎
15:17
|
В продолжение (0).
Добавляю в ПКО "Контакты" (которое вызывается из основного ПКО через "выгрузить по правилу") ПКГС "Контактная информация". Если смотреть типовые ПКГС для "Контактной информации" (например в ПКО "Контрагенты_Партнеры"), то сокращенно (на примере только "телефона") в ПКГС создается ТЗ: Если ТипЗначенияСтр(ВходящиеДанные) <> "СписокЗначений" Тогда ВходящиеДанные = СоздатьОбъект("СписокЗначений"); КонецЕсли; КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); КоллекцияОбъектов.НоваяКолонка("Вид"); КоллекцияОбъектов.НоваяКолонка("Представление"); КоллекцияОбъектов.НоваяКолонка("Тип"); КоллекцияОбъектов.НоваяКолонка("НомерТелефона"); Если ПустаяСтрока(Источник.ЮрФизЛицо.Телефоны) = 0 Тогда ВходящиеДанные.Установить("Телефон", Источник.ЮрФизЛицо.Телефоны); ВходящиеДанные.Установить("Родитель", "СправочникПартнеры"); ВыгрузитьТелефоны(); КонецЕсли; а потом вызывается Алгоритм "ВыгрузитьТелефоны();, в котором создается СЗ и устанавливается соответствие реквизитов Источника элементам СЗ: СписокТелефонов = глРазложить(ВходящиеДанные.Получить("Телефон"), Параметры.РазделительТелефонов); Для Номер = 1 По СписокТелефонов.РазмерСписка() Цикл Телефон = СокрЛП(СписокТелефонов.ПолучитьЗначение(Номер)); Родитель = ВходящиеДанные.Получить("Родитель"); Если Родитель = "СправочникКонтрагенты" Тогда Вид = "ТелефонКонтрагента"; Если Номер > 1 Тогда Вид = СоздатьОбъект("СписокЗначений"); Вид.Установить("Наименование", "Телефон " + (Номер - 1)); КонецЕсли; КонецЕсли; КоллекцияОбъектов.НоваяСтрока(); КоллекцияОбъектов.Вид = Вид; КоллекцияОбъектов.Тип = "Телефон"; КоллекцияОбъектов.Представление = Телефон; КоллекцияОбъектов.ЗначенияПолей = "НомерТелефона=" + Телефон + Симв(10); КоллекцияОбъектов.НомерТелефона = Телефон; КонецЦикла; В самом же ПКО такие ПКС, как "Телефон", остаются пустыми (в том плане, что не указан приемник, источник, никакого кода нет). А у меня, как я переносила предыдущие реквизиты в (0) (ФИО и Должность), Список значений, и установка соответствий реквизитов Источника элементам СЗ происходит в ПКО "Контрагенты_КонтактныеЛица", а потом этот СЗ "передается" через ВыгрузитьПоПравилу() в ПКО "Контакты"... В общем я запуталась, как мне это объединить, или что делать-то? Мне в вызываемом из ПКГС алгоритме новый СЗ создавать, или использовать ранее созданный? Или может можно вообще сразу из ПКО "Контрагенты_КонтактныеЛица" передавать в ПКГС ПКО "Контакты" созданный СЗ, и никакой Алгоритм не использовать? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |