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