![]() |
![]() |
![]() |
|
Вычисляемая колонка в ТЧ документа | ☑ | ||
---|---|---|---|---|
0
Seducer
14.10.09
✎
10:56
|
Вчера вечером решил немного побаловаться с 8.2, листая "Коротко о главном". И не пойму, как можно сделать такое. Сейчас у меня в 8.1 в документе, например, "Заказ покупателя" есть, к примеру, колонка "Свободный остаток". В процедуре ПриПолученииДанных() прописано заполнение этой колонки. А как это сделать в 8.2? В демке есть форма справочника товаров с остатками, но там динамический список и без табличных частей. А как в документе проделать такое же с табличной частью? Пробовал сделать динамический список, но тогда тип у ТЧ получается таблица значений. И после этого с размещением реквизитов ерунда какая-то получилась (хотя до конца я их не смотрел :) )
|
|||
1
ТелепатБот
гуру
14.10.09
✎
10:56
|
||||
2
Seducer
14.10.09
✎
13:08
|
никто не пробовал такое сотворить? :(
|
|||
3
mikecool
14.10.09
✎
13:10
|
имхо, источник данных - запрос, и выбирай что нужно + назначай колонкам данные
|
|||
4
MORRoz
14.10.09
✎
13:39
|
Если есть динамические списки - то необходимость извращаться через "При получении данных" вроде как отваливается.
Вот только я не понял как мне отобрать данные по получаемому полю.. |
|||
5
Seducer
14.10.09
✎
14:02
|
Может кто-нибудь поподробнее описать весь процесс? А то какая-то фигня получается.
|
|||
6
Mort
14.10.09
✎
14:09
|
Заходишь в свойства списка, ставишь галку произвольный запрос, в запросе добавляешь нужные поля. По этим полям можно и отбор и оформление, чо хошь.
|
|||
7
Seducer
14.10.09
✎
15:33
|
(6) Хм.....че-то не получается. Напоминаю, что это документ с табличной частью.
Создаю форму документа. Справа вверху (на вкладке "Реквизиты") написано "Объект", тип "(ДокументОбъект.Документ1)". На форме все отображается так как надо. Дальше. В свойствах реквизита "Объект" устанавливаю тип "ДинамическийСписок". На форме, естественно, все слетает. Дальше что? |
|||
8
Dimma
15.10.09
✎
10:23
|
(6) Прикольно. Не знал. Спасибо. Всё работает.
PS как же не хватает документации и времени её прочитать :) |
|||
9
Seducer
15.10.09
✎
11:05
|
Кто-нибудь может пример скинуть? Не выходит каменный цветок. :(
|
|||
10
Dimma
15.10.09
✎
13:54
|
(9)
В конфигураторе открываешь свою управляемую форму, "Заходишь в свойства списка, ставишь галку произвольный запрос, в запросе добавляешь нужные поля. По этим полям можно и отбор и оформление, чо хошь." Уж куда подробнее? |
|||
11
Seducer
15.10.09
✎
15:01
|
(10) Ну кинь пример на почту.
|
|||
12
MORRoz
15.10.09
✎
15:12
|
(10) у него там Документ.ТабличнаяЧасть, а не список
|
|||
13
Seducer
15.10.09
✎
15:27
|
+(11) Открыл. Во-первых, что за "свойства списка". Если подразумевается изменение типа реквизита "Объект" с "(ДокументОбъект.......)" на "Динамический список", то да, согласен, там можно поставить "Произвольный запрос". Создал запрос. Это я и делал изначально. Во-вторых, как теперь это на форме разместить, чтобы получилось как в обычном случае (когда тип у "Объект" стоит "(ДокументОбъект.......)" + своя колонка в таблице. Вот тут никак у меня не выходит.
З.Ы. Могу наваять и выложить пример конфигурации. |
|||
14
Seducer
15.10.09
✎
15:46
|
И кстати, еще один вопрос у меня возник. Динамический список - это конечно, хорошо. Но вот возьмем 8.1. Там я могу программно добавить колонку в табличное поле на форме и затем в ПриПолученииДанных() заполнить значение в колонке. А как в 8.2 такое проделать, не меняя саму форму на динамический список? Ведь в 8.1 я не вмешиваюсь в конфигурацию 1С (формы, элементы).
|
|||
15
Mort
15.10.09
✎
16:06
|
Для ТЧ - правой кнопкой на ТЧ в редакторе форм (в правом окне) - добавить колонку реквизита. Если это вычисляемая колонка, то в процедуре ПриЧтенииНаСервере обходишь строки и заполняешь её.
|
|||
16
Seducer
16.10.09
✎
09:31
|
Извиняюсь, проблемы с интернетом были.
(15) Не совсем то. Так я пробовал. Разница в том, что в 8.1 при прокрутке ТЧ срабатывает ПриПолученииДанных() и соответственно, если что-то изменилось, данные в вычисляемой колонке ТЧ тоже меняются (если кто-то уже что-то отгрузил, свободный остаток изменился и в колонке показывается новый свободный остаток). Здесь же, ПриЧтенииНаСервере вызывается только один раз, при первом чтении. |
|||
17
Mort
16.10.09
✎
09:50
|
(16) Ну и обновляй свои значения когда наступает момент когда они должны менятся. При получении данных, кстати, при прокрутке срабатывает только для появившихся строк и не обеспечивает актуальность всей информации.
|
|||
18
Mort
16.10.09
✎
09:53
|
*меняться
|
|||
19
Seducer
16.10.09
✎
12:14
|
(17) Согласен, что меняются данные только для появившихся строк. А через что менять данные? Что-то я не вижу, какое событие может сработать в таком случае.
З.Ы. Млин, и сегодня проблемы со связью. :( |
|||
20
Mort
16.10.09
✎
12:42
|
(19) Блин, ты на форме редактируешь ТЧ, у тебя на ней вычисляемая колонка с некоторыми данными. По наступлению определенных обстоятельств данные изменяются (т.е. проходишь все строки и прописываешь что надо) если обстоятельства эти наступают вследствие действий пользователя (например при изменении каких-нить данных в форме) при изменении и обновляешь, иначе через оповещения, или через обработчик ожидания..
|
|||
21
Seducer
16.10.09
✎
13:01
|
(20) Че злишься? Меня и интересовало, каким образом узнать, что данные изменились. Не в текущей форме после изменения какого-либо поля, а вообще в целом. Т.е. работают два пользователя, у одного открыта форма, в ней данные по текущему свободному остатку. Второй пользователь оформляет, к примеру, реализацию. Свободный остаток меняется, правильно? Как первый пользователь о нем узнает. Кроме как использовать оповещения или обработчик ожидания, значит, способов нет? Лан, будем тогда использовать оповещение
|
|||
22
BabySG
16.10.09
✎
13:27
|
(21) Покрути такое
ОповеститьОбИзменении (NotifyChanged) Вариант синтаксиса: Изменён один объект Синтаксис: ОповеститьОбИзменении(<Ссылка>) Параметры: <Ссылка> (обязательный) Тип: СправочникСсылка.; ДокументСсылка.; ПеречислениеСсылка.; ПланСчетовСсылка.; ПланВидовРасчетаСсылка.; ПланВидовРасчетаСсылка.; БизнесПроцессСсылка.; ЗадачаСсылка.; РегистрСведенийКлючЗаписи.; РегистрНакопленияКлючЗаписи.; РегистрБухгалтерииКлючЗаписи.; РегистрРасчетаКлючЗаписи.; ПланОбменаСсылка.. Ссылка измененного объекта или ключ измененной записи регистра, об изменении которой(го) необходимо уведомить динамические списки, чтобы они обновились. Вариант синтаксиса: Изменено много объектов Синтаксис: ОповеститьОбИзменении(<ИзмененныйТип>) Параметры: <ИзмененныйТип> (обязательный) Тип: Тип. Тип изменившихся объектов, например "ДокументСсылка.РасходнаяНакладная". Описание: Уведомляет динамические списки на клиенте об изменении объекта или группы объектов базы. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Примечание: Уведомление не влияет на динамические списки, у которых не задана основная таблица. Динамические списки в тонком и веб-клиенте не обновляются при изменении данных в базе данных автоматически. Обновление динамического списка происходит при явном вызове метода, а также при выполнении стандартных команд записи данных форм. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |