gifts2017

FORMEX. Примеры работы с объектом "Дерево+Таблица". Шаблон для универсальной печати справочников.

Опубликовал Юрий Португалов (Sprite) в раздел Программирование - Практика программирования

[b] ПРИМЕР алгоритма формирования структуры дерева в ТЗ [/b]
[b] ПРИМЕР выборки значений дерева из ТЗ [/b]
[b] ПРИМЕРЫ работы с объектами типа ''Метаданные.Справочник'' [/b]
Внешняя обработка для печати справочника Номенклатуры и подчиненных справочников.
Выкладывается для примеров работы с объектом "Дерево+Таблица".

ИСПОЛЬЗОВАНЫ МЕТОДЫ FORMEX:

ЗначениеВДерево / ValueToTree
ЗначениеИзДерева / ValueFromTree
ПерехватитьТаблицуЗначений / WrapValueTable
РазвернутьУзел / ExpandNode
СвернутьУзел / CollapseNode
ТекущаяКолонкаДерева / CurrentTreeColumn
ТекущаяСтрокаДерева / CurrentTreeItem
УзелРазвернут
ЭтоГруппа / IsGroupNode
ПриНажатииКнопкиКлавиатуры

Скачать файлы

Наименование Файл Версия Размер
FORMEX. Примеры работы с объектом "Дерево+Таблица" 530
.1208686464 202,00Kb
27.02.13
530
.1208686464 202,00Kb Скачать
Определение раскраски строк и шрифта в ТЗ 149
.1208687512 41,00Kb
27.02.13
149
.1208687512 41,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Плутенко (Noy) 23.04.08 11:09
Для удобства работы с деревом предлагаю дополнить следующим кодом:

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)
АтрФ=СоздатьОбъект("АтрибутФормы");
АтрФ.УстановитьАтрибут(Форма,"ТЗ");
Если (Форма.АктивныйЭлемент()="ТЗ") и (Alt+Shift+Ctrl=0) тогда
Если КодКлавиши=37 тогда
Если АтрФ.ТекущаяКолонкаДерева()=1 тогда
Если (АтрФ.ЭтоГруппа(атрф.ТекущаяСтрокаДерева())=1) и (атрф.УзелРазвернут(атрф.ТекущаяСтрокаДерева())=1) тогда
ФСО=0;
Атрф.СвернутьУзел(атрф.ТекущаяСтрокаДерева());
Иначе
ТекСтрока=атрф.ТекущаяСтрокаДерева();
Для х=1 по СтрДлина(атрф.ТекущаяСтрокаДерева()) Цикл
ТекСтрока=Лев(текСтрока,СтрДлина(ТекСтрока)-1);
Если Прав(ТекСтрока,1)="/" тогда
ТекСтрока=Лев(текСтрока,СтрДлина(ТекСтрока)-1);
Попытка
атрф.УстановитьТекущийУзел(ТекСтрока);
ФСО=0;
Исключение
КонецПопытки;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КодКлавиши=39 тогда
Если АтрФ.ТекущаяКолонкаДерева()=1 тогда
Если АтрФ.ЭтоГруппа(атрф.ТекущаяСтрокаДерева())=1 тогда
Если атрф.УзелРазвернут(атрф.ТекущаяСтрокаДерева())=0 тогда
ФСО=0;
Атрф.РазвернутьУзел(атрф.ТекущаяСтрокаДерева());
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Да, и в названии присутствует слово "универсальная", а в коде есть строки:
Спр=СоздатьОбъект("Справочник.Номенклатура");
Осн=СоздатьОбъект("Справочник.Партии");...
SSNick; Вадимко; +2 Ответить
2. Юрий Португалов (Sprite) 23.04.08 20:55
Noy
Обновил.
По поводу:
<Спр=СоздатьОбъект("Справочник.Номенклатура");
<Осн=СоздатьОбъект("Справочник.Партии");...
Согласен.
Указал, что это шаблон для Шаблон для универсальной печати справочников.
3. Вадим 1С911.BY (Вадимко) 17.02.09 01:10
Плюс за проделанную работу
Хотя для примера слишком многа буков не говоря уже про оформление кода :)
4. Vasily Kushnir (vasilykushnir) 17.02.09 12:04
(3) Согласен. Плюс за труды.
5. Рустам (Borometr) 29.03.09 12:48
Спасибо, здорово помогло для создания моей разработки.
6. Sarge (RvsL) 17.07.09 10:14
не работает код:
атрф.УзелРазвернут(атрф.ТекущаяСтрокаДерева())

Почему никто не замечает? А без этого фиг что напишешь. Нужная фича.
7. Сергей Мещанкин (SSNick) 31.07.10 17:56
Код не работает для старой версии 1С++ (совмещённой с FormEx). Скачай последние версии 1С++ и FormEx (раздельными компонентами). В последней версии FormEx метод УзелРазвернут() уже присутствует. ;)