Имя: Пароль:
1C
1C 7.7
v7: Как узнать идентификатор колонки по номеру в журнале документов?
,
0 BalBess
 
08.05.19
07:48
Всем здрасте! Подскажите пож-та, что-то подзабыл..
Мне нужно для функции Активизировать(<ИмяРеквизита>,<Режим>) знать идентификатор первой колонки в журнале документов
Как это узнать?
1 Ёпрст
 
08.05.19
08:54
Открыть пофигуратор и посмотреть
2 trad
 
08.05.19
09:28
(1) а если полиморфизму охота?
3 BalBess
 
08.05.19
09:57
(1) мне надо для любого журнала, т.е. программно узнать
4 HawkEye
 
08.05.19
10:14
(3) зачем?
5 Ёпрст
 
08.05.19
10:14
(3)
Тогда только через РасширениеФормы получать атрибуты табличнойЧасти.
6 Ёпрст
 
08.05.19
10:16
Ибо, идентификатора колонки могёт и не быть, если это текстовая колонка.
А через метаданные ты все колонки не получишь
7 Ёпрст
 
08.05.19
10:16
Можно конечно, штатно получить через Tab ..но это для гурманов.
8 BalBess
 
08.05.19
10:19
(5) не подскажите как, или какой функцией?
9 BalBess
 
08.05.19
10:25
(4) делаю поиск документов по определенным условиям (вместо штатного поиска по номеру)
и после того как нашел
Конт.АктивизироватьОбъект(НайденныйДокумент);
Конт.Активизировать(Конт.Форма.ТекущаяКолонка(), 0);

Если до вызова формы колонка была сфокусированна (выделена) , то метод Активизировать(Конт.Форма.ТекущаяКолонка(), 0) - срабытывает, т.е. позиционируется на документе и фокус остается в этой колонке
и по нажатию интер, открывается этот документ
А если колонка НЕ была выделена , то не срабатывает, и по нажатию интер - снова открывается форма поиска
т.к. фокус был на кнопке
10 HawkEye
 
08.05.19
10:27
(9) зачем именно первая? через метаданные получить весь список колонок и активизировать ту, в которой Тип = Документ...
11 BalBess
 
08.05.19
10:30
надеюсь понятно описал ситуацию
и я хочу
    ТекКолонка = Конт.Форма.ТекущаяКолонка();
    Если ПустоеЗначение(ТекКолонка) = 1 Тогда
//        ТекКолонка = Конт.ПолучитьПараметрыКолонки(1);
// тут надо получить идентификатор колонки
    КонецЕсли;


может есть другие пути решения
12 BalBess
 
08.05.19
10:33
(10) "через метаданные получить весь список колонок " - как это сделать?
речь про журналы
13 Ёпрст
 
08.05.19
10:36
будь проще, активизируй датаДок
14 HawkEye
 
08.05.19
10:45
(11) пффф
Конт.Активизировать("ДатаДок", 0);
15 HawkEye
 
08.05.19
10:45
(13) не обновил ))
16 HawkEye
 
08.05.19
10:51
(12) Графы журналы документов
Графы по умолчанию
Есть графы по умолчанию, которые присутствуют в любом журнале документов, в котором есть документы. Это:
ДатаДок
ВремяДок
НомерДок
ВидДок
Так же к графам по умолчанию относятся все общие реквизиты документов. Отличить графу реквизит табличной части, от графы реквизит шапки можно по наличию спецефического для табличной части атрибута ИтогПоКолонке.
Количество
Метаданные.Журнал(i).Графа()
Назначение:
Возвращает количество граф журнала, 0 если их нет
Графа()
Метаданные.Журнал(i).Графа(j)
Назначение:
Возвращает j-тую графу i-того журнала
Выбран()
Метаданные.Журнал(i).Графа(j).Выбран()
Назначение:
Возвращает 1 если j-тая графа i-того журнала есть, 0 если нет
Примечание:
i может быть как номером графы отбора, так и именем.
Идентификатор
Метаданные.Журнал(i).Графа(j).Идентификатор
Назначение:
Возвращает идентификатор j-той графы i-того журнала.
Возвращаемое значение:
Строка.
Синоним
Метаданные.Журнал(i).Графа(j).Синоним
Назначение:
Возвращает синоним j-той графы i-того журнала.
Возвращаемое значение:
Строка.
Комментарий
Метаданные.Журнал(i).Графа(j).Комментарий
Назначение:
Возвращает комментарий j-той графы i-того журнала.
Возвращаемое значение:
Строка.
Формы списка журнала документов
17 BalBess
 
08.05.19
10:57
(13) так я делал, получается немного не кошерно )
поле дата не всегда первое, и получается фокус не в первую колонку
18 BalBess
 
08.05.19
11:01
Как вариант завести невидимую колонку во всех журналах (первой)
и ее активизировать
19 BalBess
 
08.05.19
11:07
В общем сделал так
    Конт.АктивизироватьОбъект(НайденныйДокумент);
    ТекКолонка = Конт.Форма.ТекущаяКолонка();
    Если ПустоеЗначение(ТекКолонка) = 1 Тогда
        ТекКолонка = "ДатаДок";
    КонецЕсли;
    Конт.Активизировать(ТекКолонка, 0);

такие ситуации возникают редко, когда не выделенна колонка, в этом случае будет выделяться колонка Дата
всем спасибо