|
Заполнение таблицы при открытии | ☑ | ||
---|---|---|---|---|
0
Ste1Z
31.10.11
✎
18:40
|
Из формы документы открываю другую форму, созданную мной. Передаю в нее некоторые реквизиты. Тут все ок.
ФормаВвода = Документы.ЗаказПокупателя.ПолучитьФорму("ФормаВвода"); ФормаВвода.ЭлементыФормы.ЗаказПокупателя.Значение = ЭтотОбъект.Ссылка; ФормаВвода.Открыть(); Все открывается, поля заполнены как нужно. Также при открытии нужно заполнить таблицу запросом. Создаю процедуру ПриОткрытии(). Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ПланируемыеПоступленияДС.ДокументПланирования КАК ПланируемыеПоступления, |ПланируемыеПоступленияДС.СуммаВзаиморасчетовПриход КАК СуммаОплаты, |ПланируемыеПоступленияДС.Сделка КАК Сделка |ИЗ |РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.ОстаткиИОбороты КАК ПланируемыеПоступленияДС |ГДЕ |ПланируемыеПоступленияДС.Сделка = &ЗаказПокупателя"; ЗакПокупателя = ЭлементыФормы.ЗаказПокупателя.Значение; Запрос.УстановитьПараметр("ЗаказПокупателя", ЗакПокупателя); Результат = Запрос.Выполнить().Выбрать(); ЭлементыФормы.ВведенныеПоступления.Значение.Очистить(); Пока Результат.Следующий() > 0 Цикл ЭлементыФормы.ВведенныеПоступления.ДобавитьСтроку(); ЭлементыФормы.ВведенныеПоступления.ТекущаяСтрока.ПланируемыеПоступления = Результат.ПланируемыеПоступления; ЭлементыФормы.ВведенныеПоступления.ТекущаяСтрока.СуммаОплаты = Результат.СуммаОплаты; КонецЦикла; Выдает ошибку: {Документ.ЗаказПокупателя.Форма.ФормаВвода.Форма(21)}: Значение не является значением объектного типа (ПланируемыеПоступления) Если создаю кнопку и при ее нажатии выполняется данная процедура - все корректно отображается. Что делаю не так? ЭлементыФормы.ВведенныеПоступления.ТекущаяСтрока.ПланируемыеПоступления = Результат.ПланируемыеПоступления; |
|||
1
Kashemir
31.10.11
✎
18:46
|
НоваяСтрока = ЭлементыФормы.ВведенныеПоступления.ДобавитьСтроку();
НоваяСтрока.ПланируемыеПоступления = Результат.ПланируемыеПоступления; НоваяСтрока.СуммаОплаты = Результат.СуммаОплаты; |
|||
2
Kashemir
31.10.11
✎
18:48
|
+(1) Хотя и это не сработает, ибо добавлять строку надо не элементу формы, а его источнику.
|
|||
3
Reset
31.10.11
✎
18:50
|
(0) (1) Чтож вы так упорно ползете на кла... докопались до элементов формы? С данными нужно работать, а не с представлением их.
"ФормаВвода.ЭлементыФормы.ЗаказПокупателя.Значение = ЭтотОбъект.Ссылка;" Заменить на "ФормаВвода.ЗаказПокупателя=ЭтотОбъект.Ссылка;" Если на форме заведен ЗаказПокупателя без данных (реквизита напр) - казнить. "ЭлементыФормы.ВведенныеПоступления.ДобавитьСтроку(); ЭлементыФормы.ВведенныеПоступления.ТекущаяСтрока.ПланируемыеПоступления = Результат.ПланируемыеПоступления; ЭлементыФормы.ВведенныеПоступления.ТекущаяСтрока.СуммаОплаты = Результат.СуммаОплаты;" Заменить на НоваяСтрока=ВведенныеПоступления.ДобавитьСтроку(); НоваяСтрока.ПланируемыеПоступления = Результат.ПланируемыеПоступления; НоваяСтрока.СуммаОплаты = Результат.СуммаОплаты; |
|||
4
Reset
31.10.11
✎
18:52
|
(3) Не факт что поможет, ибо "другую форму, созданную мной" - там может быть что угодно.
|
|||
5
Reset
31.10.11
✎
18:54
|
"Результат.Следующий() > 0"
Песня. Не, я домой. |
|||
6
Ste1Z
31.10.11
✎
19:00
|
Я только учусь еше, первая работа с формами такая серьезная. Реквизит вроде как сам создается. С реквизитами работал, с ними проблемы были, например как тут.
НоваяСтрока=ВведенныеПоступления.ДобавитьСтроку(); Нет такого метода у ТаблицыЗначений. Поэтому и делал через элементы формы. Выводится только для информации пользователю, все равно нигде не используется. {Документ.ЗаказПокупателя.Форма.ФормаВвода.Форма(20)}: Метод объекта не обнаружен (ДобавитьСтроку) НоваяСтрока=ВведенныеПоступления.ДобавитьСтроку(); |
|||
7
Ste1Z
31.10.11
✎
19:01
|
Результат.Следующий() > 0
брал вообще в интернете в примерах, почти не глядя |
|||
8
Kashemir
31.10.11
✎
19:03
|
(6) Значит элементом формы табличное поле "ВведенныеПоступления" ассоциирована с переменной / табличной части с отличным именем, которое известно тебе и неизвестно нам.
(7) Это не лучшая конструкция, поскольку требует лишнего неявного приведения типа числа к булеву. |
|||
9
Reset
31.10.11
✎
19:06
|
(6)
НоваяСтрока=ВведенныеПоступления.Добавить(); Я скопипастил ДобавитьСтроку() с твоего кода; что является неявным дополнительным признаком, что "брать в интернете не глядя" - неправильно ;) А правильно - открывать справку, и смотреть, какие методы Есть. |
|||
10
Ste1Z
31.10.11
✎
19:07
|
У таблицы в свойствах даннных указано: ВведенныеПоступления.
В реквизитах формы ВведенныеПоступления есть. (Тип ТаблицаЗначений). Создался автоматически. |
|||
11
Reset
31.10.11
✎
19:08
|
(10) С этой таблицей и работай
|
|||
12
Ste1Z
31.10.11
✎
19:08
|
Обычно там и смотрю. Тут просто искал как добавить результаты запроса в таблицу, скопировал заменил нужное.
|
|||
13
Reset
31.10.11
✎
19:08
|
Например ;)
ВведенныеПоступления=Запрос.Выполнить().Выгрузить(); |
|||
14
Ste1Z
31.10.11
✎
19:12
|
Делал так. Но это работалое сли выполнялось при изменении таблицы. Вот например другая моя обработка:
Процедура ПокупательПриИзменении(Элемент) ЭлементыФормы.ПланируемыеПоступленияТП.Значение.Очистить(); Результат = Новый ТаблицаЗначений; Запрос1 = Новый Запрос; Запрос1.Текст = "ВЫБРАТЬ |ЗаказыПокупателей.Сделка КАК ЗаказПокупателя, |ЗаказыПокупателей.СуммаВзаиморасчетовКонечныйОстаток КАК ДолгПокупателя, |ЗаказыПокупателей.Контрагент КАК Контрагент |ИЗ |РегистрНакопления.РасчетыСКонтрагентами.ОстаткиИОбороты КАК ЗаказыПокупателей |ГДЕ |ЗаказыПокупателей.Сделка ССЫЛКА Документ.ЗаказПокупателя |И ЗаказыПокупателей.Контрагент = &Покупатель "; Запрос1.УстановитьПараметр("Покупатель", Покупатель); Результат = Запрос1.Выполнить(); ТЗ = Результат.Выгрузить(); КонецПроцедуры |
|||
15
Reset
31.10.11
✎
19:12
|
заменить на
|
|||
16
Reset
31.10.11
✎
19:13
|
точнее , ",,,,Сделка = &ЗаказПокупателя"
|
|||
17
Ste1Z
31.10.11
✎
19:13
|
А вот при активизации строки данной таблицы нужно было сделать запрос и вывести в другую таблицу, ВЫгрузить() не работал.
|
|||
18
Ste1Z
31.10.11
✎
19:14
|
Reset а почему ГДЕ так не нравится?
|
|||
19
Kashemir
31.10.11
✎
19:16
|
(17) Сложно понять что ты имеешь ввиду, с учетом различных методов у объектов Запрос, РезультатЗапрос, ТаблицаЗначений, ТабличноеПоле, ТабличнаяЧасть.
|
|||
20
Reset
31.10.11
✎
19:17
|
(18) в десятки и сотни раз медленней.
Почему? яндексируй "виртуальные таблицы" |
|||
21
Kashemir
31.10.11
✎
19:17
|
(18) Если сделка является измерением - по скорости обычно выгоднее ограничение накладывать на уровне виртуальной таблицы.
|
|||
22
Ste1Z
31.10.11
✎
19:22
|
Да это уже не по теме сказал. Короче есть таблица с заказами покупателей. При активации строки в другом табличном поле формы должны отображать Планируемые поступления для данного заказа. Делаю запрос, присваиваю таблице значений, соответствующей этому табличному полю при помоши Запрос.Выполнить().Выгрузить() - не отображается. ОбновитьСтроки не помогает.
Поэтому пришлось циклом делать, добавлять строки. (20) (21) Спасибо, просто в интернете и книжках, например Габеце ГДЕ используется. Там же не написано, что это медленно |
|||
23
vmv
31.10.11
✎
20:56
|
(17) забудь про использование ПриАктивизацииСтроки() в расчетных целях.
В 8.1 - оно больше вреда приносило, чем пользы. мастер-детали можно строить и не так топорно и слава богу, что эти методы-паразиты ушли в прошлое почти |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |