1с дерево значений флаги

Флаги в дереве значений

Есть иерархическая структура некоторого справочника (дерево значений) с флажками. Назначение: отметить необходимые элементы.
1. Если ставим флажок у группы, то все подчиненные тоже устанавливаются в истину и наоборот, при снятии все устанавливаются в ложь.
2. Если у потомков группы есть разные флажки, то флажок становится затемненным.
3. Ну и там всякие вопросы, типа вы точно хотите установить все флажки в группе.

где нить в типовых или у кого нить есть функции, уже реализующие это, а то самому писать и отлаживать (изобретать велосипед) как то неохото =)

Обработка «Регламентированные отчеты», но там только два уровня. Если больше, то придеться доработать.

После небольшой работы напильником получилось вот это (может кому пригодицо):

Процедура ДеревоПриИзмененииФлажка(Элемент, Колонка)

Если ТекСтрока.Принадлежность = 2 Тогда

Процедура УстановитьПометкиПодчиненных(ТекСтрока, пРеквизит) Экспорт

Если Подчиненные.Количество() = 0 Тогда
Возврат;
КонецЕсли;

Для Каждого цСтрока из Подчиненные Цикл

// Устанавливает состояние пометки у родительских строк строки дерева значений
// в зависимости от пометки текущей строки
//
// Параметры:
// ТекСтрока — Строка дерева значений
//
Процедура УстановитьПометкиРодителей(ТекСтрока, пРеквизит) Экспорт

лРодитель = ТекСтрока.Родитель;
Если лРодитель = Неопределено Тогда
Возврат;
КонецЕсли;

НайденыВключенные = Ложь;
НайденыВыключенные = Ложь;

Для Каждого цСтрока из лРодитель.Строки Цикл

Если цСтрока[пРеквизит] = 0 Тогда

ИначеЕсли цСтрока[пРеквизит] = 1
ИЛИ цСтрока[пРеквизит] = 2 Тогда

Если НайденыВключенные
И НайденыВыключенные Тогда
Прервать;

Если НайденыВключенные
И НайденыВыключенные Тогда
Включить = 2;
ИначеЕсли НайденыВключенные
И (Не НайденыВыключенные) Тогда
Включить = 1;
ИначеЕсли (Не НайденыВключенные)
И НайденыВыключенные Тогда
Включить = 0;
ИначеЕсли (Не НайденыВключенные)
И (Не НайденыВыключенные) Тогда
Включить = 2;
КонецЕсли;

Если Включить = ТекСостояние Тогда
Возврат;
Иначе
лРодитель[пРеквизит] = Включить;
УстановитьПометкиРодителей(лРодитель, пРеквизит);
КонецЕсли;

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

(6) так я из типовой вытащил, так что я юзаю чужой трехколесный лисапед. Решил ничего не спрашивать при смене, а сделать кнопочку «отменить последнее действие с деревом» (юзабилити, хуле)

(7) надо спрашивать — что именно сделать
родитель — серый — т.е. подчиненные часть помечена — часть — нет

если я кликаю на серый флаг — что я хочу сделать? установить или снять флаги у всех подчиненнных

меня отсутсвие этого вопроса бесит в ролях — хочешь снять право удаления у всех доков, а оно устанавливается, да еще и чтение выставляет у всех

(8) значит в контекстном меню будут кнопки «установить флажок», «снять флажок». меня наоборот частенько бесит каждый раз в модальном окошке кликать на подтверждения

Источник

Как добавить флажки в дерево значений ?

Есть обработка «РегистрацияИзмененийДляОбмена», у нее в ТЧ есть колонка «Имя», она заполняется метаданными, а рядом картинка.
Как сделать чтобы тут же отображалось поле флажок как в обработке «ВыгрузкаЗагрузкаДанныхXML»

Спасибо за внимание. За советы и ответы премного благодарен.

(3) Не обязательно. Если речь о 8.1, то у ячейки табличного поля есть свойства «Флажок» и «Отображать флажок» (управление в ПриВыводеСтроки() и в ПриПолученииДанных()). Для дерева реализация флажка этим способом намного интереснее выглядит, т.к. флажок можно отрисовывать непосредственно перед значениями ветки дерева, а не в фиксированной колонке (наподобие дерева подсистем в конфигураторе). Как в 8.2 такое сделать — не знаю, не рыл.

Пишу:
ОформлениеСтроки.Ячейки.Имя.ОтображатьФлажок = Истина;
ОформлениеСтроки.Ячейки.Имя.ЗначениеФлажка = Истина;

Теперь выводит флажек, только нельзя менять значение. Как его менять ?
И еще рамки у флажка нет

(6) Еще раз читай (1,2)..
У своей колонки выставляешь
ДанныеФлажка=»МояПометка»
РежимРедактирования=»Непосредственно»

(6) Значение флажка, ессно, нужно где-то хранить (и при выводе менять оформление ячейки в соответствии с ним). А менять по событию ПриИзмененииФлажка. Почему у тебя без рамки, навскидку не соображу. У меня с рамкой. Хотя режим редактирования той колонки, где отображается иерархия с флажком, стоит «Вход».

чего то вообще не меняется флажек.

На форме элемент управл.(Реквизит формы «ДеревоОбмена»):

Имя: «ДеревоОбмена»
Данные: «ДеревоОбмена»
ТипЗнч: ДеревоЗначений

У него колонка:
Имя: «Имя»
Данные: «Имя»
ДанныеФлажка = «Выгружать»

Програмно заполняю :
СтрокаДерева = ДеревоОбмена.Строки.Добавить();
СтрокаДерева.Имя = ИмяОтображения;
СтрокаДерева.Данные = ИмяДанных;
СтрокаДерева.Выгружать = Истина;

Выводит дерево, с галками, но не редактируются..
Я как то не правильно прописываю данные на колонку ?

(10) Ты определись, наконец, как ты делаешь. Если стандартно — в отдельной колонке, тогда для этой колонки прописываешь только «ДанныеФлажка» («Выгружать»), а «Данные» очищаешь.

(11)Хочу чтобы в колонке «Имя» отображался флаг, с возможностью редактирования. Уж прощевайте несведущего. Хочется прозреть.

(15) А осознал? Если осознал, то вылилось ли это в какие-то твои действия? И если да, то каковы результаты?

короче не редактируются флажки
вот ссылка на картинку
http://www.pictureshack.ru/images/6750NoName.JPG
режим редактирования — непосредственно написал
что может быть еще

Дошло. Ты всё-таки хочешь вместе со значением, а не в отдельной колонке. Тогда первым делом, нужно разобраться почему рамка не появляется. Когда появится, тогда читай (9). Проверь на всяк пожарный «Доступность» и «ТолькоПросмотр» у табличного поля, колонки и самого поля. «ДанныеФлажка» очисть. Флажок ПриПолученииДанных() рисоваться будет.

Добился таки результата. Вчера уже потерял надежду. Сел на 5 мин., поперетыкал все галки — Заработало.
Однако 1Са-жгет.
Для тех кому необходимо реализовать данную возможность — все здесь описано как нильзя лучше.

Источник

Флаг в дереве значений

Добрый день, подскажите пожалуйста, какие настройки свойств колонки дерева значений нужно сделать, чтобы можно было непосредственно редактировать поле с типом «Булево».
Я поставил:
Имя: Выбрать
Данные:
ДанныеФлажка: Выбрать

ТолькоПросмотр: Ложь
Доступность: Истина

Колонка в дереве недоступна.
Что я не так делаю? Заранее благодарен.

«Воды нет! Полезных ископаемых нет! Населена роботами!» (с)
Т.е. флажок отображается, но редактируется только при входе?

(0) еще забыл
поставить галочки в формате на
«Представление логического значения ложь»
«Представление логического значения истина»

(сами значения оставить пустыми)

вот примерчик, когда флажок в отдельной колонке

Дерево.Колонки.Добавить(«Номенклатура», Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»));
Дерево.Колонки.Добавить(«Пометка», Новый ОписаниеТипов(«Булево»));
ЭлементыФормы.Дерево.СоздатьКолонки();
КолонкиДерева = ЭлементыФормы.Дерево.Колонки;
КолонкиДерева.Пометка.ДанныеФлажка = «Пометка»;
КолонкиДерева.Пометка.УстановитьЭлементУправления(Тип(«Флажок»));
КолонкиДерева.Пометка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;

Запрос = Новый Запрос;
Запрос.Текст ;
Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

// Дерево — ТП на форме без колонок

(15) кто не понял? я не понял. да, я не понял :))
короче, че те, трудно сделать новый отчет, кинуть на него ТП и вставить (14) в процедуру Сформировать?

Источник

Читайте также:  Обрезка плодовых деревьев молодых обрезка плодовых деревьев
Оцените статью