|
Программный доступ к элементам формы списка (из общего модуля) | ☑ | ||
---|---|---|---|---|
0
poddex
14.05.15
✎
08:40
|
Добрый день, уважаемые специалисты и форумчане. Платформа 8.1, файловая база. Необходимо получить программный доступ к Табличному полю в форме списка Документа. Табличное поле никак не связано ни с какими реквизитами, нужно заполнять его на основе данных, отбираемых циклом из документов. Как заполнить, я сообразил, но неожиданно столкнулся с проблемой: не могу получить доступ к элементу формы Табличное Поле в форме списка документа. Что сделал:
1) На форме списка документа создал элемент формы "Таблица значений" и добавил в него руками колонки. 2) В общем модуле (стоит галка "Глобальный" написал следующий код (привожу кусок кода с проблемой) пПереборДокументов=Документы.докДело.Выбрать(); пЛентаНапоминаний=Документы.докДело.ПолучитьФормуСписка().ЭлементыФормы.ЛентаНапоминаний; Пока пПереборДокументов.Следующий() Цикл..... Проблема в том, что я не могу загрузить в переменную пЛентаНапоминаний Элемент формы списка ЛентаНапоминаний - выскакивает ошибка "Поле объекта недоступно для чтения". Обращаюсь к объекту вроде верно, в причине ошибки пока сам не могу разобраться. Заранее спасибо за помощь. |
|||
1
Fish
14.05.15
✎
08:44
|
(0) А зачем заполнять ТП из общего модуля? Чем модуль формы не угодил?
|
|||
2
poddex
14.05.15
✎
12:01
|
Замысел таков: приделать код, который срабатывал бы раз в определенное время и заполнял бы таблицу определенными значениями вне зависимости от того, открыта форма или нет (то есть событие формы ПриОткрытии() отпадает).
|
|||
3
Fish
14.05.15
✎
12:03
|
(2) А какой смысл заполнять ТП, да ещё и не связанное ни с какими реквизитами в неоткрытой форме? Как ты себе это представляешь?
|
|||
4
poddex
14.05.15
✎
12:17
|
Представляю так: при открытии конфигурации код опрашивает документы и, связываясь с таблицей на форме списка, путем доступа к ее колонкам (колонки же я в таблицу завел), производит заполнение таблицы кое-какими значениями. Форму, получается, надо обязательно открыть? Что-то я не понял из мануала. Судя по тому, что напрямую достучаться не получается - или обращение неверное, или неверно представляю.
|
|||
5
tznimble
14.05.15
✎
12:34
|
(4) Во-первых, добавив ТабличноеПоле и создав колонки Вы уже создали Реквизит Формы (ТаблицуЗначений). И именно его/её Вам надо заполнять.
НО! ЗАЧЕМ заполнять реквизит закрытой формы? Ссылку на форму Вы не сохраняете, то есть открыть её в заполненном состоянии не сможете. |
|||
6
StanleyMarsh
14.05.15
✎
12:37
|
(4) ну ты даешь))
нафига заполнять через форму?) Заполняй обычным способом - получи объект, заполни табличную часть. Форма - это всего лишь интерфейсное отображение реквизитов объекта. |
|||
7
poddex
14.05.15
✎
12:38
|
(5) (6) Сейчас попробую.
|
|||
8
poddex
14.05.15
✎
12:43
|
(6) Дело в том, что Табличное Поле, которое я создал в Форме Списка Документа, я хочу сделать так, чтобы оно не было привязано конкретно к какому-то документу, а просто заполнялось данными из всех документов согласно условию. То есть код просматривает документы и заполняет таблицу данными, взятыми из этих документов. Если я буду получать каждый раз объект, то каждый раз у меня будет очередной документ. Именно поэтому я перебираю все документы, а так как Табличное Поле не привязано к какому-то документу конкретно, то я и обращаюсь к Форме Списка - форма-то одна, значит, и Табличное Поле будет одно. (5) я что-то недопёр, то есть, данные, внесенные в табличное поле таким образом, не сохранятся?
|
|||
9
poddex
14.05.15
✎
12:47
|
(5) В этой форме собирается нужная информация вне зависимости от того, какие другие формы открыты. Когда открываю эту форму с Табличным полем - данные уже собраны там. То есть, чтобы к открытию формы сбор данных не был бы привязан. Замысел как раз такой.
|
|||
10
StanleyMarsh
14.05.15
✎
12:50
|
(8) мне кажется ты как то не понятно объясняешь
"не было привязано конкретно к какому-то документу, а просто заполнялось данными из всех документов согласно условию" это очень похоже на объект журнал документов |
|||
11
tznimble
14.05.15
✎
12:53
|
(9) Насколько Вы представляете себе механизмы ООП?
ФормаСписка - объект. Команда .ПолучитьФорму() - возвращает ссылку на объект Два-три-четыре последовательных вызова этой команды вернут ссылки НА РАЗНЫЕ объекты. В Вашем варианте, ссылку на полученный объект Вы не сохраняете. Более того, при выходе из Вашей процедуры эта ссылка будет освобождена, объект в памяти уничтожен вместе с заполненной таблицей. Именно поэтому заполнение необходимо делать в момент открытия формы. Либо иметь глобальную переменную, в которой Вы сохраните ссылку на заполняемую форму и открывать форму по этой ссылке. Учтите, стандартная команда интерфейса создает свой объект ФормаСписка с Вашим никак не связанный |
|||
12
FIXXXL
14.05.15
✎
14:07
|
Сделай служебный регистрСведений и заполняй его
ну и отображай его же на форме |
|||
13
poddex
14.05.15
✎
15:28
|
Всем спасибо. Пока что сделал все на форме ПриОткрытии формы. Насчет регистра - покопаю.
|
|||
14
poddex
15.05.15
✎
15:47
|
Реализовал по (12) , все получилось даже лучше, чем в моем первом варианте, но тут попутно назрел другой вопрос: ТабличноеПоле с типом данных РегистрСведений не содержит никаких данных, а только отображает список РегистраСведений, который я использовал в качестве Данных Табличного поля. Возникла необходимость обратиться к текущей строке ТабличногоПоля, и тут я и получил
ТекущаяСтрока = Неопределено. Смотрю в отладчике - данные из регистра в ТекущуюСтроку не падают, но ведь событие ПриВыводеСтроки в том же Табличном поле работает, то есть, как-то данные можно получить (там параметр ДанныеСтроки). Вопрос: есть ли возможность получить данные под курсором в табличном поле? Пока не могу понять, к чему обратиться, чтобы их вытащить. |
|||
15
tznimble
15.05.15
✎
15:55
|
(14) ТекущиеДанные Вам в помощь.
Кроме того, ТекущаяСтрока = Неопределено, если ни одна строка не выбрана. |
|||
16
poddex
15.05.15
✎
16:05
|
В том-то и дело, что курсор на нужной строке стоит. Получаю данные так:
пТекущаяСтрока=ЭлементыФормы.ЛентаНапоминаний.ТекущиеДанные; Сообщить(пТекущаяСтрока.НаименованиеДела) ТекущаяСтрока, ТекущиеДанные - в отладчике висит "Неопределено". Может, неверно делаю, что обращаюсь через элементы формы? |
|||
17
poddex
15.05.15
✎
16:19
|
Все, разобрался. Ошибка затесалась - хотел чего-то не от того Табличного поля))
|
|||
18
poddex
15.05.15
✎
16:20
|
Всем спасибо за содействие и советы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |