Передача параметра в запрос из табличной части документа.

1. BuryMeInVegas 23.01.20 16:25 Сейчас в теме
Доброго времени суток! Столкнулся с необходимостью передать в запрос параметра в виде значения реквизита в текущей строке табличной части. Условно, имеется табличная часть "Авансы", в ней реквизит "КИсходнойСФ". Я хочу автоматически заполнить остальные реквизиты таб части, при выборе конкретной с/ф. Для этого делаю запрос к нужной мне с/ф, пытаюсь передать в запрос номер моей с/ф, но меня выбивает с ошибкой на скрине ниже.

Так же прикреплю код, подскажите, пожалуйста, что я делаю не так.

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


Заранее благодарю!
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
9. soft_wind 23.01.20 17:11 Сейчас в теме
вот, попробуйте так

&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()

ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);

КонецПроцедуры

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

Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;

Возврат ДанныеСФ;

КонецФункции
Показать
BuryMeInVegas; EVKash; vadim.semyonov.rzn; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. JohnGalt 57 23.01.20 16:39 Сейчас в теме
(1) Описание ошибки достаточно информативное. На сервере нет доступа к указанному ревизиту "ЭтаФорма.Элементы.Авансы.ТекущиеДанные.КСФВыданныйАванс). Нужно передать это значение либо с клиента, либо использовать другую конструкцию: получить данные нужной строки не с формы а с объекта.
5. BuryMeInVegas 23.01.20 16:46 Сейчас в теме
(4) Так я понимаю, что сервер не может обратиться к этим данным. :) Дело в том, что я понятия не имею, какую конструкцию использовать для табличной части, чтобы получить из неё данные. Вот кабы её не было... :)
7. BuryMeInVegas 23.01.20 16:51 Сейчас в теме
(4) Точнее говоря, я пытался достучаться до нужного мне значения реквизита в текущей строке через Объект, но дальше табличной части документа я опуститься не смог. Подскажите, пожалуйста, как должна выглядеть эта конструкция, если Вас не затруднит.
8. Xershi 1484 23.01.20 16:58 Сейчас в теме
(1) тебе нужно на клиенте получить КСФВыданныйАванс и как параметр передать в процедуру на сервере и далее использовать в запросе.
2. демиденкоНаталияФедоровна 23 23.01.20 16:33 Сейчас в теме
в параметр нужно передать или конкретное значение или списокЗначений
3. BuryMeInVegas 23.01.20 16:35 Сейчас в теме
(2) Конкретное значение. Одна с/ф вводится, для неё заполняется сумма, ставка и сумма налога. В следующей строке по новой, вводится с/ф и т.д.
6. демиденкоНаталияФедоровна 23 23.01.20 16:50 Сейчас в теме
сервер не видит форму с данными. ему нужно передать переменную
9. soft_wind 23.01.20 17:11 Сейчас в теме
вот, попробуйте так

&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()

ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);

КонецПроцедуры

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

Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;

Возврат ДанныеСФ;

КонецФункции
Показать
BuryMeInVegas; EVKash; vadim.semyonov.rzn; +3 Ответить
10. dhurricane 24.01.20 07:51 Сейчас в теме
Еще способ, схожий с используемым в посте:
ТекущаяСтрока = Элементы.Авансы.ТекущаяСтрока;
ТекущиеДанные = Объект.Авансы.НайтиПоИдентификатору(ТекущаяСтрока);

Запрос.УстановитьПараметр("Ссылка", ТекущиеДанные.КСФВыданныйАванс);
11. BuryMeInVegas 24.01.20 14:28 Сейчас в теме
Большое спасибо за ответы, всё получилось!
12. user1203023 23.06.22 19:42 Сейчас в теме
Коллеги, огромное спасибо за ваш ответ. У меня тоже ВСЕ получилось. Я три дня не могла с этим разобраться, пока не нашла эти ответы!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот