Имя: Пароль:
1C
1С v8
Работа отборов СКД
0 slabak
 
18.04.17
11:32
Добрый день!

Вопрос в работе отборов СКД.
Заранее извините за длинную портянку.

Создаю обработку - цель которой отбирать с помощью разных отборов необходимые документы для последующего редактирования.

Что сделал?

Создал обработку, в реквизиты добавил реквизит КомпоновщикНастроек (тип КомпоновщикНастроекКомпоновкиДанных), также в обработке создал 2 схемы компоновки:

1) Отборы. Схема для описания отборов к схеме (2).
2) ЗапросИнформации - запрос к регистру.

В схеме 1 (Отборы) создал несколько наборов данных с запросами данных по тем реквизитам, по которым в последующем хочу делать отбор при компоновке результата схемы (2). В том числе по значению регистратора.

Выглядит это так:
1) Схема Отборы - https://i.gyazo.com/df329daa1496631839c1a23c0ba3e6d9.png
2) Схема ЗапросИнформации - https://i.gyazo.com/3d90e7d320c7a4f2ebcd2ba6fa89de3c.png

Далее на форму бросил Отбор КомпоновщикаНастроек - https://i.gyazo.com/58c5e47cc07a2fb3c728f1d1b7ee8c29.png

В коде формы при создании инициализировал настройки таким образом:

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаСКД = ОбработкаОбъект.ПолучитьМакет("Отборы"); //получаем макет отборов из обработки
    
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаСКД, УникальныйИдентификатор);
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы);
    
Объект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);


Далее при нажатии на кнопку "Получить результаты отбора" сделал следующее для получения результатов по схеме (2) с отборами схемы (1):

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");     
СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("ЗапросИнформации"); // получаем схему для запроса информации из регистра    
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    ОбработкаОбъект.КомпоновщикНастроек.Настройки, , ,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));  
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаОтобранныхЭлементов = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаОтобранныхЭлементов);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Далее ТаблицаОтобранныхЭлементов выводится в таблицу значений на форму.

Такая реализация работает, но почему то не со всеми документами в отборе. Почему?

Вот например, ставим в отбор первый документ и получаем результат ТаблицаОтобранныхЭлементов такой:
1) Устанавливаем отбор на форме - https://i.gyazo.com/75da237846ae4f92faf15a61b6007a15.png
2) Жмем "Получить результат отбора"
3) Получаем ожидаемый результат - документ с которым в последующем необходимо произвести нужные действия (https://i.gyazo.com/cefd4640bb6599a18862a063268d2f6c.png) - берется из ТаблицаОтобранныхЭлементов
4) Ставим в отбор другой документ - https://i.gyazo.com/82ada5cb6d09d8378f558f0401b8aca6.png
5) Жмем "Получить результат отбора"
6) И в результате получаем пустую таблицу - https://i.gyazo.com/127b8b1f64d555db6254105fe7a3310d.png

Такое ощущение, что отбор применяется неправильно к схеме (2) в части случаев, но почему?

Извините за объемный вопрос, но не могу понять почему так себя ведет СКД.

Спасибо.
1 slabak
 
18.04.17
12:01
Есть у кого нибудь идеи почему так происходит?
3 Timon1405
 
18.04.17
12:28
(0) скорее всего наложенный отбор на внешнюю таблицу превращает левое соединение наборов во внутреннее
https://its.1c.ru/db/metod8dev#content:2696:hdoc:_top
4 slabak
 
20.04.17
11:48
(3) И как это решить? Из ссылки не понял каким образом можно правильно наложить отборы, чтобы корректно работало. :(
5 Buster007
 
20.04.17
11:51
Посмотри у макета компоновки запрос и сделай выводы.
Возможно тебе придется снять галку "Автозаполнение" и настроить самостоятельно возможные отборы.
6 slabak
 
20.04.17
13:09
(5) Вот такая картинка получается:
1) В этом случае документ находит https://i.gyazo.com/dc970dda7d8446c5055a7262b3e4bca7.png
2) А в этом случае не находит https://gyazo.com/33a7458ae828b68a55985e2f9e96d63e

Хотя как видно - всё идентично, кроме задаваемого параметра.
7 slabak
 
20.04.17
15:57
Есть у кого нибудь идеи?
8 GvH
 
20.04.17
16:35
(7) Нет движений по регистру у документа № 3.
9 slabak
 
20.04.17
16:44
(8) движения есть
10 kuzyara
 
21.04.17
04:01
Я так понял Консоль компоновок данных (ИР) для слабаков?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.