Имя: Пароль:
1C
 
Правила регистрации
0 dan4ik
 
08.11.17
13:12
Добрый день всем. Возможно получить в ПРО в обработчике события "Перед обработкой" по какой Организации установлен отбор в обмене для которого регистрируется?
http://joxi.ru/12M5B9vH4GVJ02
1 h-sp
 
08.11.17
13:45
ну, типа

ВЫБРАТЬ Организация Из ПланОбмена.ТакойТо ГДЕ УсловиеТакоеТо
2 dan4ik
 
08.11.17
13:50
Нужно именно в обработчике перед регистрацией проверить, если отбор стоит для определенной организации, скажем ищем по ИНН, то проверяем запросом, если галка в документе стоит то Отказ = Истина, для других планов обмена где отбор не установлен по организациям или установлен и в списке нет такой организации, тогда регистрируем, т.е. игнорируем проверку запросом описанную выше.
3 dan4ik
 
08.11.17
13:51

Если ОрганизацияИзОбмена.ИНН = "123456" Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    ЕСТЬNULL(Таблица.Значение, ЛОЖЬ) КАК Значение
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК Док
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ДополнительныеРеквизиты КАК Таблица
|        ПО Док.Ссылка = Таблица.Ссылка
|            И (Таблица.Свойство.Заголовок = ""Не выгружать в БП"")
|            И (Док.Организация.ИНН = ""ИНН"")
|ГДЕ
|    Док.Ссылка = &Ссылка
|    И Док.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо)";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    Если Выборка.Значение Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
КонецЕсли;
4 dan4ik
 
08.11.17
13:53
Нужно найти ОрганизацияИзОбмена или возможно подскажите другой путь?
Если ОрганизацияИзОбмена.ИНН = "123456" Тогда
5 3achem
 
08.11.17
14:16
(4) не понимаю в чём впорос? Передай значение в запрос и сразу там проверяй, ты же знаешь по каким ИНН надо проверять
6 dan4ik
 
08.11.17
14:27
Нашел решение, оказалось проще сделать в обработчике "После обработки", получаю узлы где есть организация и после удаляю к которым не нужно регистрировать и все!
Спасибо все кто откликнулся и посмотрел)
Ниже привел код вдруг кому понадобится:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    ВложенныйЗапрос.Ссылка КАК ПланОбмена,
|    ЕСТЬNULL(Таблица.Значение, ЛОЖЬ) КАК Значение
|ИЗ
|    (ВЫБРАТЬ
|        СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Ссылка КАК Ссылка,
|        СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Организация КАК Организация
|    ИЗ
|        ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Организации КАК СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации
|    ГДЕ
|        СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Ссылка В(&МассивУзлов)
|        И СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Организация.ИНН = ""ИНН"") КАК ВложенныйЗапрос
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Док
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ДополнительныеРеквизиты КАК Таблица
|            ПО Док.Ссылка = Таблица.Ссылка
|                И (Таблица.Свойство.Заголовок = ""Не выгружать в БП"")
|                И (Док.Организация.ИНН = ""ИНН"")
|        ПО (Док.Организация = ВложенныйЗапрос.Организация)
|ГДЕ
|    Док.Ссылка = &Ссылка
|    И Док.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо)
|    И ЕСТЬNULL(Таблица.Значение, ЛОЖЬ) = Истина";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("МассивУзлов", Получатели);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    НайденныйПланОбмена = Получатели.Найти(Выборка.ПланОбмена);
    Если Получатели.Найти(Выборка.ПланОбмена) <> Неопределено Тогда
        Получатели.Удалить(НайденныйПланОбмена);
    КонецЕсли;
КОнецЦикла;