Имя: Пароль:
1C
 
Вычисляемая колонка в ТЧ документа
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)
Вариант синтаксиса: Изменён один объект
Синтаксис:
ОповеститьОбИзменении(<Ссылка>)
Параметры:
<Ссылка> (обязательный)
Тип: СправочникСсылка.; ДокументСсылка.; ПеречислениеСсылка.; ПланСчетовСсылка.; ПланВидовРасчетаСсылка.; ПланВидовРасчетаСсылка.; БизнесПроцессСсылка.; ЗадачаСсылка.; РегистрСведенийКлючЗаписи.; РегистрНакопленияКлючЗаписи.; РегистрБухгалтерииКлючЗаписи.; РегистрРасчетаКлючЗаписи.; ПланОбменаСсылка.. Ссылка измененного объекта или ключ измененной записи регистра, об изменении которой(го) необходимо уведомить динамические списки, чтобы они обновились.
Вариант синтаксиса: Изменено много объектов
Синтаксис:
ОповеститьОбИзменении(<ИзмененныйТип>)
Параметры:
<ИзмененныйТип> (обязательный)
Тип: Тип. Тип изменившихся объектов, например "ДокументСсылка.РасходнаяНакладная".
Описание:
Уведомляет динамические списки на клиенте об изменении объекта или группы объектов базы.

Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
Уведомление не влияет на динамические списки, у которых не задана основная таблица.
Динамические списки в тонком и веб-клиенте не обновляются при изменении данных в базе данных автоматически. Обновление динамического списка происходит при явном вызове метода, а также при выполнении стандартных команд записи данных форм.
AdBlock убивает бесплатный контент. 1Сергей