...

Выгрузка в шаблон блока внутри блока

Тема в разделе "Вопросы по функционалу", создана пользователем Адель, 2 апр 2017.

  1. Адель

    Адель Member

    Разрабатываю автоматически генерируемые по шаблону документы. Статья в базе знаний прекрасно все объясняет и все работает, как в ворде, так и в экселе. Но! Совершенно не раскрыт момент, когда у блока есть свойство, которое так же является блоком. Убил вечер, экспериментировал и так и эдак крутил, но не смог добиться выгрузки "блока в блоке" в шаблон. Либо ошибка формирования документа, либо пустая строка.

    Подскажите, кто знает, как это реализовать, спасибо! :)
     
    Последнее редактирование: 2 апр 2017
  2. pushkarev

    pushkarev Active Member

    А могли бы вы фрагмент шаблона выложить где выводите блок в блоке, или весь файл целиком (если не коммерческая тайна :) )
     
  3. Адель

    Адель Member

    Дык, я его вообще никак не вывожу. Фактически ведь база знаний не дает информацию о том, как надо записывать его в шаблоне. Я уж методом тыка что-то пытался сделать и ничего не сделал (в тестовом процессе с тестовыми данными).

    Пусть например есть блок "Blok_1"
    У него пусть будет 3 свойства в следующем порядке:

    1. "Svoistvo_1" с типом строка
    2. "Svoistvo_2" вида блок, внутри которого есть следующие свойства
    _____"Svoistvi_vid2_1" с типом строка
    _____"Svoistvi_vid2_2" с типом строка
    3. "Svoistvo_3" с типом строка

    Вот и непонятно, как такой блок выгрузить в шаблон.
    Если бы свойство 2 было тоже строкой, то синтаксис:

    {for Item in {$Blok_1}}
    {$Item.Svoistvo_1} {$Item.Svoistvo_2} {$Item.Svoistvo_3}
    {end}

    Но так как Svoistvo_2 само является блоком, то записать как
    $Item.Svoistvo_2 невозможно. А как надо не ясно (
     
  4. pushkarev

    pushkarev Active Member

    Проблема понятна. Elma не сможет вывести свойство типа блок, если вы напишите {$Blok_1}, аналогично система не сможет вывести свойство типа вложенный блок {$Item.Svoistvo_2}. Можно выводить только простые типы данных, например свойства блока.
    Вообще нужно понять как вы хотите чтобы это выглядело в итоговом документе. Если сможете выложить пример как должен выглядеть конечный документ, я смогу вам показать как разметить шаблон.
    Для вашего примера, можно сделать примерно вот такую конструкцию:
    Код:
    {for Item in {$Blok_1}}
    {$Item.Svoistvo_1}; {for Item2 in {$Item.Svoistvo_2}} {$Item2.Svoistvi_vid_2_1}, {$Item2.Svoistvi_vid_2_2};{end} {$Item.Svoistvo_3}.
    {end}
    На выходе вы получите примерно такие строки:
    свойство_1; вложенный_элемент_1_свойство_1, вложенный_элемент_1_свойство_2; вложенный_элемент_2_свойство_1, вложенный_элемент_2_свойство_2; свойство_3
     
    2 это нравится
  5. Адель

    Адель Member

    В очередной раз спасибо!
    Вашей подсказки оказалось достаточно!
    Все отлично выгружается.
    Для ворда, я использовал ваш синтаксис так (см.вложение)
     

    Вложения:

    • for Item in.zip
      Размер файла:
      10,5 КБ
      Просмотров:
      26
  6. yambr

    yambr Member

    у нас есть для этого свой модуль для автоматического формиррования полей для шаблонов
    2017-05-02_15-04-47.png
     

Поделиться: