|
УФ список колонок ТЧ на клиенте | ☑ | ||
---|---|---|---|---|
0
ssugarov
19.01.15
✎
13:04
|
Как получить список колонок табличной части в управляемой форме без обращения на сервер?
|
|||
1
polosov
19.01.15
✎
13:05
|
ТаблицаФормы (FormTable)
ПодчиненныеЭлементы (ChildItems) Использование: Только чтение. Описание: Тип: ЭлементыФормы. Дочерние элементы таблицы: группы и поля. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. |
|||
2
ssugarov
19.01.15
✎
13:08
|
(1) Иии... я получаю список полей формы. Не пойдёт.
|
|||
3
polosov
19.01.15
✎
13:09
|
(2) А ты прям колонки ТЧ хотел?
|
|||
4
ssugarov
19.01.15
✎
13:10
|
(3) Угу
|
|||
5
hhhh
19.01.15
✎
13:11
|
(4) колонок ТЧ нет на клиенте. Просто нет. Нигде.
|
|||
6
ssugarov
19.01.15
✎
13:13
|
(5) Ок, поправка, наверное, я не совсем корректно написал - нужен список не колонок, а ИМЁН колонок
|
|||
7
ssugarov
19.01.15
✎
14:13
|
Ап
|
|||
8
Aceforg
19.01.15
✎
14:31
|
В (1) ответили же
|
|||
9
Адский плющ
19.01.15
✎
14:39
|
Если колонки не создаются динамически, то очень просто:
ИменаКолонок = "Номенклатура, Цена, Количество, Сумма"; Не обязательно вычислять то, что зашито в решение. |
|||
10
Адский плющ
19.01.15
✎
14:41
|
Ну и вопрос не совсем точный. Колонки ТЧ и коллекция полей таблицы отображающей ТЧ в УФ это две большие разницы.
|
|||
11
ssugarov
19.01.15
✎
14:53
|
(8) Нет, по свойству ПодчиненныеЭлементы можно получить имена элементов формы, а нужны имена колонок ТЧ
(9) Состав колонок будет изменяться, каждый раз переписывать при этом код не с руки, особенно в отсутствие автора (10) Хорошо, перефразирую до элементарного: можно ли получить список имён свойств, которые содержит свойство таблицы формы "ТекущиеДанные"? |
|||
12
Адский плющ
19.01.15
✎
15:06
|
(11) Нельзя. Затруднительно даже на сервере - ведь поля, для которых не включено обязательное использование попадают в коллекцию текущих данных только если есть ссылающиеся на них элементы формы.
А можно вопрос, нахрена? |
|||
13
Адский плющ
19.01.15
✎
15:12
|
Походу я с ДС путаю.
|
|||
14
ssugarov
19.01.15
✎
15:15
|
(12) Тех, которые выведены на форму, достаточно - в ТекущиеДанные они и выводятся
Нужно при начале редактирования строки сохранить её данные в структуру и перед окончанием редактирования при определенных обстоятельствах заполнить строку из этой структуры. Так вот - ключами структуры должны быть имена колонок. |
|||
15
ssugarov
19.01.15
✎
15:36
|
Только давайте без обходных путей - как и через какие отверстия удалить гланды я и сам могу понапридумывать, меня интересует именно топик. Рабочий вариант уже есть, но он работает через вызов сервера, что некрасиво.
|
|||
16
DrZombi
гуру
19.01.15
✎
15:37
|
(6) Почему так страшно это получить на сервере? :)
|
|||
17
DrZombi
гуру
19.01.15
✎
15:39
|
(11) >>> одержит свойство таблицы формы "ТекущиеДанные"
Зачем тебе ограничивать? Пиши сразу "ТвояТаблицаНаФорме.Выгрузить()" |
|||
18
DrZombi
гуру
19.01.15
✎
15:41
|
(15) >>>меня интересует именно топик
Нет любезный, тебя как раз интересуют Гланды через Ректальный канал :) |
|||
19
DrZombi
гуру
19.01.15
✎
15:42
|
(15) >>>> но он работает через вызов сервера, что некрасиво
Отсутствие Красоты то в чем? |
|||
20
ssugarov
19.01.15
✎
15:46
|
(16) Потому, что таблицей пользуются все сотрудники, в том числе через веб-клиенты
(17) Выгрузить() на клиенте не работает (18) Называй как хочешь, а лучше что-нибудь по теме скажи, людям через оффтоп листать неудобно |
|||
21
Адский плющ
19.01.15
✎
15:51
|
Какой-то велосипед. Пользователь по ESC может отменить редактирование и всё встанет обратно.
|
|||
22
Адский плющ
19.01.15
✎
15:53
|
Вообще редактирование ТЧ это геморойный и стрессовый момент для пользователя. Всякие проверки в момент редактирования только бесят. А кто "отказ" в "перед окончанием редактирования" придумал, тому надо вообще колено прострелить.
|
|||
23
ssugarov
19.01.15
✎
15:56
|
(21) Если редактировалась только одна ячейка, да. А если пользователь перешёл на другую ячейку этой же строки, событие не сработает, и данные останутся.
(22) Вот эту-то проблему я и решаю. |
|||
24
ssugarov
20.01.15
✎
12:45
|
Ап
|
|||
25
polosov
20.01.15
✎
13:14
|
(24) ТАк тебе все еще имена нужны?
|
|||
26
polosov
20.01.15
✎
13:22
|
+(25)
Для Каждого ПолеФ Из Элементы.Таблица1.ПодчиненныеЭлементы Цикл Сообщить(ПолеФ.Имя); КонецЦикла; Только Имя будет в формате ИмяТЧИмяРеквизитаТЧ |
|||
27
ssugarov
20.01.15
✎
13:44
|
(26) Рукалицо...
|
|||
28
polosov
20.01.15
✎
13:45
|
(27) Тыж хотел имя колонки. Что не так?
|
|||
29
ssugarov
20.01.15
✎
13:46
|
(28) Это имя элемента формы
|
|||
30
polosov
20.01.15
✎
13:49
|
(29) Так ты на сервер за данными собрался?
|
|||
31
polosov
20.01.15
✎
13:49
|
+(30) вроде же страдал что на сервере тебя побьют
|
|||
32
ssugarov
20.01.15
✎
14:00
|
(31) В том-то и фишка, что не собрался - перечитай ещё раз тему
|
|||
33
polosov
20.01.15
✎
14:02
|
(32) Ну вот тебе сохранение текущей строки не зная наименование полей.
СтруктураПолей = Новый Структура; Для Каждого ПолеФ Из Элементы.Таблица1.ПодчиненныеЭлементы Цикл СтруктураПолей.Вставить(Сред(ПолеФ.Имя,СтрДлина(Элементы.Таблица1.Имя)+1,СтрДлина(ПолеФ.Имя))); КонецЦикла; ЗаполнитьЗначенияСвойств(СтруктураПолей, Элементы.Отливки.ТекущиеДанные); |
|||
34
ssugarov
20.01.15
✎
14:06
|
(33) У элемента формы имя может быть совершенно произвольное, такой вариант не пойдёт
|
|||
35
polosov
20.01.15
✎
14:11
|
(34) Тебе то не все ли равно?
У тебя задача вернуть на место данные (или приписать свои) после выполнения некоторых условий. Текущие имена колонок на форме у тебя в структуре. Что тебе еще надо? |
|||
36
polosov
20.01.15
✎
14:13
|
+(35)Или ты таки опять на сервер собрался за реальными колонками?
|
|||
37
ssugarov
20.01.15
✎
14:15
|
(35) Мне надо, чтобы в этой структуре и в свойстве ТекущиеДанные ключи ВСЕГДА совпадали. Твой вариант этого не обеспечивает.
(36) Не собрался. Вот честно, не собрался. Точно. Можешь поверить. |
|||
38
polosov
20.01.15
✎
14:25
|
(37) Придумай вариант когда не будет совпадать. Я с ходу что-то не могу.
|
|||
39
ssugarov
20.01.15
✎
14:30
|
(38) Сходу - программеру понадобилось переименовать колонку ТЧ, а имя элемента формы переименовать забыл. Или наоборот.
|
|||
40
polosov
20.01.15
✎
14:31
|
(39) И что?
Ты же на сервер ходить не хочешь. Ты свои непотребства на клиенте делаешь. |
|||
41
ssugarov
20.01.15
✎
14:33
|
(40) И всё. Значит, эта колонка не заполнится.
|
|||
42
ssugarov
21.01.15
✎
14:05
|
Ап
|
|||
43
polosov
21.01.15
✎
15:23
|
(42) Похоже без вызова сервера никак.
|
|||
44
Адский плющ
21.01.15
✎
15:32
|
Храни список имен колонок в СЗ, заполняй в ПриСоздании, ну и там где они меняются если есть такое.
|
|||
45
ssugarov
28.01.15
✎
17:55
|
(44) Так и сделал, но всё же интересно - в свойстве "ТекущиеДанные" ключи же откуда-то берутся
|
|||
46
SUA
28.01.15
✎
18:27
|
(11)"Состав колонок будет изменяться" - значит в этом месте состав колонок известен, там и запомнили
а берутся они отсюда УправляемаяФорма (ManagedForm) ИзменитьРеквизиты (ChangeAttributes) ПолучитьРеквизиты (GetAttributes) на клиенте уже отрисованная форма которая в курсе своих полей но не знает ничего "в метаданных" о себе (хотя на клиенте тип(реквизитформы) могли бы и реализовать) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |