Имя: Пароль:
1C
1С v8
Вопрос по правилам регистрации объектов
0 Paul_Nevada
 
23.05.14
00:34
Доброй ночи - всем!
Пример:
Нужно, что бы контрагент не регистрировался к отправке, в случае, если ранее – однажды, он был направлен к выгрузке – даже, если был изменен.
Вопрос – как лучше это реализовать?
Вот как я считаю:
1. Запрос к РС “СоответствияОбъектовИнформационныхБаз”;
2. Если не пустой – Отказ = Истина –> в обработчик ПРО Перед обработкой для этого справочника.
1 Paul_Nevada
 
23.05.14
08:13
Кто что скажет?
2 Paul_Nevada
 
23.05.14
10:37
В которой таблице "оседает" навсегда информация о том, что такой-то объект однажды был выгружен?
3 Paul_Nevada
 
23.05.14
12:41
???
4 Paul_Nevada
 
23.05.14
12:41
Поверить сложно, что вот так вот)
5 Поpyчик-4
 
23.05.14
13:01
(0) В обработчкие правил регистрации проверять, если не новый то не регистрировать.
6 Поpyчик-4
 
23.05.14
13:05
(0) Вот так у меня сделано http://savepic.net/5558056.png
7 Paul_Nevada
 
23.05.14
13:31
хм... а вот как я сделал:
пишу в том же обработчике ПРО:

Запрос = Новый Запрос("ВЫБРАТЬ
    |СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника
    |ИЗ
    |    РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
    |ГДЕ
    |    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &УникальныйИдентификаторИсточника
    |    И СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы
    |    И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточникаСтрокой <> """"
    |    И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника <> """"");
    
    Запрос.УстановитьПараметр("УзелИнформационнойБазы", ПРО.ИмяПланаОбмена);
    Запрос.УстановитьПараметр("УникальныйИдентификаторИсточника", Объект);
    
    Отказ = Не Запрос.Выполнить().Пустой();
8 Paul_Nevada
 
23.05.14
14:50
логика же на верном пути - если объект есть в этой таблице, значит однажды он уже был выгружен/загружен?
9 Paul_Nevada
 
23.05.14
16:26
Подскажите, пож, как получить узел плана обмена по имени...
Балин...
10 Paul_Nevada
 
23.05.14
16:27
короче - проблема с запросом, выше написанным, когда перенес его в ПРО - ухожу в исключение в момент Выполнить(ПРО.ПередОбработкой);
11 Paul_Nevada
 
23.05.14
16:27
начудил с типами...
12 Paul_Nevada
 
23.05.14
16:30
нужна помощь в написании запроса к РС "СоответствияОбъектовИнформационныхБаз"
13 Paul_Nevada
 
23.05.14
16:58
Есть имя плана обмена - как получить узел?
14 ДенисЧ
 
23.05.14
16:59
ПланОбменаМенеджер.<Имя плана обмена>.НайтиПоНаименованию (ExchangePlanManager.<Имя плана обмена>.FindByDescription)
ПланОбменаМенеджер.<Имя плана обмена> (ExchangePlanManager.<Имя плана обмена>)
НайтиПоНаименованию (FindByDescription)
Синтаксис:

НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>)
Параметры:

<Наименование> (обязательный)

Тип: Строка.
Строка, содержащая искомое наименование.
<ТочноеСоответствие> (необязательный)

Тип: Булево.
Определяет режим поиска по полному соответствию.
Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании).
Значение по умолчанию: Ложь
Возвращаемое значение:

Тип: ПланОбменаСсылка.
Ссылка на найденный узел. Если не существует ни одного узла с требуемым наименованием, то будет возвращена пустая ссылка.
Описание:

Осуществляет поиск узла плана обмена по его наименованию.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Если существует несколько узлов с указанным наименованием, то будет найден только один из них.
15 Paul_Nevada
 
23.05.14
17:07
спасибо!)
16 Paul_Nevada
 
23.05.14
17:09
еще вопрос - уникальные идентификаторы в пределах одной ИБ - различны для всех объектов? или различны только в пределах объектов метаданных?
17 ДенисЧ
 
23.05.14
17:11
(16) Теоретически они должны быть уникальными. Но вероятность совпадения есть
18 Paul_Nevada
 
23.05.14
17:38
Понятно...
Вот так в итоге сделал:

Запрос = Новый Запрос("ВЫБРАТЬ
|СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника
|ИЗ
|    РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
|ГДЕ
|    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &УникальныйИдентификаторИсточника
|    И СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы
|    И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточникаСтрокой <> """"
|    И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника <> """"");

Запрос.УстановитьПараметр("УникальныйИдентификаторИсточника", Объект.Ссылка);
Запрос.УстановитьПараметр("УзелИнформационнойБазы", ПланыОбмена[ПРО.ИмяПланаОбмена].НайтиПоКоду("БП"));

Отказ = Не Запрос.Выполнить().Пустой();
19 Paul_Nevada
 
23.05.14
17:40
Как-то, конечно, не очень нравится, что нужно наверняка знать код узла плана обмена, жестко его прописывать...
С другой стороны - как иначе?
Нормально - все работает.
Основная теорема систематики: Новые системы плодят новые проблемы.