Имя: Пароль:
1C
1С v8
Внешняя обработка заполнения табличной части не заполняет
0 newbling
 
07.07.16
19:22
Доброго времени суток. 8.2 обычное приложение. Обработка спрашивает группу номенклатуры и должна добавлять номенклатуру из это группы в таб часть установки цен номенклатуры. Код отрабатывает, если спрашивать количество полученной номенклатуры, то говорит, модифицированность у объекта встаёт, а таб часть не меняется.

Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
    ФормаЗаполненияГруппы = ЭтотОбъект.ПолучитьФорму("Форма");
    Группа = ФормаЗаполненияГруппы.ОткрытьМодально(); // возвращает группу номенклатуры
    Если ЗначениеЗаполнено(Группа) Тогда
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    Номенклатура.Ссылка
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |ГДЕ
            |    Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
            |    И НЕ Номенклатура.ПометкаУдаления";
        
        Запрос.УстановитьПараметр("Группа", Группа);
        
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() Цикл
            СтрокаТабличнойЧасти = Объект.Товары.Добавить();
            СтрокаТабличнойЧасти.Номенклатура = РезультатЗапроса.Ссылка;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
1 newbling
 
07.07.16
19:26
да, и ещё странно, что не получается к таб части обратиться через Объект[ИмяТабличнойЧасти]
2 newbling
 
07.07.16
19:37
Табличная часть - "Товары"
имя табличной части на форме - "ТаблицаЦен"

я так понимаю, по этому не получается в неё загрузить.
3 hhhh
 
07.07.16
19:59
(2) так там таблица значений на форме у вас
4 newbling
 
07.07.16
20:01
да, там на форме таблица значений - "ТаблицаЦен"
Как к не обратиться из внешней обработки не пойму.
5 newbling
 
07.07.16
20:02
Она реквизит формы
6 newbling
 
07.07.16
20:03
Да, понятно почему не заполняется в общем-то. До меня дошло, что Товары и ТаблицаЦен не связаны. Тогда остаётся вопрос как из внешней обработки обратиться к реквизиту формы и заполнить его
7 newbling
 
07.07.16
20:11
В общем, решил проблему так - несколько топорно, но отрабатывает:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
    ФормаЗаполненияГруппы = ЭтотОбъект.ПолучитьФорму("Форма");
    Группа = ФормаЗаполненияГруппы.ОткрытьМодально();
    
    Если ЗначениеЗаполнено(Группа) Тогда
        ФормаТекОбъекта=Объект.ПолучитьФорму("ФормаДокумента");
        
        Если ФормаТекОбъекта.Открыта() Тогда
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |    Номенклатура.Ссылка
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |ГДЕ
            |    Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
            |    И НЕ Номенклатура.ПометкаУдаления
            |    И НЕ Номенклатура.ЭтоГруппа";
            Запрос.УстановитьПараметр("Группа", Группа);
            РезультатЗапроса = Запрос.Выполнить().Выбрать();            
            
            Пока РезультатЗапроса.Следующий() Цикл
                СтрокаТабличнойЧасти = ФормаТекОбъекта[ИмяТабличнойЧасти].Добавить();
                СтрокаТабличнойЧасти.Номенклатура = РезультатЗапроса.Ссылка;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры