Конвертация данных 1с - параметры перед выгрузкой #692058


#0 by cmex
Доброго времени суток. Как сделать так, чтобы при переносе иерархического справочника, автоматом создавалась папка с названием организации, из которой я переношу данные. Написал ПередВыгрузкой данных: Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Однако при загрузке в Параметрах пусто. Что не так?Спасибо
#1 by rmrush
Используй
#2 by cmex
это куда смотреть?
#3 by cmex
мне надо во много ПКО передать, как это сделать? То есть я переношу в 1 базу много разных организаций, и хочу чтоб данные не смешались, где возможно создать папку с именем организации и туда создавать новые элементы
#4 by rmrush
что тогда в этом ПКО мешает передать эту организацию в качестве параметра и при загрузке уже подставлять ему родителя с именем этой организации (если такого нет - создавать)
#5 by cmex
не совсем понял, как это организовать?
#6 by cmex
захожу в нужно мне ПКО, в событии перед выгрузкой пишу Параметры.Вставить("Организация", НаименовиеОрг), а в событии после загрузки из Параметр выбрать наименованиеорг?
#7 by rmrush
в ПКС этого ПКО добавляешь строку, которая будет грузиться в параметр (при выборе поля приемника выбирается либо параметр, либо поле-приемник). Или я не правильно тебя понял?
#8 by rmrush
#9 by cmex
щас объясню, что мне надо
#10 by cmex
мне надо перекинуть этот справочник в базу 2, где уже есть организация "Организация2", причем в справочнике Номенклатура создать папку "Орагнизация1" и туда перекинуть иерархию, то есть в базе 2 получится следующее:
#11 by fisher
На стороне приемника что-то руками надо делать только в исключительных случаях (например - данных для принятия решения вообще нет в источнике). Правильно задача решается так (один из вариантов навскидку): 1. Создаешь отдельное ПКО "ПапкаОрганизацииМоегоСправочника", источником у которой организация, а приемником твой справочник. Оно будет только создавать папку (на основании источника подставляешь нужные значения в ПКС "Код" и "Наименование" и "ЭтаГруппа". 2. А в ПКС "Родитель" твоего справочника пишешь Если НЕ ЗначениеЗаполнено(Источник.Родитель) Тогда
#12 by cmex
а если несколько таких справочников в приемнике? Например, "СтатьиЗатрат", "НГ"
#13 by fisher
В чем проблема? То же самое делаешь и для них.
#14 by fisher
В идеале ВСЯ конвертация должна происходить в источнике. Вся идеология КД на это заточена. Это и прозрачнее и максимальная производительность при этом будет.
#15 by fisher
В приемник только загружаются готовые образы объектов оптимизированно. Без лишних обращений к БД.
#16 by cmex
спасибо, щас попробую
#17 by cmex
все получилось,спасибо только вот как бы избавиться от частого обращения к БД: можно где то перед обработкой общий параметр задать?
#18 by fisher
Можно и нужно. 1) Добавляешь общий параметр конвертации "ТекущаяОрганизация" (в свойствах конвертации). Галку диалога не ставишь - типа интерактивно его править не надо. 2) Там же в событии "После загрузки правил обмена" устанавливаешь его, юзая УстановитьЗначениеПараметраКонвертации 3) Везде, где надо, обращаешься к нему через Параметры.ТекущаяОрганизация
#19 by fisher
Аналогично можно кэшировать любые значения на время всей конвертации. Если не устанавливать тип параметра - можно присваивать любые значения (в т.ч. коллекции)
#20 by fisher
Если надо кэшировать на момент старта конвертации, тогда событие "Перед выгрузкой данных" подойдет (событие самой конвертации)
#21 by fisher
Прогнал. УстановитьЗначениеПараметраКонвертации только для семерки надо юзать и только в "После загрузки правил обмена", если именно оно нужно.
#22 by acsent
для больших баз как раз удобней по максимуму выносить работу в постобработку. Ибо файлы получаются по 10 ГБ
#23 by Йохохо
это та же байда, что нормализация / денормализация. Тут, при определенных условиях, можно обойтись полями поиска вообще
#24 by fisher
"Не верю". Особой экономии, ИМХО, так не добиться. А в десятки раз замедлить загрузку - как два пальца.
#25 by fisher
При очень больших объемах выгоднее бить на порции.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С