Имя: Пароль:
1C
 
Флажки в табличном поле (установленные)
0 extrim-style
 
23.02.11
11:04
8.1 Имеется табличное поле и колонка с флажками, которые должны быть установлены по умолчанию с возможностью изменения. Колонка не связана с данными (хранить значения флажков не требуется), необходима только для выбора строк и их обработки. Колонка с пустым элементом управления, режим редактирования - непосредственно. Код:
[code]Процедура ТабПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки["Колонка3"].ОтображатьТекст  = Ложь;
   ОформлениеСтроки.Ячейки["Колонка3"].ОтображатьФлажок = Истина;
КонецПроцедуры[/code]

- так всё работает, но флажки сняты. Добавляю:

[code]ОформлениеСтроки.Ячейки["Колонка3"].Флажок = Истина;
[/code]

- флажки устанавливаются, но перестают редактироваться. Программно изменять флажки через ТабПолеПриИзмененииФлажка не получается, не могу к ним обратиться (и соответственно не знаю как обработать). Подскажите, как тут поступить.
1 Рэйв
 
23.02.11
11:11
ОформлениеСтроки.Ячейки["Колонка3"].Значение=Истина;
2 extrim-style
 
23.02.11
11:54
(1) Так не получается. Флажки сняты.
3 Rie
 
23.02.11
11:56
(0) Хранить не хочется - а придётся. Пусть не в табличной части, а где-то ещё.
4 extrim-style
 
23.02.11
11:57
Ну а я не могу хранить в форме? Как элементы формы?
5 Rie
 
23.02.11
12:01
(4) Что табличное поле отображает?
6 extrim-style
 
23.02.11
12:05
Табличное поле отображает некоторый список шаблонов (2 поля - наименование(строка) и список(список значений))
7 extrim-style
 
23.02.11
12:09
(5) наверное имелось ввиду содержание табличного поля - это таблица значений.
8 Rie
 
23.02.11
12:19
(7) Ну так а кто мешает добавить в эту таблицу значений колонку типа Булево?! Сразу ведь проблема напрочь исчезнет.
9 extrim-style
 
23.02.11
12:36
(8) А данные мне какие использовать? Данные или ДанныеФлажка? Запутался напрочь.
10 extrim-style
 
23.02.11
12:52
Почему после установки значения поле перестаёт редактироваться?
11 kosts
 
23.02.11
13:01
ТабличноеПоле2.Колонки.Добавить("Пометка", Новый ОписаниеТипов("Булево"));
Колонка = ЭлементыФормы.ТабличноеПоле2.Колонки.Вставить(0, "Пометка");
Колонка.Имя = "Пометка";
Колонка.Данные="";
Колонка.ДанныеФлажка = "Пометка";
Колонка.РежимРедактирования =  РежимРедактированияКолонки.Непосредственно;
12 Рэйв
 
23.02.11
13:12
(10)Я в (1) думал ты понормальному добавил:)
реквизит формы сделай данными.Храниться не будет, а (1) нормально отработает
13 extrim-style
 
23.02.11
13:16
(12) "реквизит формы сделай данными" - я это не понял.
14 extrim-style
 
23.02.11
13:22
(11) Это можно установить и интерактивно, только тип нельзя будет описать, т.к. данные пустые.
Вставил ваш код в ПриОткрытии() - пустая колонка добавляется с возможностью редактирования. Но мне нужно сразу галочки проставить - ставлю галочку - не могу редактировать:
[code]ОформлениеСтроки.Ячейки["Колонка3"].Флажок = Истина;
[/code]
15 extrim-style
 
23.02.11
13:24
Флажки ставлю при выводе строки
16 Рэйв
 
23.02.11
14:01
Попробуй
ОформлениеСтроки.Ячейки["Колонка3"].Флажок = 1
17 Рэйв
 
23.02.11
14:02
А вообще ты как то не там ставишь флаг...Потом еще уживдяешься что не редактируется. Правильно при выводе он всегда устанавливается. а вывод при любом изменении
18 Рэйв
 
23.02.11
14:03
он не "не редактируется", он просто все время включается
19 extrim-style
 
23.02.11
14:36
(16) Если я поставлю =1, то это будет означать только то, что флажок имеет 3 состояния. В любом случае попробовал - безрезультатно.
(17) (18) - Да, действительно дело в этом - спасибо!

Теперь целая история это обработать.
Может лучше через хранение сделать, как говорили выше? Я согласен хранить в таблице значений дополнительную колонку типа Булево, но не совсем понимаю, как мне всё это связать?
20 Rie
 
23.02.11
15:23
(19) В колонке табличного поля с флажком - укажи ДанныеФлажка.
21 extrim-style
 
24.02.11
14:25
Сделал через хранение, может кому пригодится:
Завел в ТЧ колонку Использование, в свойствах колонки Данные - пустые, ДанныеФлажка - пустые, от изменения РежимаРедактирования разницы не заметил - всё и так работает.
[code]
Процедура ПриОткрытии()
Для каждого Элемент из ТабПоле цикл
    Элемент.Использование = Истина;
КонецЦикла;
...
КонецПроцедуры

Процедура ТабПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки["Использование"].ОтображатьТекст  = Ложь;
ОформлениеСтроки.Ячейки["Использование"].ОтображатьФлажок = Истина;
ОформлениеСтроки.Ячейки["Использование"].Флажок=ДанныеСтроки.Использование;
КонецПроцедуры

Процедура ТабПолеПриИзмененииФлажка(Элемент, Колонка)
Элемент.ТекущаяСтрока.Использование = НЕ Элемент.ТекущаяСтрока.Использование;
КонецПроцедуры
[/code]
22 kosts
 
24.02.11
14:38

Процедура ПриОткрытии()
ТаблицаЦен.ЗаполнитьЗначения(Истина, "Использование");
...
КонецПроцедуры


Колонка с флажком добавляется на форму и больше ничего в модуле не нужно делать, все должно работать.

ТабПолеПриВыводеСтроки() К тому же при отсутствии строк будет вылетать с ошибкой (лучше использовать ПриПолученииДанных() ну или делать проверку)

ТабПолеПриИзмененииФлажка() - К тому же, что будет если кто нибудь добавит еще один флажок...
23 extrim-style
 
24.02.11
15:19
(22) ЗаполнитьЗначения - да, действительно, спасибо.

"Колонка с флажком добавляется на форму и больше ничего в модуле не нужно делать, все должно работать." - если бы...

ПриВыводеСтроки() - нет проблем с пустыми строками..
ПриПолученииДанных()  - при изменении флажка, допустим, можно обработать здесь, но после обработки ТЧ обновляется и проходит по всем строкам через ПриВыводеСтроки(), соответственно обнуляя Использование, если в ПриВыводеСтроки() пусто.

ПриИзмененииФлажка() - всмысле кто-то добавит новую запись? Всё нормально - добавляется пустой флажок по умолчанию.
24 kosts
 
24.02.11
15:28
(23)
>> ПриИзмененииФлажка() - всмысле кто-то добавит новую запись? Всё нормально - добавляется пустой флажок по умолчанию.

В смысле другой разработчик добавит еще одну колонку с флажком.

Рекомендую так

Процедура ТабПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
...
КонецПроцедуры


>>ПриПолученииДанных()  - при изменении флажка, допустим, можно обработать здесь, но после обработки ТЧ обновляется и проходит по всем строкам через ПриВыводеСтроки(), соответственно обнуляя Использование, если в ПриВыводеСтроки() пусто.

Если честно - ничего не понял.

>>"Колонка с флажком добавляется на форму и больше ничего в модуле не нужно делать, все должно работать." - если бы...

Если тип Табличного поля = ТаблицаЗначений, то это действительно так, ничего больше не нужно.
Делаю так
- добавляю колонку
- стираю "Данные"
- Вписываю "ДанныеФлажка"
- Ставлю режим редактирования "Непосредственно"
- Профит
25 extrim-style
 
25.02.11
09:01
(23) Да, действительно, тема высосана из пальца - сам накосячил... Достаточно Данных флажка и Непосредственно. kosts, спасибо.