|
Запрос к табличной части документа | ☑ | ||
---|---|---|---|---|
0
ТАК12
27.04.12
✎
18:54
|
Новичок просит помощь зала:
Пытаюсь вывести на экран табличную часть Товары документа Поступление товаров и услуг. Документ ПиУ выбирает пользователь в Форме обработки. Одним из реквизитов Обработки является Табличная часть "ТЧТоварыИзПоступления". Есть Поле ввода на Форме "ДокументПоступленияНоменклатуры". Код такой: Функция ПолучитьНоменклатуруИзПоступления(Ссылка) Запрос = Новый Запрос; Запрос.Текст = //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ТЧТоварыИзПоступления.Добавить (); ТЧТоварыИзПоступления.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; ТЧТоварыИзПоступления.Количество = ВыборкаДетальныеЗаписи.Количество(); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецФункции // ПолучитьНоменклатуруИзПоступления() Процедура ДокументПоступленияНоменклатурыПриИзменении(Элемент) ПолучитьНоменклатуруИзПоступления(ДокументПоступленияНоменклатуры); КонецПроцедуры При пошаговой отработке значение ВыборкаДетальныеЗаписи и у Номенклатуры, и у Количество = Ошибка чтения значения. При этом Ссылка правильно считывается. Запрос, вроде, должен отработать... А когда дохожу до строчки: ТЧТоварыИзПоступления.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; так и вообще: "Поле объекта не обнаружено (Номенклатура)". Подскажите, пожалуйста, опытные коллеги, что я не так делаю? |
|||
1
Лоботряс
27.04.12
✎
18:59
|
НС =ТЧТоварыИзПоступления.Добавить ();
НС.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; НС.Количество = ВыборкаДетальныеЗаписи.Количество; |
|||
2
Лоботряс
27.04.12
✎
19:02
|
А лучше
ТЧТоварыИзПоступления = Запрос.Выполнить().Выгрузить(); |
|||
3
Лоботряс
27.04.12
✎
19:05
|
Вернее
ТЧТоварыИзПоступления.Загрузить(Запрос.Выполнить().Выгрузить()); |
|||
4
ТАК12
27.04.12
✎
20:04
|
Теперь код такой:
Функция ПолучитьНоменклатуруИзПоступления(Ссылка) Запрос = Новый Запрос; Запрос.Текст = //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); ТЧТоварыИзПоступления.Загрузить(Запрос.Выполнить().Выгрузить()); Возврат (ТЧТоварыИзПоступления); //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецФункции // ПолучитьНоменклатуруИзПоступления() Процедура ДокументПоступленияНоменклатурыПриИзменении(Элемент) ПолучитьНоменклатуруИзПоступления(ДокументПоступленияНоменклатуры); КонецПроцедуры Но на форме табличная часть пуста, даже и таблицей не выглядит. В Табличной части Формы обработки есть две колонки: Номенклатура (СправочникСсылка.Номенклатура) и Количество (Число). Как все-таки ее заполнить значениями из табличной части выбранного документа? |
|||
5
глазковыколупыватель
27.04.12
✎
20:54
|
(0) Свои названия подставь:
Процедура ДокПриИзменении(Элемент) ЗаполнитьТЧ() КонецПроцедуры Процедура ЗаполнитьТЧ() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровТовары.Номенклатура, | ПоступлениеТоваровТовары.Количество |ИЗ | Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары |ГДЕ | ПоступлениеТоваровТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Док); Результат = Запрос.Выполнить(); ТЧ = Результат.Выгрузить(); ЭлементыФормы.ТЧ.СоздатьКолонки(); КонецПроцедуры |
|||
6
ТАК12
27.04.12
✎
22:48
|
Результат такой:
{Обработка.Склад.Форма.Форма.Форма(64)}: Поле объекта недоступно для записи (ТЧТоварыИзПоступления) ТЧТоварыИзПоступления = Результат.Выгрузить(); Код: Процедура ДокументПоступленияНоменклатурыПриИзменении(Элемент) ПолучитьНоменклатуруИзПоступления(ДокументПоступленияНоменклатуры); КонецПроцедуры Процедура ПолучитьНоменклатуруИзПоступления(Ссылка) Запрос = Новый Запрос; Запрос.Текст = //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ТЧТоварыИзПоступления = Результат.Выгрузить(); ЭлементыФормы.ТЧТоварыИзПоступления.СоздатьКолонки(); КонецПроцедуры // ПолучитьНоменклатуруИзПоступления() |
|||
7
ic-kat
27.04.12
✎
23:00
|
(6)
Результат = Запрос.Выполнить(); ТЧ = Результат.Выгрузить(); ЭлементыФормы.ИмяТвоегоПоляВвода.Значение=ТЧ; ЭлементыФормы.ИмяТвоегоПоляВвода.СоздатьКолонки(); |
|||
8
ic-kat
27.04.12
✎
23:02
|
тьфу, не поле ввода, а табличное поле
|
|||
9
ТАК12
27.04.12
✎
23:19
|
Та же фигня:
{Обработка.ARM_Склад.Форма.Форма.Форма(64)}: Поле объекта недоступно для записи (ТЧТоварыИзПоступления) ТЧТоварыИзПоступления = Результат.Выгрузить(); |
|||
10
ТАК12
27.04.12
✎
23:25
|
Что должно быть указано в Свойствах ТЧ, в которую нужно Результат.Выгрузить()? Видимо, у меня с ней что-то не то... У меня есть ТЧ как Табличная часть Обработки. И Табличное поле на Форме обработки, в ее Свойствах: Данные = ТЧ (которая в Модуле)...
|
|||
11
hhhh
28.04.12
✎
00:52
|
тч какой тип имеет?
|
|||
12
ic-kat
28.04.12
✎
06:16
|
(10) ТЧ никак перед этим описывать не надо, это новая таблица значений.
так и напишите ТЧ а потом уже вашему табличному полю на форме присваивайте значение тч с вашими названиями вот так будет ТЧ = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.ТЧТоварыИзПоступления.Значение=ТЧ; ЭлементыФормы.ТЧТоварыИзПоступления.СоздатьКолонки(); |
|||
13
m-serg74
28.04.12
✎
06:18
|
ТЧТоварыИзПоступления = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЧТоварыИзПоступления.СоздатьКолонки(); |
|||
14
m-serg74
28.04.12
✎
06:30
|
ТАК... получилось или...?
|
|||
15
ТАК12
28.04.12
✎
07:28
|
Теперь ТЧ в Табличных формах Обработки нет, и нет Табличного поля ТЧ на Формы. Есть:
Процедура ДокументПоступленияНоменклатурыПриИзменении(Элемент) ПолучитьНоменклатуруИзПоступления(ДокументПоступленияНоменклатуры); КонецПроцедуры Процедура ПолучитьНоменклатуруИзПоступления(Ссылка) Запрос = Новый Запрос; Запрос.Текст = //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); ТЧТоварыИзПоступления = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.ТЧТоварыИзПоступления.СоздатьКолонки(); КонецПроцедуры // ПолучитьНоменклатуруИзПоступления() Результат: {Обработка.Склад.Форма.Форма.Форма(69)}: Поле объекта не обнаружено (ТЧТоварыИзПоступления) ЭлементыФормы.ТЧТоварыИзПоступления.СоздатьКолонки(); |
|||
16
ic-kat
28.04.12
✎
07:38
|
блин, добавьте табличное поле на форму, обзовите Товары и сделайте вот так:
ТЧ = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.Товары.Значение=ТЧ; ЭлементыФормы.Товары.СоздатьКолонки(); |
|||
17
ТАК12
28.04.12
✎
08:18
|
УРРРА!!! ЗАРАБОТАЛО!!! СПАСИБО!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |