8.х Отображение табличной части как дерева

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sergey_2000, 29 окт 2007.

  1. TopicStarter Overlay
    Sergey_2000
    Offline

    Sergey_2000

    Регистрация:
    29 окт 2007
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Хочется отображать строки табличной части в виде дерева (добавив в ТЧ реквизит "Родитель").

    Может, у кого то уже есть библиотека для синхронного удаления/добавления/редактирования информации в ТЧ и в соответствующем ДеревеЗначений?

    Или, может, у кого есть компонент с таким функционалом?

    Или кто-то хочет заработать немного, разработав набор таких функций?

    Ваши предложения!!!
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Вы ищете готовое решение или будете писать сами?

    Проще всего сделать так:
    1. На форму документа или справочника вынести элемент управления с видом Дерево значений
    2. Написать две функции ДеревоВТаблицу и ТаблицаВДерево
    3. При открытии документа или справочника - заполнять элемент дерево по данным таблицы значений
    4. При записи документа - заполнять таблицу по данным дерева (это очень просто делается - дерево в таблицу перенести несложно, обратный процесс чуть сложнее).
  3. Redimer
    Offline

    Redimer

    Регистрация:
    29 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Очень похожая проблема. Не знаю, как вывести элементы справочника в виде дерева в ТЧ.
    Помогите ПЛЗ!
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Дык чём сложность? На каком месте затык?
    Или вообще весь код надо написать? :)
  5. Redimer
    Offline

    Redimer

    Регистрация:
    29 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Вобщем дела такие:

    Создаю на форме Табличное поле с типом дерево значений и с именем ДеревоЗнач.

    Создаю поцедуру ПриОткрытии()
    В ней пишу:

    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бизнесы.Ссылка КАК Бизнесы
    |ИЗ
    | Справочник.Бизнесы КАК Бизнесы
    |ГДЕ
    | Бизнесы.ЭтоГруппа = Истина
    |
    ДеревоЗнач = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

    Ничего не работает. Вот в этом то и затык. :(
  6. Redimer
    Offline

    Redimer

    Регистрация:
    29 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Вот еще добавил в конец процедуры:
    Этаформа.ЭлементыФормы.ДеревоЗнач.СоздатьКолонки();

    почти все нормально, за исключением одного момента. Мне надо теперь эту колонку Бизнес, автоматически заполнить записями из справочника Бизнесы(из поля Бизнесы.Наименование). Делаю:

    Спр=Справочники.Бизнесы.Выбрать();
    Пока Спр.Следующий() цикл
    СтрТЗ = ДеревоЗнач.Строки.Добавить();
    КонецЦикла;

    Он заполняет дерево необходимым количеством строк(сколько записей в справочнике). А как сделать что бы сами записи выводились?
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Не забудьте упорядочить по иерархии, это должно помочь.
    Сделал запрос для справочника Контрагенты
    Код:
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Ссылка,
    Контрагенты.Представление
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ГДЕ
    Контрагенты.ЭтоГруппа = ИСТИНА
    
    СГРУППИРОВАТЬ ПО
    Контрагенты.Ссылка,
    Контрагенты.Представление
    
    УПОРЯДОЧИТЬ ПО
    Ссылка ИЕРАРХИЯ
    
    ИТОГИ ПО
    ОБЩИЕ,
    Ссылка
    
    
  8. Redimer
    Offline

    Redimer

    Регистрация:
    29 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    А поясните пожалуйста, зачем нужно Контрагенты.Представление?
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Дословно из ИТС:
    В кратце: для исключения повторного обращения к БД для получения представления.
  10. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Спасибо BabySG за пояснение, а кроме того:
    я писал на скорую руку - конструктором запросов, при выборе ссылки он автоматически добавляет представление - вот уж ради ответа на небольшие вопросы тратить время на стирание лишних строчек было невероятно лениво. :)

Поделиться этой страницей