СписокПриПолученииДанныхНаСервере в расширении: "Поле объекта не обнаружено"

1. Altez50 1 11.10.23 12:24 Сейчас в теме
Надо добавить Реквизит СуммаНДС и связанный с ним элемент формы списка документа РТиУ (1с:БП3)

Делаю по руководству.
1. Заимствую ФормуСписка в расширение.
2. В открывшейся форме: пкм на реквизите Список-Добавить в расширение, чтобы отредактировать текст запроса
3. В текст запроса добавляю выбор поля Выразить(0 Как Число (11,2)) Как рсСуммаНДС,
4. Убеждаюсь, что у реквизита формы Список появляется дочерний элемент "рсСуммаНДС"
5. Добавляю обработчик СписокПриПолученииДанныхНаСервере()
&НаСервереБезКонтекста
Процедура Расш1_СписокПриПолученииДанныхНаСервереПосле(ИмяЭлемента, Настройки, Строки)
	Запрос = Новый Запрос;
	Запрос.Текст = "Выбрать Ссылка КАК Ссылка Поместить Документы ИЗ Документ.РеализацияТоваровУслуг как Документы Где Ссылка В (&Документы);
	|Выбрать 
	|Документы.Ссылка,
	|Сумма(Услуги.СуммаНДС)+Сумма(Товары.СуммаНДС) Как СуммаНДС
	|Из 
	|Документы Как Документы
	|Левое Соединение Документ.РеализацияТоваровУслуг.Товары Как Товары
	|По Документы.Ссылка=Товары.Ссылка
	|Левое Соединение Документ.РеализацияТоваровУслуг.Услуги Как Услуги
	|По Документы.Ссылка=Услуги.Ссылка
	|Сгруппировать по Документы.Ссылка
	|";
	Запрос.УстановитьПараметр("Документы",Строки.ПолучитьКлючи());
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		СтрокаСписка = Строки[Выборка.Ссылка];
		СтрокаСписка.Данные["рсСуммаНДС"] = Выборка.СуммаНДС;
		СтрокаСписка.Оформление["рсСуммаНДС"].УстановитьЗначениеПараметра("Формат","ЧЦ=15; ЧДЦ=2; ЧН=-");
	КонецЦикла;
КонецПроцедуры
Показать


Получаю ошибку, которая не лечится доработкой формы в ПриСоздании на сервере(), т.к. это событие вызывается позже получения данных списком.

Поле объекта не обнаружено (рсСуммаНДС)
{Расширение Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(71)}:СтрокаСписка.Данные["рсСуммаНДС"] = Выборка.СуммаНДС;
{ОбщийМодуль.ОбщегоНазначенияБПКлиент.Модуль(859)}:ОткрытьФорму(ПараметрыОткрытия.ИмяФормы,
{ОбщаяФорма.ДлительнаяОперацияОткрытиеСписка.Форма(40)}:ОбщегоНазначенияБПКлиент.ОткрытьОсновнуюФорму(Истина, ПараметрыОткрытияКлиент, Параметры.ПараметрыОткрываемойФормы);


Как добавить вычисляемое поле в список в расширении?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Altez50 1 11.10.23 12:56 Сейчас в теме
Без использования расширения механизм работает:
Прикрепленные файлы:
3. Good_Smile 11.10.23 13:01 Сейчас в теме
мне кажется, нужно проверять, что такое поле есть в СтрокаСписка.Данные перед тем как к нему обращаться
4. Altez50 1 11.10.23 13:18 Сейчас в теме
(3) Проблема как раз, что его нет при доработке БП3, проверил на ДемоБСП-там есть. Глюк?

Сменить пришлось в обработчик "После" расширении на "Перед"

&НаСервереБезКонтекста
Процедура Расш2_СписокПриПолученииДанныхНаСервереПеред(ИмяЭлемента, Настройки, Строки)
	гс=новый ГенераторСлучайныхЧисел;
	Ключи = Строки.ПолучитьКлючи();
	Для Каждого Ключ Из Ключи Цикл
		СтрокаСписка = Строки[Ключ];
        СтрокаСписка.Данные["рсСуммаНДС"] = гс.СлучайноеЧисло(1, 9);
        СтрокаСписка.Оформление["рсСуммаНДС"].УстановитьЗначениеПараметра("Формат","ЧЦ=11; ЧДЦ=2; ЧН=-");
    КонецЦикла;
КонецПроцедуры
Показать
Прикрепленные файлы:
5. Altez50 1 11.10.23 13:54 Сейчас в теме
Выяснилось, что мешают другие расширения, где заимствована эта форма.
А через программное изменение в ПриСозданииНаСервере() добраться до текста запроса получается уже после вызова ПриПолученииДанных().
Придется переносить правки в одно расширение, видимо.
Прикрепленные файлы:
Оставьте свое сообщение

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