Заполнить на форме внешней обработки таблицу значений из результата запроса
Получим ссылку на документ Платежного поручения в колонке таблицы значений из выборки запроса его поля на встроенном языке 1С.
№1Открываем обработку и добавляем через "+" реквизиты для отборов и реквизит для таблицы в которую будем выводить итоговый результат. Для всех полей указываем тип. Например, для поля отбора "ВалютаДокумента" тип: "СправочникСсылка.Валюты", а для таблицы "РезультатЗапроса" указываем тип: "ТаблицаЗначений":
P.s. у меня реквизит "ТипСравненияЛ" имеет тип: "Строка", т.к. я использую ручной ввод значения для условий выборки валюты в запросе (см. далее).
№2Открываем основную форму на вкладке "Форма" и перетаскиваем созданные реквизиты в левую часть элементов, группируя их вместе: команду (кнопку), поля отборов, таблицу значений:
К каждому элементу должен быть присвоен путь к данным: в моем примере, внутри реквизита "Объект" через точку к конечному реквизиту:
№3Теперь переходим на вкладку "Модуль" основной формы и создаем 2 процедуры: НаКлиенте для взаимодействия с формой и НаСервере для выполнения кода запроса к базе данных:
&НаКлиенте
Процедура ПоискВЗапросе(Команда)
СерверПоискВЗапросе();
КонецПроцедуры
&НаСервере
Процедура СерверПоискВЗапросе()
СостояниеОбъекта = Объект.СостояниеОбъекта;
ТипСравненияЛ = Объект.ТипСравненияЛ;
БКСВалютаВзаиморасчетов = Объект.БКСВалютаВзаиморасчетов;
ВалютаДокумента = Объект.ВалютаДокумента;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1
| БКСРегистрСостоянийОбъектовСрезПоследних.Объект.Ссылка КАК Объект
|ИЗ
| РегистрСведений.БКСРегистрСостоянийОбъектов.СрезПоследних КАК БКСРегистрСостоянийОбъектовСрезПоследних
|ГДЕ
| БКСРегистрСостоянийОбъектовСрезПоследних.Объект ССЫЛКА Документ.ПлатежноеПоручение
| И БКСРегистрСостоянийОбъектовСрезПоследних.СостояниеОбъекта = &СостояниеОбъекта
| И ВЫБОР
| КОГДА &ТипСравнения = ИСТИНА
| ТОГДА БКСРегистрСостоянийОбъектовСрезПоследних.Объект.ВалютаДокумента = &ВалютаДокумента
| ИНАЧЕ
| НЕ БКСРегистрСостоянийОбъектовСрезПоследних.Объект.ВалютаДокумента = &ВалютаДокумента
| КОНЕЦ
| И ВЫБОР
| КОГДА &ТипСравнения = ИСТИНА
| ТОГДА БКСРегистрСостоянийОбъектовСрезПоследних.Объект.БКСВалютаВзаиморасчетов = &БКСВалютаВзаиморасчетов
| ИНАЧЕ
| НЕ БКСРегистрСостоянийОбъектовСрезПоследних.Объект.БКСВалютаВзаиморасчетов = &БКСВалютаВзаиморасчетов
| КОНЕЦ";
Запрос.УстановитьПараметр("СостояниеОбъекта", СостояниеОбъекта);
Если ТипСравненияЛ = "Равно" Тогда
ТипСравнения = Истина;
Иначе
ТипСравнения = Ложь;
КонецЕсли;
Запрос.УстановитьПараметр("ТипСравнения", (ТипСравнения));
Запрос.УстановитьПараметр("БКСВалютаВзаиморасчетов", БКСВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("ВалютаДокумента", ВалютаДокумента);
// Очищаем существующую таблицу
Объект.РезультатЗапроса.Очистить();
// Выполняем запрос
Результат = Запрос.Выполнить();
ТаблицаЗапроса = Результат.Выгрузить();
// Для отладки - посмотрим, что вернул запрос
Сообщить("Запрос вернул " + ТаблицаЗапроса.Количество() + " строк");
// Заполняем таблицу
Для Каждого СтрокаЗапроса Из ТаблицаЗапроса Цикл
НоваяСтрока = Объект.РезультатЗапроса.Добавить();
НоваяСтрока.РезультатЗапросаОбъект = СтрокаЗапроса.Объект;
// Для отладки
Сообщить("Найден объект: " + СтрокаЗапроса.Объект);
КонецЦикла;
КонецПроцедуры
№4Запускаем отладку (при необходимости) и открываем внешнюю обработку, выполняем команду "ПоискВЗапросе".
Итог: Ссылка на Платежное поручение найдена по введенным отборам на форме и выведена в ТаблицуЗначений "РезультатЗапроса", в колонку "РезультатЗапросаОбъект":
Похожие материалы (по тегу)
- Консоль запроса: подсчёт количества документов в группировке по детальным записям
- Свёртка базы 1С УТ 10.3
- Как вывести Регистратор и Период по регистру бухгалтерии и выбрать тип регистратора в СКД
- СКД вывести последний документ по номенклатуре если не было оборота по регистру в выбранном периоде
- Объединить поле номенклатуры с подсчетом общего количества из документа в отчете СКД