![]() |
|
v7: Конвертация реквизита в дополнительный реквизит. | ☑ | ||
---|---|---|---|---|
0
DenYuliya
26.10.17
✎
18:31
|
Добрый вечер. Подскажите пожалуйста, кто знает? У меня перенос из ТиС (7.7) в Комплексную Автоматизацию 2. Но в КА справочники "Партнеры и "Контрагенты абсолютно идентичны таким же в УТ 11.
Переносимые реквизиты булево и в источнике (дописанные реквизиты спр. Контрагенты), и в Приемнике (доп.реквизиты в спр. Партнеры). Скачала типовые правила переноса с ТиС в УТ 11. Там есть ПКГС для доп реквизитов, "ПКГС_Контрагенты_Партнеры_ДополнительныеРеквизиты_ПередОбработкойВыгрузки_7_20" Если ТипЗначенияСтр(ВходящиеДанные) <> "СписокЗначений" Тогда ВходящиеДанные = СоздатьОбъект("СписокЗначений"); КонецЕсли; ВходящиеДанные.Установить("ВидСправочника", "СвойстваКонтрагентов"); ВыгрузитьДополнительныеРеквизиты(); ВыгрузитьДополнительныеРеквизиты - это алгоритм выгрузки. КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); КоллекцияОбъектов.НоваяКолонка("Значение"); КоллекцияОбъектов.НоваяКолонка("Свойство"); // Не допреквизиты, если они не используются Если (ПустоеЗначение(Константа.ВидСвойстваКонтрагентов) = 1) И (ПустоеЗначение(Константа.ВидСвойстваНоменклатуры) = 1) ИЛИ (Источник.ЭтоГруппа() = 1) Тогда Возврат 0; КонецЕсли; ВидСправочника = ВходящиеДанные.Получить("ВидСправочника"); ТабДополнительныеРеквизиты = ?(ВидСправочника = "СвойстваНоменклатуры", Параметры.ДополнительныеРеквизитыНоменклатуры, Параметры.ДополнительныеРеквизитыКонтрагентов); Если ТабДополнительныеРеквизиты = -1 Тогда ТабДополнительныеРеквизиты = СоздатьОбъект("ТаблицаЗначений"); ТабДополнительныеРеквизиты.НоваяКолонка("Номенклатура"); ТабДополнительныеРеквизиты.НоваяКолонка("КоллекцияОбъектов"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(СвойстваНоменклатурыКонтрагентов) |ВидСвойства = Справочник.#.ВидСвойства; |ЗначениеСвойства = Справочник.#.ЗначениеСвойства; |Владелец = Справочник.#.Владелец; |Функция Счётчик = Счётчик(); |Группировка Владелец упорядочить по Владелец.Код без групп; |Группировка ВидСвойства упорядочить по ВидСвойства.Код без групп; |Группировка ЗначениеСвойства без групп; |"//}}ЗАПРОС ; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#", ВидСправочника); Запрос.Выполнить(ТекстЗапроса); Пока Запрос.Группировка(1) = 1 Цикл ТабДополнительныеРеквизиты.НоваяСтрока(); ТабДополнительныеРеквизиты.Номенклатура = Запрос.Владелец; ТабДополнительныеРеквизиты.КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); ТабДополнительныеРеквизиты.КоллекцияОбъектов.НоваяКолонка("Значение"); ТабДополнительныеРеквизиты.КоллекцияОбъектов.НоваяКолонка("Свойство"); Пока Запрос.Группировка(2) = 1 Цикл Пока Запрос.Группировка(3) = 1 Цикл ТабДополнительныеРеквизиты.КоллекцияОбъектов.НоваяСтрока(); ТабДополнительныеРеквизиты.КоллекцияОбъектов.Значение = Запрос.ЗначениеСвойства; ТабДополнительныеРеквизиты.КоллекцияОбъектов.Свойство = Запрос.ВидСвойства; Прервать; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; Если ВидСправочника = "СвойстваНоменклатуры" Тогда Параметры.ДополнительныеРеквизитыНоменклатуры = ТабДополнительныеРеквизиты; Иначе Параметры.ДополнительныеРеквизитыКонтрагентов = ТабДополнительныеРеквизиты; КонецЕсли; НомерСтроки = 0; Если ТабДополнительныеРеквизиты.НайтиЗначение(Источник, НомерСтроки, "Номенклатура") = 1 Тогда КоллекцияОбъектов = ТабДополнительныеРеквизиты.ПолучитьЗначение(НомерСтроки, "КоллекцияОбъектов"); КонецЕсли; Так же для ПКГС имеются 2 ПКС: ПСК "Свойство" , с пустым источником и приемником "Свойство" (тип ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения). ПКС "Значение". так же с пустым Источником и Приемником "Значение" (тип множественный, ссылки на справочники, строка, булево и т.д) В ПКС обработчики не заполнены. В то же время погуглила - народ в инете этот алгоритм нигде не упоминает, говорят, что надо идти таким путем: 1) надо создать в ПКГС ТаблицуЗначений: ТЗ= Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Свойство"); ТЗ.Колонки.Добавить("Значение"); СтрокаТЗ = КоллекцияОбъектов.Добавить(); 2) Потом для реквизитов "Свойство" и "Значение"сделать ПКС без источника, но с приемником. 3) для каждого приемника программно указать, какие значения они должны принимать. В общем я запуталась... Можно несколько вопросов по пунктам? Извиняюсь, что так много, пытаюсь как-то структурировать все в голове... 1. Зачем тогда нужен сложный вариант с использованием Алгоритма в типовых правилах "ТиС - УТ11"? Мне метод с созданием ТЗ и дальнейшим созданием ПКС для "Свойства" и "Значения" кажется более удобным, но может я что-то не понимаю просто? 2. Почему все на форумах советуют "Источник" оставлять пустым, заполняя только "Приемник"? Разве не лучше в качестве Источника указать реквизит в "Источнике" (Например, есть у меня рекв. "МеткаНедоверия", тип Булево), а в Приемнике осуществлять поиск по наименованию доп. Реквизита (то же "МеткаНедоверия")? И я правильно понимаю, что эта часть - выполняется в ПКС для "Свойства", в обработчике "ПередВыгрузкой"? 3. Теперь как-то заполнять ПКС для "Значения" надо... Можно ли как-то из серии, правильно? Значение = Источник.МеткаНедоверия; 4. Это надо прописывать отдельно для каждого доп.реквизита? поиск по наименованию, с указанием наименования, и дальнейшее заполнение значения. В общем я просто не понимаю, что именно делать и верный ли у меня ход мыслей...Прокомментируйте? если бы хоть мааленький пример где-нибудь посмотреть, было бы вообще волшебно. |
|||
1
toypaul
гуру
26.10.17
✎
19:17
|
я делал всегда по варианту
"надо создать в ПКГС ТаблицуЗначений: " так проще. тайный смысл манипуляций в типовых правилах мне непостижим |
|||
2
SleepyHead
гуру
27.10.17
✎
04:38
|
(1) Это претензия на универсальность, скорее всего. В коде анализируется, используеются ли допреквизиты, и если используются, то выгружаются.
По всей видимости, такой код для использования в различных конфигурациях. |
|||
3
DenYuliya
27.10.17
✎
09:16
|
(1) А ПКС надо создавать отдельно для каждого доп.реквизита?
Отдельно ПКС Свойсво + ПКС Значение для Доп.реквизита1, потом для ДопРеквизита2 и т.д? В итоге, если у меня 20 доп.реквизитов, получится в 1 ПКГС 20 ПКС. Верно? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |