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

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

Автор 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

Технологический блог фирмы 1С | 1С:Зазеркалье

02.11.2022 Список задач, планируемых к реализации в версии 3.0 технологии 1С:Предприятие.Элемент

Мы продолжаем активно развивать нашу новую технологию 1С:Предприятие.Элемент и публикуем список задач по развитию её функциональности в версии 3.0.


01.11.2022 Улучшение внешнего вида и расширение функциональности диаграммы Ганта

Диаграмма Ганта - важный элемент пользовательского интерфейса, использующийся, в частности, для визуализации хода выполнения задач, планирования ресурсов, графика рабочего времени. По многочисленным просьбам разработчиков, использующих наши технологии, в версии 8.3.23 мы улучшим её внешний вид и расширим функциональность.


21.10.2022 Множественный выбор в поле ввода

В версии 8.3.23 будет реализован новый интерфейс для последовательного ввода однотипных значений.


14.10.2022 Вебинар «Платформа 8.3.22»

Вебинар «Платформа 8.3.22», посвященный выходу новой версии платформы 1С:Предприятие, состоится 20 октября в 11:00.

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

В конце вебинара можно будет задать вопросы разработчикам.

Для участия в вебинаре необходимо:

  1. Быть зарегистрированным пользователем портала developer.1c.ru
  2. До 16:00 19 октября зарегистрироваться на вебинар - для этого нужно нажать кнопку "Зарегистрироваться" на странице "Вебинары" в личном кабинете портала developer.1c.ru

Обратите внимание: приглашение на вебинар придет не всем зарегистрированным на портале developer.1c.ru, а только тем, кто зарегистрировался на вебинар.



22.09.2022 Доработки по повышению производительности платформы в версии 8.3.23

Постоянно повышается масштаб использования платформы 1С:Предприятие, всё больше и больше внедрений на тысячи пользователей - как в корпоративном сегменте, так и в облачном варианте. Мы стараемся, чтобы платформа удовлетворяла требованиям таких внедрений - высокой производительности при больших размерах базы, при большом количестве пользователей. Также для нас важна комфортная работа программистов при работе с крупными конфигурациями.

В версии 8.3.23 реализован ряд доработок, ускоряющих работу платформы в определенных сценариях.



05.09.2022 Распознавание речи

В версии 8.3.23 в платформе появится сервис распознавания речи.


29.08.2022 Развитие Системы взаимодействия

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


24.08.2022 План задач на версию 8.3.24 платформы 1С:Предприятие

Опубликован план задач на версию 8.3.24 платформы 1С:Предприятие.



Новости проекта

Подпишитесь, чтобы не пропустить новые статьи в нашем блоге.


mashencev_anton

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

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


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

MuI_I_Ika

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

mashencev_anton

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

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

Теги:

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

Рейтинг@Mail.ru

Поиск