• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Запрос Который Должен Заполнить Табличную Часть Документа

  • Автор темы Peacedeath
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Peacedeath

Доброго времени суток.

Задание на этот раз такое: По кнопке «Заполнить» в табличную часть подбираются данные из регистра сведений «Инвестиционные договора».

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


Запрос.УстановитьПараметр("Период" = ЭлементыФормы.Дата.Значение);
РезультатЗапроса = Запрос.Выполнить();
ТабличноеПоле = РезультатЗапроса.Выбрать();	

Для каждого стр из ТабличноеПоле Цикл

п = ТабличнаяЧасть1.Добавить();
п.ПроцентныйДоход = стр.ПроцентДохода;
п.Договор = стр.Договор;
п.Валюта = стр.Валюта;

КонецЦикла;

У меня во первых с датой документа проблемы! + В табличнойЧасти появляются лишние пустые записи.
Прошу вас помогите решить..
 
U

unknown181538

"У меня во первых с датой документа проблемы! "
Какие?

"В табличнойЧасти появляются лишние пустые записи."
Итоги уберите из запроса для начала.

" Для каждого стр из ТабличноеПоле Цикл" это вообще работает? обычно выборку так не обходят.
 
P

Peacedeath

Код:
Запрос.УстановитьПараметр(&Период, ЭлементыФормы.Дата.Значение)
- Вот это я делаю с датой. Дабы Период моей выборки совпал с выборкой документа.
Пока получаю ошибку "Недостаточно фактических параметров"

Итоги убрал, пустые поля не появляются! Супер

" Для каждого стр из ТабличноеПоле Цикл" это вообще работает? обычно выборку так не обходят."
Ну а как по другому, Циклом Пока Элемент.Следующий() я очень плохо понимаю как заносить туда параметры.
По крайней мере, некие данные заносятся в табличку через эдакий метод (Для Каждого)
 
P

Peacedeath

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


Запрос.УстановитьПараметр("Дата", ЭлементыФормы.Дата.Значение);
РезультатЗапроса = Запрос.Выполнить();
ТабличноеПоле = РезультатЗапроса.Выгрузить();									

//Пока ТабличноеПоле.Следующий() цикл
//ТабЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока;
//ТабЧ.Договор = ТабличноеПоле.Договор; 
//КонецЦикла;

Для каждого стр из ТабличноеПоле Цикл

п = ТабличнаяЧасть1.Добавить();
п.ПроцентныйДоход = стр.ПроцентДохода;
п.Договор = стр.Договор;
п.Валюта = стр.Валюта;	 
п.Контрагент = стр.Контрагент;


п.Курс = стр.Курс; 

КонецЦикла;
Всё теперь как положено работает) Всем спс
 
M

-master-

если ТабличнаяЧасть1 это таблица, то все это можно решить 1-им запросом, без клиента и циклов.
 
U

unknown181538

"если ТабличнаяЧасть1 это таблица, то все это можно решить 1-им запросом, без клиента и циклов."
Вы о чем вообще?? Апдейтом что ли или инсертом?
 
Д

Дайнеко

Вот где косяк:
Код:
	  Для каждого стр из ТабличноеПоле Цикл

Логически понимаю, что надо выбрать Результат запроса. И на каждый проход цикла добавить по 1 строке в ТЧ "ТабличнаяЧасть1" (убивал бы за такие названия и за такое оформление текста).

А Вы делаете столько циклов, сколько строк в "ТабличноеПоле". А, кстати, что это оно такое?

Добавлено: Ой! Только сейчас рассмотрел!. Данные исходные берутся из все той же стр = ТабличноеПоле.

Ставлю диагноз: .... Ладно дам задание: расставьте в голове, что Вы хотите сделать? Сосредоточьтесь на вопросе: Откуда берем и Куда пишем?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!