Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 13:09

Вопрос по запросу

Автор mashencev_anton, 21 янв 2015, 11:18

0 Пользователей и 1 гость просматривают эту тему.

mashencev_anton

   день добрый подскажи пожалуйста, можно ли создать запрос к открытой модально форме списка документов с предварительным отбором??

mashencev_anton

точнее из формы выбора...

MuI_I_Ika

Формы управляемые или обычные?

mashencev_anton

Цитата: MuI_I_Ika от 21 янв 2015, 13:08
Формы управляемые или обычные?

Управляемые

cska-fanat-kz

запрос - выбирает данные из базы
форма - только показывает данные из базы, но не хранит их.
вывод: нельзя.
вариант видится единственный: получить от формы все параметры отображения (период, отбор и пр.) и применить их к запросу - списку документов...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

MuI_I_Ika

Для управляемых пока делаю так. Создаю макет, куда кидаю СКД с запросом как в форме выбора. Далее в форме подбора просто подхватываются настройки, которые вы сделали для динамического списка, пихаются в заранее заготовленный СКД и получаются данные. Примерно вот такой код для формы подбора:

&НаКлиенте
Процедура ОтобратьКонтрагентов(Команда)

АдресВХ = "";
ОтобратьКонтрагентовСервер(АдресВХ);
СтруктураВыбора = Новый Структура;
СтруктураВыбора.Вставить("Контрагенты",АдресВХ);
ОповеститьОВыборе(СтруктураВыбора);
//ЭтаФорма.Закрыть();

КонецПроцедуры

&НаСервере
Процедура ОтобратьКонтрагентовСервер(АдресВХ)

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

АдресВХ = ПоместитьВоВременноеХранилище(ТаблицаЗначений,Новый УникальныйИдентификатор());

КонецПроцедуры

//****************************************************************************
// ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
// Заполняет переданный объект на основани СКД
// Параметры
//  СКД – собствеено настройки СКД
//  ОбъектДляЗагрузки – объект в который выгружаются данные, таблица значений, дерево значений, табличный документ
//  ИсполняемыеНастройки – Пользовательские настройки СКД если не указаны будут использованы настроки СКД по умолчанию
//  СтруктураПараметров - Структура – Передаваемые для СКД параметры
//
&НаСервере
Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
// ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
//Иначе
        ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
//КонецЕсли;

    Если ИсполняемыеНастройки = Неопределено Тогда
        ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
ИсполняемыеНастройки.Отбор.Элементы.Очистить();
Для каждого Элемент из КонрагентыСписок.Отбор.Элементы Цикл

НовыйЭлемент = ИсполняемыеНастройки.Отбор.Элементы.Добавить(ТипЗнч(Элемент));
ЗаполнитьЗначенияСвойств(НовыйЭлемент,Элемент);

КонецЦикла;
    КонецЕсли;

    Если СтруктураПараметров <> Неопределено Тогда
        КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
        Для каждого Параметр Из СтруктураПараметров Цикл
            НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);
            Если НайденноеЗначениеПараметра <> Неопределено Тогда
                НайденноеЗначениеПараметра.Использование = Истина;
                НайденноеЗначениеПараметра.Значение = Параметр.Значение;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

    МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД, МакетКомпоновки, ТипГенератора);

    ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;       
    ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД);

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

    ПроцессорВывода.ОтображатьПроцентВывода = Истина;
    ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);

КонецПроцедуры


А вот когда выйдет 8.3.6 тогда уже можно будет одной процедурой получать данные с динамических списков. http://v8.1c.ru/o7/201404list/index.htm

mashencev_anton

Спасибо за помощь))) я решил это таким способом.

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


Объект.ссылка- это реквизит внешней обработки.
потом создал кнопку с командой и процедуру на сервере которая делала запрос а в качестве параметра брался реквизит Объект.ссылка

MuI_I_Ika

Не забывайте, что от модальности в управляемых формах нужно отказываться.

mashencev_anton

Цитата: MuI_I_Ika от 21 янв 2015, 14:32
Не забывайте, что от модальности в управляемых формах нужно отказываться.

а если использовать ОткрытьФорму(); то реквизит формы не заполняется(((((

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск