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

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

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

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

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

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

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

См. также

Добавить вознаграждение
Комментарии
1. Алексей Плутенко (Noy) 1053 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) 471 23.04.08 20:55 Сейчас в теме
Noy
Обновил.
По поводу:
<Спр=СоздатьОбъект("Справочник.Номенклатура");
<Осн=СоздатьОбъект("Справочник.Партии");...
Согласен.
Указал, что это шаблон для Шаблон для универсальной печати справочников.
3. Вадим 1С911.BY (Вадимко) 182 17.02.09 01:10 Сейчас в теме
Плюс за проделанную работу
Хотя для примера слишком многа буков не говоря уже про оформление кода :)
4. Vasily Kushnir (vasilykushnir) 62 17.02.09 12:04 Сейчас в теме
(3) Согласен. Плюс за труды.
5. Рустам (Borometr) 35 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 метод УзелРазвернут() уже присутствует. ;)