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