|
Разработка отбора на СКД в обработке | ☑ | ||
---|---|---|---|---|
0
falselight
20.03.18
✎
09:11
|
Подскажите пожалуйста если кто с этим сталкивался.
Мне нужно разработать на обработке отбор с использованием скд. Я создаю макет СКД с текстом запроса. Потом следует создать реквизит с типом КомпоновщикНастроекКомпоновкиДанных. Но потом я не могу его перенести на форму. А в подобном описании этого пишут что нужно привязать его к таблице значений. Мне нужно что бы на форме выводились данные в скд с возможностью делать отборы на поля. Как тут будет Основная форма и Форма настроек? |
|||
1
Lexey_
20.03.18
✎
09:14
|
(0) "Но потом я не могу его перенести на форму", можешь, но только по частям
|
|||
2
falselight
20.03.18
✎
10:18
|
Суть задачи такая. На форму вывести результат запроса в таблицу значений.
Для редактирования некоторых полей и обновления их в объектах 1с. Мне нужно это сделать в обработке через СКД. Подскажите какие будут действия в теории? 1. Есть макет с запросом СКД. |
|||
3
Mankubus
20.03.18
✎
10:21
|
||||
4
falselight
20.03.18
✎
10:23
|
(3) Мне на управляемой форме нужно.
|
|||
5
chelentano
20.03.18
✎
10:33
|
Добавляешь реквизит формы с типом "КомпоновщикНастроекКомпоновкиДанных"
На формы тащишь из компоновщика "ПользовательскиеНастройки" или "Настройки.Отбор" При создании на сервере пишешь: СхемаКомпоновки = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СхемаКомпоновки, УникальныйИдентификатор); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище); КомпоновщикНастроек.Инициализировать(ИсточникНастроек); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); |
|||
6
falselight
20.03.18
✎
10:39
|
(5) Да сделал так. Перетащил на форму КомпоновщикНастроекНастройкиОтбор.
Есть макет СКД, но туда я просто добавил запрос и все. Может нужно вывод делать так же? Такую процедуру внес в модуле, - // Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОО = РеквизитФормыВЗначение("Объект"); //Для внешних обработок реквизиты получаем так СКД = ОО.ПолучитьМакет("ВыводКорректировка"); URLСКД = ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор()); ОО.ОтборКонтрагентов.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСКД)); НастройкиПоУмолчанию = СКД.НастройкиПоУмолчанию; ОО.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиПоУмолчанию); ЗначениеВРеквизитФормы(ОО, "Объект"); //Для внешних обработок реквизиты сохраняем так КонецПроцедуры // |
|||
7
falselight
20.03.18
✎
10:40
|
Буду править сейчас, вижу недочеты.
|
|||
8
falselight
20.03.18
✎
10:45
|
Делаю отбор выбор поля, там пусто.
Не пойму что не так. Процедуру привел к виду, - // Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СхемаКомпоновки = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ВыводКорректировка"); АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СхемаКомпоновки, Новый УникальныйИдентификатор); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище); КомпоновщикНастроек.Инициализировать(ИсточникНастроек); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); КонецПроцедуры // |
|||
9
falselight
20.03.18
✎
10:49
|
(5) гДЕ ЧТО ПОТОМ ДОЛЖНО ПОЯВИТЬСЯ?
|
|||
10
chelentano
20.03.18
✎
10:53
|
||||
11
falselight
20.03.18
✎
10:55
|
Такой запрос вставлен в скд
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка, ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.Упаковка КАК Упаковка, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Вес, 0) КАК УпаковкаВес, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Числитель, 0) КАК Вес1Шт, ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЗнаменатель КАК ВесПогонногоМетра, ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЧислитель КАК Длина, ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура |
|||
12
falselight
20.03.18
✎
11:16
|
Эта часть запустилась.
Дело в том что процедура при создании на сервере, не была увязана. Нужно выбирать её для создания из списка!!! |
|||
13
FIXXXL
20.03.18
✎
11:17
|
(11) может тебе проще сделать дин.список по твоему запросу и с ним играться? его и редактировать легче
|
|||
14
falselight
20.03.18
✎
11:20
|
(13) Да может быть. Я учусь.
|
|||
15
falselight
20.03.18
✎
11:46
|
&НаСервере
Процедура СФОРМИРОВАТЬ_ТЧНаСервере() СКД = РеквизитФормыВЗначение("Объект").ПолучитьМакет("МАКЕТ_ВыводКорректировка"); НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, НастройкиКомпоновки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры Поставил точку останова на последней строке, но в ТЗ пусто. Почему может быть не отбирать? Сам запрос в макете не выдает? |
|||
16
falselight
20.03.18
✎
11:56
|
Иду далее. Не там точку останова ставил!
|
|||
17
falselight
20.03.18
✎
12:14
|
(15) По этому коду формируется таблица значений с данными.
Но если ставлю фильтр на форме, он не отрабатывает, то есть не фильтрует. Где что то может быть не увязанно? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |