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