8.х ВставитьОбласть в Табличный документ

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

  1. TopicStarter Overlay
    Csar
    Offline

    Csar

    Регистрация:
    3 сен 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Добрый день, коллеги.
    Подскажите, пожалуйста, как разрулить следующую ситуацию:
    Имеем ТабличныйДокумент с областью, в которую надо вставить другую область бОльшего размера.
    Более подробно: имею в макете область (не строку, не столбец, а именно область) шириной несколько ячеек и высотой в 1 ячейку. В другой ТабДок я заполнил несколько строй или областей, не важно сколько. Хочу все области ТабДок вставить в описанную выше область ТабличныйДокумент.
    Я нарисовал следующий код:
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ОбластьРуководитель = Макет.ПолучитьОбласть("ОбластьРуководитель");//размер по ячейкам 19х1
    ТабличныйДокумент.Вывести(ОбластьРуководитель);
    ТабДок = Новый ТабличныйДокумент;
    ОбластьПодписант1 = Макет.ПолучитьОбласть("Область1");
    ТабДок.Вывести(ОбластьПодписант1);
    ОбластьПодписант2 = Макет.ПолучитьОбласть("Область2");
    ТабДок.Вывести(ОбластьПодписант2);
    ТабличныйДокумент.ВставитьОбласть(ТабДок.Область(), ТабличныйДокумент.Область("ОбластьРуководитель"));



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

    Если размер области в ТабличныйДокумент и ТабДок совпадают, то все хорошо заменяется. В моем же случае размер областей в ТабДок может быть любое количество. В итоге я просто имею пустую область вместо "ОбластьРуководитель".

    Нюанс. У меня исходная область должна быть фиксирована по ширине и в высоту должна быть равна высоте вставляемой области. А вставляемая область сама по себе имеет высоту и ширину отличную от исходной.

    PS это я пытаюсь реализовать систему автозаполнения произвольного количества подписантов документа.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Пока абсолютно не понятно, для чего все эти извращения с несколькими ТабДоками, но Табдок.Область() - это по сути все ячейки ТабДока.

    Вы что в конечном итоге получить хотите?
    Почему нельзя сразу выводить в один ТабДок все необходимые области в нужной последовательности?
  3. TopicStarter Overlay
    Csar
    Offline

    Csar

    Регистрация:
    3 сен 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Это можно реализовать, если действовать так:
    Выводим область в строке (левую область), потом присоединяем к ней правую область. Затем выводим левую область следующей строки, потом присоединяем к ней правую область. И так далее. Но у нас правая область может быть из бОльшего количества строк, чем левая. И самое главное - заполнение левой и правой областей синхронно не реализовать. Т.е. возможно последовательное заполнение сначала одной области, потом второй. И только после этого можно их вставить в Табл. документ и слепить рядом друг с другом.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Если количество строк в областях разное, то недостающие строки "меньшей области" просто добиваются до равного количества.

    По какой причине невозможно реализовать синхронное заполнение двух областей в одном ТабДоке?
  5. TopicStarter Overlay
    Csar
    Offline

    Csar

    Регистрация:
    3 сен 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Дело в том, что каждая область на самом деле является набором других областей и формирование идет с различными условиями в цикле. Получается, что нужно одновременно рулить двумя циклами. А у нас два цикла могут только последовательно обрабатываться или один в другом.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    ээээ....что мешает сделать цикл вида

    Для Сч = 1 По МаксимальноеКоличествоВыводимыхСтрокИзДвухВыводимыхОбластей Цикл

    ?

    Это решит задачу "добивания пустых строк/областей" в меньшую по размеру область

    То, что Вы пытаетесь сделать с помощью ТабДок.Вставить() оно в любом случае должно быть одинакового размера по горизонтали, иначе оно будет выглядеть очень криво в рамках одного ТабДока, либо необходимо каждую из выводимых областей оформлять в виде отдельного ТабДока.
  7. TopicStarter Overlay
    Csar
    Offline

    Csar

    Регистрация:
    3 сен 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Да, меня вполне устраивает изначальное заполнение в разных ТабДоках, а потом их нужно "залить" в две области моего оригинального Табдока. Вот на последнем и происходит затык.
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Хорошо.
    Начнем с того, что ТабличныйДокумент изначально не содержит именованных областей вообще, если вы их сами кодом не поименуете. Именованные области содержатся в макете.

    Предполагаю, что ТабДок.Область() = ТабличныйДокумент.Область("ОбластьРуководитель") = ТабДок.Область(1,1,1,1) = ТабДок.Область("R1:С1").

    Вам нужно знать границы области в пределах ТабДок, в который вы вставляете другую область, а так же получать вставляемую область, задавая ее абсолютные границы в пределах ТабДока.

    Согласно кода, вы область ТабличногоДокумента вообще не получаете перед вставкой ее в ТабДок.
  9. TopicStarter Overlay
    Csar
    Offline

    Csar

    Регистрация:
    3 сен 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    ТабДок.Область() <> ТабличныйДокумент.Область("ОбластьРуководитель")
    Области должны стать равными, но их размеры разные.
    У ТабДок я знаю Ширину Таблицы и ВысотуТаблицы. Как выяснить абсолютные границы области ТабличныйДокумент.Область("ОбластьРуководитель") я не знаю.
    Да и вообще, они разных размеров. Я что-то совсем запутался.
    --- Объединение сообщений, 11 мар 2016 ---
    Грубо говоря задача сводится к тому, что бы одну область заменить другой так, что бы ширина области не изменилась, а высота может меняться. Как это сделать не пойму.
Похожие темы
  1. Panchos
    Ответов:
    6
    Просмотров:
    2.030
Загрузка...

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