Выгрузка данных по организации через правила обмена
Делюсь опытом. Ниже представлен код, который необходимо добавить в секцию "Обработчики "Конвертация".
Данный метод можно использовать, когда необходимо выгрузить элементы справочников и регистров только по выбранной организации.
При этом в качестве объектов выгрузки следует выбрать документы и все объекты для которых есть поле "Организация" или владельцем является "Организация" будут выгружены.
Данный метод можно использовать, когда необходимо выгрузить элементы справочников и регистров только по выбранной организации.
При этом в качестве объектов выгрузки следует выбрать документы и все объекты для которых есть поле "Организация" или владельцем является "Организация" будут выгружены.
Комментарии
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Здравствуйте.
Ваше сообщение направило меня искать решение в правильное русло, спасибо. У меня был задача перенести зарплату из Комплексной конфигурации в конфигурацию Зарплата и управление персоналом. Сразу скажу, вычленить только одну организацию не удалось. Трудоёмкость переноса превысила ценность того что перенесётся только одна организация, поэтому перенёс все три организации.
Ваше сообщение направило меня искать решение в правильное русло, спасибо. У меня был задача перенести зарплату из Комплексной конфигурации в конфигурацию Зарплата и управление персоналом. Сразу скажу, вычленить только одну организацию не удалось. Трудоёмкость переноса превысила ценность того что перенесётся только одна организация, поэтому перенёс все три организации.
Спасибо, но чуть переделал (явно указал организацию), может кому пригодится. А и в параметры в этом случаи не надо добавлять организацию.
//+ПередВыгрузкойОбъекта
МояОрг = Справочники.Организации.НайтиПоРеквизиту("ИНН","ТутИннОрганиазции").Ссылка;
Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если
//(Параметры.Организация <> Объект.Организация)
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Объект.Метаданные().Реквизиты.Найти("Владелец") <> Неопределено Тогда
Если Объект.Владелец.Метаданные().Имя = "Организации" Тогда
Если //(Параметры.Организация <> Объект.Владелец)
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
Если Объект.Метаданные().Владельцы.Содержит(МояОрг.Метаданные()) Тогда
Если //Объект.Владелец <> Параметры.Организация
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//+ПередКонвертациейОбъекта
МояОрг = Справочники.Организации.НайтиПоРеквизиту("ИНН","ТутИННОрг").Ссылка;
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник)) Тогда
Если Источник.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если //(Параметры.Организация <> Источник.Организация)
Источник.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Источник.Метаданные().Реквизиты.Найти("Владелец") <> Неопределено Тогда
Если Источник.Владелец.Метаданные().Имя = "Организации" Тогда
Если //(Параметры.Организация <> Источник.Владелец)
Источник.Владелец <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Источник.Метаданные().Владельцы.Содержит(МояОрг.Метаданные()) Тогда
Если //Источник.Владелец <> Параметры.Организация
Источник.Владелец <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//+ПередВыгрузкойОбъекта
МояОрг = Справочники.Организации.НайтиПоРеквизиту("ИНН","ТутИннОрганиазции").Ссылка;
Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если
//(Параметры.Организация <> Объект.Организация)
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Объект.Метаданные().Реквизиты.Найти("Владелец") <> Неопределено Тогда
Если Объект.Владелец.Метаданные().Имя = "Организации" Тогда
Если //(Параметры.Организация <> Объект.Владелец)
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
Если Объект.Метаданные().Владельцы.Содержит(МояОрг.Метаданные()) Тогда
Если //Объект.Владелец <> Параметры.Организация
Объект.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//+ПередКонвертациейОбъекта
МояОрг = Справочники.Организации.НайтиПоРеквизиту("ИНН","ТутИННОрг").Ссылка;
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник)) Тогда
Если Источник.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если //(Параметры.Организация <> Источник.Организация)
Источник.Организация <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Источник.Метаданные().Реквизиты.Найти("Владелец") <> Неопределено Тогда
Если Источник.Владелец.Метаданные().Имя = "Организации" Тогда
Если //(Параметры.Организация <> Источник.Владелец)
Источник.Владелец <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Источник.Метаданные().Владельцы.Содержит(МояОрг.Метаданные()) Тогда
Если //Источник.Владелец <> Параметры.Организация
Источник.Владелец <> МояОрг
Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
если выгрузка данных идет через произвольный набор, то эти отборы не работают, необходимо делать отборы в самих запросах, мне например при выгрузки данных из ЗУП 2.5 в ЗУП 3.0 где сплошь произвольные алгоритмы выборки переносимых данных, совсем не помогло. Хотя правила типовые. пришлось править запросы и алгоритмы, вставляя отборы.
Немного не понятно зачем приведены разные алгоритмы в данных обработчиках. Я так понимаю отличие ведь должно быть только Объект - Источник?
И по второму ЕСЛИ. Разве Реквизиты.Найти("Владелец") не тоже самое что и Владельцы.Содержит?
И по второму ЕСЛИ. Разве Реквизиты.Найти("Владелец") не тоже самое что и Владельцы.Содержит?
Добрый день всем, кто задает вопросы!
Эта публикация была в 2010 году, тогда я еще программировал. Сейчас уже давно не программирую. Поэтому на вопросы по существу ответить не смогу.
Кому эта публикация помогла - супер!
Эта публикация была в 2010 году, тогда я еще программировал. Сейчас уже давно не программирую. Поэтому на вопросы по существу ответить не смогу.
Кому эта публикация помогла - супер!
Большое спасибо, как раз то что надо.
Вот только есть вопрос по оптимизации...
1. Вроде Обработчик "Перед конвертацией объекта" выполняется для вех объектов, как для выгружаемых напрямую, так и по ссылке. Зачем тогда отбор в обработчике "Перед выгрузкой объекта" ? Есть случаи, когда выгрузка есть, а конвертации нет?
Вот только есть вопрос по оптимизации...
1. Вроде Обработчик "Перед конвертацией объекта" выполняется для вех объектов, как для выгружаемых напрямую, так и по ссылке. Зачем тогда отбор в обработчике "Перед выгрузкой объекта" ? Есть случаи, когда выгрузка есть, а конвертации нет?
Спасибо, пригодилось, единственное есть такие объекты у которых есть реквизит Организация, и они нужны всем если например этот реквизит не заполнен и Объект принадлежит всем организациям. Например справочник Соглашения с клиентами.
Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если (Параметры.Организация <> Объект.Организация) Тогда
Если Объект.Метаданные().Имя="СоглашенияСКлиентами" и НЕ ЗначениеЗаполнено(Объект.Организация)Тогда //типовое
Отказ=Ложь;
Иначе
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если (Параметры.Организация <> Объект.Организация) Тогда
Если Объект.Метаданные().Имя="СоглашенияСКлиентами" и НЕ ЗначениеЗаполнено(Объект.Организация)Тогда //типовое
Отказ=Ложь;
Иначе
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Вопросы с вознаграждением
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|