Имя: Пароль:
1C
 
8.2. Упр. форма. Как добавить вычисляемую колонку в ТЧ формы документа?
0 Phace
 
13.01.10
17:54
Могу без проблем добавить вычисляемую колонку в список справочника, но в табличную часть документа не могу :(
1 bvn13
 
13.01.10
17:56
и мы счастливы!
2 Phace
 
13.01.10
17:57
(1) к чему это?
3 Phace
 
13.01.10
18:05
...ну или ткните носом в типовые 8.2 где это реализовано, я в УТ и УСН не нашел :(
4 Phace
 
13.01.10
18:06
(3) УСН = УНФ
5 Phace
 
13.01.10
18:18
Вах! Получилось :) Вопрос снят.
6 kiruha
 
13.01.10
18:19
И как ?
7 Gr
 
13.01.10
18:59
(0) Так всем теперь расскажи :)
9 Phace
 
14.01.10
12:39
(6),(7) актуально еще, описывать нужно?
10 SilentMan
 
14.01.10
12:58
(6)(7) Те почитать об этом в документации религия не позволяет?
11 Phace
 
14.01.10
13:02
(10) ткни, где почитать?
12 Phace
 
14.01.10
13:03
(10) все что я нашел в документации это как добавить вычисляемую колонку в список справочника, но где в документации про колонку в ТЧ документа?
13 kiruha
 
14.01.10
13:54
(10)
Хороший ответ.
А главное универсальный - можно во всех ветках вставлять
14 SilentMan
 
14.01.10
14:57
(11) в руководстве разработчика - параграф 7.1.1 ближе к концу. Даже пример использования реквизита есть.
(13) ну если религия не позволяет кому-то читать документацию и юзать поиск :)
15 Phace
 
14.01.10
15:15
(14) смотрю руководство разработчика 8.2, параграф 7.1.1 "Разделы и подразделы основного окна приложения", соответсвенно ничего об вычисляемых колонках не увидел, или руководство у меня не то?
16 RomaH
 
naïve
14.01.10
15:18
(9) ну намекни хоть
17 Phace
 
14.01.10
15:20
(16) У меня реализация нестандартная, некий изврат в стиле 7.7, но вполне рабочая. Хотелось бы посмотреть пример "из учебника" так сказать (о котором пишет (14) и сравнить со своим.
18 kiruha
 
14.01.10
15:21
(14)
Где ?

>>

Глава 7. Командный интерфейс
7.1. Общее устройство командного интерфейса
7.1.1. Разделы и подразделы основного окна приложения
Все глобальные команды основного окна приложения объединяются в разделы. Переход между ними осуществляется при помощи
панели разделов. Состав этих разделов однозначно определяется составом подсистем верхнего уровня, для которых установлен
признак Использовать стандартные команды.
Команды текущего раздела отображаются в панели навигации и панели действий основного окна.
При отображении команд того или иного раздела в панели навигации возможно появление одного или нескольких «подразделов»,
каждый из которых – это совокупность команд, соответствующих подчиненной подсистеме (также с признаком Использовать
стандартные команды). Например, в разделе Торговый учет возможно появление подразделов Розничная торговля и Оптовая
торговля за счет существования соответствующих подчиненных подсистем.
19 RomaH
 
naïve
14.01.10
15:25
(17) подробнее
20 kiruha
 
14.01.10
15:25
А, 8.1.1 действительно есть
21 Phace
 
14.01.10
15:33
(20) нда, в 8.1.1. тот же изврат что и у меня :)
22 kiruha
 
14.01.10
15:43
Какой изврат ?
Добавляем колонку реквизита Реквизит1 ТЧ в окне реквизитов.
Добавляем поле реквизита с данными Реквизит1 в окне Элементы

В ПриЧтенииНаСервере заполняем
23 SilentMan
 
14.01.10
15:45
(15) (18) Надо использовать актуальную версию документации. декабрьский ИТС:
7.1.1 Типы данных формы
24 Phace
 
14.01.10
15:47
(17) итак, кому еще интересна реализация вычисляемой колонки в ТЧ документа:

Открываем форму документа, в правой части формы, раскрываем нужную ТЧ документа и добавляем реквизит типа "строка". Затем в левой части формы документа добавляем поле и связываем его с только что созданным реквизитом. После чего ан форме появляется нужная нам колонка. Теперь осталось заполнить ее данными, но в управляемых формах в списках теперь нет события "ПриВыводеСтроки()" и "ПриПолученииДанных()", как заполнять? Во-первых необходимо написать обработчик события ПриЧтенииНаСервере():

Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   Для Каждого СтрЗапасы из Объект.Запасы Цикл
       Если ... Тогда
           СтрЗапасы.ТипТМЦ = "что-то";
       ...
           
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Но этого мало, нужно еще прописать обработчик списка "ПриИзменении():

Процедура ЗапасыПриИзменении(Элемент)
   Если ... Тогда
       Элементы.Запасы.ТекущиеДанные.ТипТМЦ = "что-то";
   ...
   КонецЕсли;
КонецПроцедуры

В моем случае этого достаточно, но если данные колонки получаем из других таблиц БД, то аналогичным образом нужно описать обработчик списка "ПриАктивизацииСтроки()".
25 Phace
 
14.01.10
15:49
(22) изврат в необходимости при открытии обходить все имеющиеся строки ТЧ документа и заполнять их данными.
26 kiruha
 
14.01.10
15:52
(25)
Можно получить нужные данные запросом в ТЗ
и в цикле брать их уже из ТЗ

И вызов только один ПриЧтенииНаСервере - очень все продумано
27 kiruha
 
14.01.10
15:55
И кстати - после изменения не возникает ПриЧтенииНаСервере  ?
28 Phace
 
14.01.10
15:56
(27) проверь
29 Phace
 
14.01.10
16:03
(26) это еще бОльший изврат.

Если ты не понимаешь разницу: в старом механизме (8.0/8.1) заполнение вычисляемой колонки происходило в обработчике "ПриВыводеСтроки()", теперь в 8.2 мне необходимо при открытии документа заполнять (причем программно) ВСЕ строки документа, а если документ, скажем инвентаризация, и содержит тысяч 10 строк?
30 kiruha
 
14.01.10
16:15
(29)
А список отображаемых строк нельзя получить ?
31 kiruha
 
15.01.10
04:18
Да и оказывается можно стандартно
добавлять вычисляемые поля типа "через ссылку"- Объект.Товары.Товар.Артикул
32 kiruha
 
15.01.10
04:26
А сложные выражения в типовой УНФ например загоняют в реквизит объекта -
например Содержание.
Правда не думаю что хранить в ТЧ строку длиной 100 это гууд