Имя: Пароль:
1C
1С v8
Отменить загрузку в Приемнике по значению параметра.
,
0 Zhuravlik
 
28.10.14
17:14
Дубль с инфостарта: http://forum.infostart.ru/forum85/topic119285/
Добрый день. Новичок в КД, дело вот в чем. Налаживаю обмен между УТ 11 и БП 2.0, обмениваюсь реализациями. При этом хочу выгружать документы только по определенной организации (из УТ), а при загрузке в БП если организации с таким ИНН нету - выбрасывать сообщение, и прерывать загрузку.
Определил параметр (см. рисунок), теперь не могу понять в какой момент времени мне прерывать загрузку. Таких событий, чтобы параметры уже были определены, а загрузка данных файла еще не начата не нашел. Предполагаю, что необходимо в событии "Конвертация_ПередЗагрузкойОбъекта" проверять как-то так:

Если Параметры.Организация = Неопределено Тогда
Отказ = Истина;
КонецЕсли;

Но.
- Первым грузятся почему-то валюты, а не организации (хотя жал на кнопку "Вверх" в КД, по-идее первым должна быть Организация)
- Я еще ведь хочу сообщать пользователю, что "Не обнаружена Организация с ИНН №<НомерИнн>", и сообщение должно выйти *1 раз*, а если я буду использовать событие "Конвертация_ПередЗагрузкойОбъекта" - будет сообщать столько раз, сколько объектов будет грузится. Можно конечно написать такой код:

Если НЕ Параметры.Свойство("БылоСообщениеОбОшибке") Тогда

Сообщить("...");
Параметры.Добавить("БылоСообщениеОбОшибке");

КонецЕсли;


Но кажется мне, я просто что-то не так делаю.
Подскажите пожалуйста, кто опытный, как и какое событие надо обрабатывать?
1 France
 
28.10.14
17:18
лучше в "ПередВыгрузкой".
Если ЗначениеЗаполнено(Параметры.Организация) Тогда
    Если Источник.Организация<>Параметры.Организация Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
2 Zhuravlik
 
28.10.14
17:36
(1) Вы не поняли. Событие "ПередВыгрузкой" - это событие источника, и там у меня все нормально, в ПВД  делаю фильтр по значению параметра.
Речь идет о том, какое событие нужно отработать в базе Приемнике, чтобы не загружать данные при отсутствующей (по ИНН) Организации.
3 mikecool
 
28.10.14
17:38
(2) в глобальной перед загрузкой, что раз выполняется, определить - надо ли загружать и отказать при необходимости
4 France
 
28.10.14
17:39
(2) я вполне понял.. почему нельзя НЕ выгружать ненужные документы??
5 mikecool
 
28.10.14
17:39
+3 список организаций получай при выгрузке, записывай в параметр, его передай в загрузку
6 Zhuravlik
 
28.10.14
17:56
(3) Так вопрос в том и стоит: в каком событии *Приемника* уже определено значение параметра (он прошел стадию "Распознавания", т.е. программа нашла или НЕ нашла значение параметра по правилу), а загрузка объектов еще не произведена, и от нее можно отказаться?

(4) Смотрите. В источнике пользователь выбирает в параметре орг. с ИНН "12345", я ее использую *в Источнике* как фильтр по документам, выгружаю только те, у которых эта оганизация указана. В Приемнике нет организации с ИНН "12345", но пользователь тем не менее жмет кнопку "Загрузить". Мне нужно сказать ему *в Приемнике* что нету такой организации, и загрузить ничего нельзя.
7 France
 
28.10.14
18:02
(6) ПередЗагрузкойДанных правил обмена
Перед загрузкой данных
Условия возникновения события
Событие выполняется самым первым перед началом загрузки данных из файла и только один раз, после открытия файла для чтения.

из параметров получить организацию, попробовать найти его в базе, и если нет - Отказ = Истана
8 France
 
28.10.14
18:10
о, точнее, в "ПослеЗагрузкиПараметров", а не (7)
9 Zhuravlik
 
28.10.14
18:16
(8) Спасибо, это вообще первое о чем подумал. Попробуйте отладить правила с этим событием при выгрузке и загрузке, очень удивитесь. Я удивился по крайней мере, и решил что это событие выполняется на стороне источника, и создал тему. Сейчас уже решен вопрос (на инфостарте), спасибо всем за беспокойство.
10 France
 
28.10.14
18:19
(9) ничего не понял.. вот что в хелпе
"Событие выполняется после загрузки параметров переданных из информационной базы источника в информационную базу приемника. Только для обмена V8-V8."
11 Zhuravlik
 
28.10.14
18:22
(10) Я не стал его сначала использовать, потому что если сформировать отладочные модули для загрузки/выгрузки, вы это событие увидите в *Источнике* и НЕ увидите в приемнике (где оно, судя по контексту документации должно быть.) Я поэтому даже и не попробовал, еще одна зарубка на приклад. Все, что касается 1С надо тестить, а потом еще раз тестить :)