Передача параметра в запрос из табличной части документа.
Доброго времени суток! Столкнулся с необходимостью передать в запрос параметра в виде значения реквизита в текущей строке табличной части. Условно, имеется табличная часть "Авансы", в ней реквизит "КИсходнойСФ". Я хочу автоматически заполнить остальные реквизиты таб части, при выборе конкретной с/ф. Для этого делаю запрос к нужной мне с/ф, пытаюсь передать в запрос номер моей с/ф, но меня выбивает с ошибкой на скрине ниже.
Так же прикреплю код, подскажите, пожалуйста, что я делаю не так.
Заранее благодарю!
Так же прикреплю код, подскажите, пожалуйста, что я делаю не так.
&НаСервере
Процедура АвансыКСФВыданныйАвансПриИзмененииНаСервере()
Запрос = Новый Запрос ("ВЫБРАТЬ
| СчетФактураВыданныйАванс.Сумма КАК Сумма,
| СчетФактураВыданныйАванс.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйАванс.НалогообложениеНДС КАК НалогообложениеНДС
|ИЗ
| Документ.СчетФактураВыданныйАванс КАК СчетФактураВыданныйАванс
|ГДЕ
| СчетФактураВыданныйАванс.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", ЭтаФорма.Элементы.Авансы.ТекущиеДанные.КСФВыданныйАванс);
Результат = Запрос.Выполнить();
ТЗнач = Результат.Выгрузить();
Для Каждого стр Из ТЗнач Цикл
НовСтр = Объект.Авансы.Добавить();
НовСтр.Сумма = стр.Сумма;
НовСтр.СтавкаНДС = стр.НалогообложениеНДС;
НовСтр.СуммаНДС = стр.СуммаНДС;
КонецЦикла;
КонецПроцедуры
ПоказатьЗаранее благодарю!
Прикрепленные файлы:
![](/upload/forum/upload/00a/00a8aadd6350c02f4267faa624570ea5.jpg)
По теме из базы знаний
- Создание внешней печатной формы под УП с возможностью передачи параметров (для конфигураций на БСП)
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().
- Консоль запросов со встроенным Конструктором запросов для 1с8.3 (8.2) своими руками
- Консоль запросов для управляемых форм
Найденные решения
вот, попробуйте так
&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()
ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АвансыКСФВыданныйАвансПриИзмененииНаСервере(СсылкаСФ)
Запрос = Новый Запрос (
"ВЫБРАТЬ
| СчетФактураВыданныйАванс.Сумма КАК Сумма,
| СчетФактураВыданныйАванс.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйАванс.НалогообложениеНДС КАК СтавкаНДС
|ИЗ
| Документ.СчетФактураВыданныйАванс КАК СчетФактураВыданныйАванс
|ГДЕ
| СчетФактураВыданныйАванс.Ссылка = &Ссылка
|"
);
Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;
Возврат ДанныеСФ;
КонецФункции
Показать
&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()
ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АвансыКСФВыданныйАвансПриИзмененииНаСервере(СсылкаСФ)
Запрос = Новый Запрос (
"ВЫБРАТЬ
| СчетФактураВыданныйАванс.Сумма КАК Сумма,
| СчетФактураВыданныйАванс.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйАванс.НалогообложениеНДС КАК СтавкаНДС
|ИЗ
| Документ.СчетФактураВыданныйАванс КАК СчетФактураВыданныйАванс
|ГДЕ
| СчетФактураВыданныйАванс.Ссылка = &Ссылка
|"
);
Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;
Возврат ДанныеСФ;
КонецФункции
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Описание ошибки достаточно информативное. На сервере нет доступа к указанному ревизиту "ЭтаФорма.Элементы.Авансы.ТекущиеДанные.КСФВыданныйАванс). Нужно передать это значение либо с клиента, либо использовать другую конструкцию: получить данные нужной строки не с формы а с объекта.
вот, попробуйте так
&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()
ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АвансыКСФВыданныйАвансПриИзмененииНаСервере(СсылкаСФ)
Запрос = Новый Запрос (
"ВЫБРАТЬ
| СчетФактураВыданныйАванс.Сумма КАК Сумма,
| СчетФактураВыданныйАванс.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйАванс.НалогообложениеНДС КАК СтавкаНДС
|ИЗ
| Документ.СчетФактураВыданныйАванс КАК СчетФактураВыданныйАванс
|ГДЕ
| СчетФактураВыданныйАванс.Ссылка = &Ссылка
|"
);
Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;
Возврат ДанныеСФ;
КонецФункции
Показать
&НаКлиенте
Процедура АвансыКСФВыданныйАвансПриИзменении()
ТекДанные = Элементы.Авансы.ТекущиеДанные;
ДанныеСФ = АвансыКСФВыданныйАвансПриИзмененииНаСервере(ТекДанные.КСФВыданныйАванс);
ЗаполнитьЗначенияСвойств(ТекДанные, ДанныеСФ);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АвансыКСФВыданныйАвансПриИзмененииНаСервере(СсылкаСФ)
Запрос = Новый Запрос (
"ВЫБРАТЬ
| СчетФактураВыданныйАванс.Сумма КАК Сумма,
| СчетФактураВыданныйАванс.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйАванс.НалогообложениеНДС КАК СтавкаНДС
|ИЗ
| Документ.СчетФактураВыданныйАванс КАК СчетФактураВыданныйАванс
|ГДЕ
| СчетФактураВыданныйАванс.Ссылка = &Ссылка
|"
);
Запрос.УстановитьПараметр("Ссылка", СсылкаСФ);
Результат = Запрос.Выполнить().Выбрать();
ДанныеСФ = Новый Структура("Сумма,СтавкаНДС,СуммаНДС");
Если Результат.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеСФ,Результат);
КонецЕсли;
Возврат ДанныеСФ;
КонецФункции
Еще способ, схожий с используемым в посте:
ТекущаяСтрока = Элементы.Авансы.ТекущаяСтрока;
ТекущиеДанные = Объект.Авансы.НайтиПоИдентификатору(ТекущаяСтрока);
Запрос.УстановитьПараметр("Ссылка", ТекущиеДанные.КСФВыданныйАванс);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот