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

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 Сейчас в теме
Выяснилось, что мешают другие расширения, где заимствована эта форма.
А через программное изменение в ПриСозданииНаСервере() добраться до текста запроса получается уже после вызова ПриПолученииДанных().
Придется переносить правки в одно расширение, видимо.
Прикрепленные файлы:
Оставьте свое сообщение

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