Заполнить на форме внешней обработки таблицу значений из результата запроса

Получим ссылку на документ Платежного поручения в колонке таблицы значений из выборки запроса его поля на встроенном языке 1С.

№1Открываем обработку и добавляем через "+" реквизиты для отборов и реквизит для таблицы в которую будем выводить итоговый результат. Для всех полей указываем тип. Например, для поля отбора "ВалютаДокумента" тип: "СправочникСсылка.Валюты", а для таблицы "РезультатЗапроса" указываем тип: "ТаблицаЗначений":

2026-01-16_220716

P.s. у меня реквизит "ТипСравненияЛ" имеет тип: "Строка", т.к. я использую ручной ввод значения для условий выборки валюты в запросе (см. далее).

№2Открываем основную форму на вкладке "Форма" и перетаскиваем созданные реквизиты в левую часть элементов, группируя их вместе: команду (кнопку), поля отборов, таблицу значений:

2026-01-16_221739 К каждому элементу должен быть присвоен путь к данным: в моем примере, внутри реквизита "Объект" через точку к конечному реквизиту:

2026-01-16 222754

№3Теперь переходим на вкладку "Модуль" основной формы и создаем 2 процедуры: НаКлиенте для взаимодействия с формой и НаСервере для выполнения кода запроса к базе данных:

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

image-2026-01-16-21-17-09-556

№4Запускаем отладку (при необходимости) и открываем внешнюю обработку, выполняем команду "ПоискВЗапросе".

Итог: Ссылка на Платежное поручение найдена по введенным отборам на форме и выведена в ТаблицуЗначений "РезультатЗапроса", в колонку "РезультатЗапросаОбъект":

2026-01-16 224034

mr. Mak

Остались вопросы? Пишите на почту admin@hzit.ru

Администратор сайта hzit.ru
Back to top