Вход | Регистрация
 

Как в табличной части вывести информационную колонку?

Как в табличной части вывести информационную колонку?
Я
   lanc2233
 
05.01.21 - 21:54
УФ. В форме документа, в табличной части, для товара нужно выводить некоторую справочную информацию, которая берется из регистра сведений.
Тоесть добавить еще одну колонку. Какой самый правильный способ это организовать? Неохота для таких целей реквизит в табчасть документа добавлять.
   evorle145
 
1 - 05.01.21 - 22:42
мне кажется это невозможно в принципе
   lanc2233
 
2 - 05.01.21 - 22:48
(1) Можно сделать таблицу значений, заполнять при создании на сервере, и потом из нее записывать в документ в перед записью.
Но точно не охота так извращаться ради одной колонки ..
   evorle145
 
3 - 05.01.21 - 23:15
(2) что то ты не то говоришь.
А как в типовых сделано?
Например в ПТУ?
Добавляем реквизит в форму Объект.Товары.ПроцентОтклоненияОтЦеныЗаказа.
Заполняем этот реквизит когда наступает нужно событие.. и все.. или как?
   lanc2233
 
4 - 05.01.21 - 23:21
(3) Получается реквизит будет в базу данных добавляться. Типа денормализация, некрасиво ...
   evorle145
 
5 - 05.01.21 - 23:30
(4) Шутишь? я же написал "Добавляем реквизит в форму Объект.Товары.ПроцентОтклоненияОтЦеныЗаказа" . В форму, это значит открыть форму документа, найти там вкладку реквизиты, найти там Объект, у объекта найти табличную часть Объект.Товары и добавить туда, в эту табличную часть реквизит формы, который при нужном событии у будешь заполнять как тебе надо.. Речь про реквизит формы, а не про реквизит документа..
   evorle145
 
6 - 05.01.21 - 23:31
(5) ну и на форму его тоже выведешь (создашь элемент формы, путь к данным пропишешь по типу "Объект.Товары.ПроцентОтклоненияОтЦеныЗаказа"
   lanc2233
 
7 - 05.01.21 - 23:34
:-) Не обращал внимания раньше, что для объекта на форме можно свои реквизиты добавлять. Думал что только в корне формы можно. Спасибо)
   evorle145
 
8 - 05.01.21 - 23:36
(7) да не на чем... другое дело, на какое событие вешать алгоритм заполнения.. Тут либо в типовую конфу заглянуть надо, либо может сейчас кто-то из спецов быстрее подскажет)
   ДедМорроз
 
9 - 06.01.21 - 08:22
Заполнение при чтении и не забыть его же вызвать при записи,так как при записи все добавленные колонки чистятся.
   Fedor-1971
 
10 - 06.01.21 - 09:29
(9) Лучше в ПриСозданииНаСервере заполнять т.к. ПриЧтенииНаСервере не вызывается для новых документов, но, иногда, есть надобность, например, заполнить список выбора у поля ТЧ из РС
ПередЗаписьюНаСервере - сохраняешь данные из добавленной колонки (это если очень нужно)
ПослеЗаписиНаСервере - повторить заполнение твоих колонок, т.к. очистятся

и ОбработкаОповещения или ОбработкаВыбора - если нужно перезаполнить данную форму по внешнему событию, например, добавили новую запись в твой РС или изменили старую. Только учти, что между разными сеансами Оповещение не работает, т.е. поменял один пользователь, а другому нужно переоткрыть форму, что-бы увидеть изменения (как вариант решения - добавляешь кнопку ОбновитьКолонку, тогда без повторного открытия формы можно подтянуть нужную информацию)
   ДедМорроз
 
11 - 06.01.21 - 10:14
Если мы делаем в дополнительной колонке отображение быстро меняющейся информации,то придется ещё и обновление отображения вызывать.
Опять же,заполнять приходится данные для всех строк,а не только видимых.
Ну и,как бы,динамический список тоже изменения в другом сеансе не видит.
   ДенисЧ
 
12 - 06.01.21 - 10:15
(11) "динамический список тоже изменения в другом сеансе не видит"

Это как????? Он читает данные из БД. Если другой сеанс записал информацию, то ДС её увидит. Только ему надо сказать о том, что он должен туда посмотреть.
   fisher
 
13 - 06.01.21 - 10:42
(10) В типовых подобный код принято вызывать из ПриЧтенииНаСервере, а именно для новых объектов - из ПриСозданииНаСервере.
Как я понял, для каких-то экзотических случаев когда в уже открытой форме нажимают "Перечитать". Может и еще для каких-то...

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.