Имя: Пароль:
1C
1С v8
Фильтр выборки в отборе изменений плана обмена
,
0 Anselm
 
09.12.14
10:50
Согласно документации 1С в методе ВыбратьИзменения глобального контекста ПланыОбмена есть параметр "ФильтрВыборки". Общий синтаксис: ВыбратьИзменения(<Узел>, <НомерСообщения>, <ФильтрВыборки>). При использовании третьего параметра возникло затруднение.

Фильтр накладывается на ряд записей регистра сведений, подчиненного регистратору. Запросом выбираются регистраторы, создаются наборы записей регистра с отбором по регистраторам и помещаются в массив. Этот массив далее используется как третий параметр. Но при этом в выборку, которая возвращается методом ВыбратьИзменения, попадают требуемые отобранные записи регистра (остальные не попадают) и ВСЕ изменения всех остальных регистров.

Кто-нибудь использовал фильтр выборки? Это штатное поведение системы?
1 Maxus43
 
09.12.14
11:01
в этот массив добавь ещё Метаданные регистра
2 Cube
 
09.12.14
11:04
(0) Если не ошибаюсь, то в ФильтрВыборки надо ложить не ссылки на объекты данных, а названия метаданных...
3 Anselm
 
09.12.14
11:06
(1) Ошибка при вызове метода контекста (ВыбратьИзменения): Фильтр изменений содержит значение неверного типа - Регистр сведений набор записей
4 Лефмихалыч
 
09.12.14
11:06
какая религия мешает прочитать справку целиком? Все же написано

<ФильтрВыборки> (необязательный)

Тип: Неопределено; Объекты метаданных; СсылкаНаОбъект, НаборЗаписей, Массив.
Неопределено - фильтр пуст, выбираются все изменения по узлу;
Объекты метаданных - выбираются изменения в основной таблице, связанной с данным объектом метаданных;
СсылкаНаОбъект - фактически, может быть выбрана только одна запись об изменении данного объекта, либо ни одной, если объект не менялся;
НаборЗаписей - набор записей регистра, может быть не выбран, для фильтрации изменений используется лишь отбор набора записей;
Массив - все элементы массива имеют один из перечисленных выше типов, кроме Неопределено. Условия фильтрации соединяются по ИЛИ.
5 Anselm
 
09.12.14
11:06
(2) согласно СП можно использовать и ссылки на конкретные объекты, и наборы записей регистров и метаданные
6 Лефмихалыч
 
09.12.14
11:07
(5) там же написано, что когда используешь наборы записей, от них реально используются только ОТБОРЫ
7 Maxus43
 
09.12.14
11:08
(6) и? у автора отбор по регисратору, всё правильно.
Вопрос был - с какого бодуна там записи других регистров
8 Anselm
 
09.12.14
11:09
(6) я так и написал. На набор записей накладывается отбор и все. Набор при этом даже не читается. И по этому конкретному регистру все ОК. Но попадают и ВСЕ записи ВСЕХ остальных регистров.
9 Anselm
 
09.12.14
11:10
Меня смущает в СП фраза "Условия фильтрации соединяются по ИЛИ"...
10 Maxus43
 
09.12.14
11:11
(9) меня не смущает, всё правильно. Если б было И - ничего бы не выбиралось вобще, когда в массиве больше одной записи
11 Лефмихалыч
 
09.12.14
11:11
(7) полагаю дело в том, что в фильтре выборки есть еще что-то, кроме набора записей
12 Anselm
 
09.12.14
11:14
(11) там есть только переданный массив. Он правильно показывается в отладчике
13 Maxus43
 
09.12.14
11:19
может в платформе косяк? на другой проверить бы, на 8.2 какойнить
14 Лефмихалыч
 
09.12.14
11:20
(12) а в массиве-то только набор записей или что-то еще? А платформа у тебя какая?
15 Anselm
 
09.12.14
11:21
(13)(14) платформа 8.2.19.83
16 Anselm
 
09.12.14
11:26
(14) в массиве несколько элементов типа "РегистрСведенийНаборЗаписей". И все
17 Лефмихалыч
 
09.12.14
11:27
(16) попробуй один элемент передать, изменения остальных регистров будут в выборке? Или может там в других наборах отбора где-то нет?
18 Anselm
 
09.12.14
11:31
(17) пробовал. То же самое. Одна запись нужного регистра и все остальные регистры целиком
19 Anselm
 
09.12.14
12:35
Всем спасибо. В массив фильтра выборки нужно добавлять пустые наборы записей без отборов остальных регистров, участвующих в плане обмена. Тогда работает. Фраза "Условия фильтрации соединяются по ИЛИ" стала понятной :-)