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

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

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

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


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

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

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

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

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

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

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

КонецФункции
Показать
BuryMeInVegas; EVKash; vadim.semyonov.rzn; +3 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. JohnGalt 56 23.01.20 16:39 Сейчас в теме
(1) Описание ошибки достаточно информативное. На сервере нет доступа к указанному ревизиту "ЭтаФорма.Элементы.Авансы.ТекущиеДанные.КСФВыданныйАванс). Нужно передать это значение либо с клиента, либо использовать другую конструкцию: получить данные нужной строки не с формы а с объекта.
5. BuryMeInVegas 23.01.20 16:46 Сейчас в теме
(4) Так я понимаю, что сервер не может обратиться к этим данным. :) Дело в том, что я понятия не имею, какую конструкцию использовать для табличной части, чтобы получить из неё данные. Вот кабы её не было... :)
7. BuryMeInVegas 23.01.20 16:51 Сейчас в теме
(4) Точнее говоря, я пытался достучаться до нужного мне значения реквизита в текущей строке через Объект, но дальше табличной части документа я опуститься не смог. Подскажите, пожалуйста, как должна выглядеть эта конструкция, если Вас не затруднит.
8. Xershi 991 23.01.20 16:58 Сейчас в теме
(1) тебе нужно на клиенте получить КСФВыданныйАванс и как параметр передать в процедуру на сервере и далее использовать в запросе.
2. демиденкоНаталияФедоровна 17 23.01.20 16:33 Сейчас в теме
в параметр нужно передать или конкретное значение или списокЗначений
3. BuryMeInVegas 23.01.20 16:35 Сейчас в теме
(2) Конкретное значение. Одна с/ф вводится, для неё заполняется сумма, ставка и сумма налога. В следующей строке по новой, вводится с/ф и т.д.
6. демиденкоНаталияФедоровна 17 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 Сейчас в теме
Коллеги, огромное спасибо за ваш ответ. У меня тоже ВСЕ получилось. Я три дня не могла с этим разобраться, пока не нашла эти ответы!
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 200 000 руб.
Полный день

Аналитик
Москва
зарплата от 150 000 руб. до 300 000 руб.
Полный день

Системный архитектор
Москва
зарплата от 150 000 руб.
Полный день

Ведущий консультант аналитик 1С ERP, УХ
Ульяновск
зарплата от 120 000 руб.
Полный день