Вход | Регистрация

1С:Предприятие ::

Метки: 

Разработка отбора на СКД в обработке

Я
   falselight
 
20.03.18 - 09:11
Подскажите пожалуйста если кто с этим сталкивался.
Мне нужно разработать на обработке отбор с использованием скд.
Я создаю макет СКД с текстом запроса.
Потом следует создать реквизит с типом КомпоновщикНастроекКомпоновкиДанных. Но потом я не могу его перенести на форму. А в подобном описании этого пишут что нужно привязать его к таблице значений.
Мне нужно что бы на форме выводились данные в скд с возможностью
делать отборы на поля.
Как тут будет Основная форма и Форма настроек?
 
  Рекламное место пустует
   Lexey_
 
1 - 20.03.18 - 09:14
(0) "Но потом я не могу его перенести на форму", можешь, но только по частям
   falselight
 
2 - 20.03.18 - 10:18
Суть задачи такая. На форму вывести результат запроса в таблицу значений.
Для редактирования некоторых полей и обновления их в
объектах 1с.
Мне нужно это сделать в обработке через СКД.
Подскажите какие будут действия в теории?
1. Есть макет с запросом СКД.
   Mankubus
 
3 - 20.03.18 - 10:21
2. Позвать программиста
3. profit
http://catalog.mista.ru/public/400647/
   falselight
 
4 - 20.03.18 - 10:23
(3) Мне на управляемой форме нужно.
   chelentano
 
5 - 20.03.18 - 10:33
Добавляешь реквизит формы с типом "КомпоновщикНастроекКомпоновкиДанных"

На формы тащишь из компоновщика "ПользовательскиеНастройки" или "Настройки.Отбор"

При создании на сервере пишешь:

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

Есть макет СКД, но туда я просто добавил запрос и все.
Может нужно вывод делать так же?

Такую процедуру внес в модуле, -

//

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       ОО     = РеквизитФормыВЗначение("Объект");//Для внешних обработок реквизиты получаем так

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

КонецПроцедуры
//
   falselight
 
7 - 20.03.18 - 10:40
Буду править сейчас, вижу недочеты.
   falselight
 
8 - 20.03.18 - 10:45
Делаю отбор выбор поля, там пусто.
Не пойму что не так.
Процедуру привел к виду, -

//

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    СхемаКомпоновки           = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ВыводКорректировка");
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СхемаКомпоновки, Новый УникальныйИдентификатор);
    ИсточникНастроек          = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище);
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);       
КонецПроцедуры
//
   falselight
 
9 - 20.03.18 - 10:49
(5) гДЕ ЧТО ПОТОМ ДОЛЖНО ПОЯВИТЬСЯ?
   chelentano
 
10 - 20.03.18 - 10:53
 
  Рекламное место пустует
   falselight
 
11 - 20.03.18 - 10:55
Такой запрос вставлен в скд

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование,
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Упаковка КАК Упаковка,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Вес, 0) КАК УпаковкаВес,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Числитель, 0) КАК Вес1Шт,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЗнаменатель КАК ВесПогонногоМетра,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЧислитель КАК Длина,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
   falselight
 
12 - 20.03.18 - 11:16
Эта часть запустилась.
Дело в том что процедура при создании на сервере,
не была увязана. Нужно выбирать её для создания из списка!!!
   FIXXXL
 
13 - 20.03.18 - 11:17
(11) может тебе проще сделать дин.список по твоему запросу и с ним играться? его и редактировать легче
   falselight
 
14 - 20.03.18 - 11:20
(13) Да может быть. Я учусь.
   falselight
 
15 - 20.03.18 - 11:46
&НаСервере
Процедура СФОРМИРОВАТЬ_ТЧНаСервере()
    СКД                 = РеквизитФормыВЗначение("Объект").ПолучитьМакет("МАКЕТ_ВыводКорректировка");
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновщикМакета   = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки     = КомпоновщикМакета.Выполнить(СКД, НастройкиКомпоновки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));  
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЗ              = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры


Поставил точку останова на последней строке, но в ТЗ пусто. Почему может быть не отбирать? Сам запрос в макете не выдает?
   falselight
 
16 - 20.03.18 - 11:56
Иду далее. Не там точку останова ставил!
   falselight
 
17 - 20.03.18 - 12:14
(15) По этому коду формируется таблица значений с данными.
Но если ставлю фильтр на форме, он не отрабатывает, то
есть не фильтрует. Где что то может быть не увязанно?


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует