ZWWW копирование меток.

На сегодняшний день, ZWWW для выгрузки в WORD и EXCEL используется практически повсеместно. Однако, как выяснилось, не все знают про одну возможность. А именно копирование метки в область val_type = 'V'.
Все возможные варианты можно посмотреть в программе ZWWW_MANY_LIST. Тут же мы разберем простенький пример.


Задача такая: Необходимо вывести в одном документе некий приказ, и чтобы для каждого табельного номера он был на новом листе.

Рис.1 Шаблон приказа с метками замены

В ZWWW есть возможность копировать содержимое метки, в указанную область. Для этого в документе мы должны создать три Закладки:

Рис.2. Закладка HEADER2


1 - HEADER2 - закладка это наша основная область, в которой находится весь текст и метки.


Рис.3. Закладка NewPage

2-NewPage - закладка служит для того чтобы создавать новые страницы


Рис.3. Закладка Line2

3- Line2 - данная закладка как раз является областью в которую мы будем вставлять две предыдущих по мере необходимости.

Общий алгоритм такой:

  1. Вставляем в область Line2 Данные из закладки HEADER2.
  2. После этого заменяем в области HEADER2 все метки.
  3. Вставляем в область Line2 Разрыв страницы, который находится в закладке NewPage
  4. Повторяем в цикле, пока не закончатся данные в таблице.

Замечание:
1. При этом необходимо учитывать var_num, как в случае таблиц. Т.е. каждая вставка области, будь то Line2 или HEADER2 является новой строкой в таблице.
2. Если область ни разу не была вставлена, то она не исчезает из шаблона и окажется в выходном формуляре в изначальном виде. У вас может быть несколько областей для вставки, и, скажем, для одних табельных номеров вы хотите использовать одну текстовку, а для других другую. И так получилось, что выбрались люди, подходящие только под первую из текстовок. При этом если мы, ни разу не использовали вторую, она останется в формуляре, ее надо будет удалить при помощи val_type = 'D' . Первая же исчезнет сама.


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

ZWWW копирование меток.: 4 комментария

  1. Добрый день. Подскажите, пожалуйста, как создать документ вашим способом, когда закладка HEADER2 внутри себя содержит другие закладки (табличные части).Задача такова: есть список заказов, для каждого из них информацию нужно выводить в один и тот же документ с нового листа, для каждого заказа должна быть заполнена табличная часть с материалами из заказа.
    И еще мне показалось, что в коде ошибка: для строк с 21 по 28 должна быть указана закладка HEADER2 вместо LINE2.

    1. Добрый день.
      Если я вас правильно понял, то ответ на ваш вопрос есть в программе ZWWW_MANY_LIST, там рассматривается похожая ситуация. По идее вам просто надо чуть больше меток, а именно дополнительные метки для шапки таблицы и для строки. Когда вы вставили новый лист, следом копируете шапку. После много раз вставляете строку. Для следующего заказа опять копируете метку с Разрывом страницы и шапку. А потом много раз строку таблицы. и т.д. Главное правильно создать метки, чтобы таблица не расползалась. Если мне память не изменяет, то там надо сделать две таблицы(одна просто шапка, вторая с одной строкой и метками в ней), после вставки они визуально объединятся.
      Может быть объяснил немного непонятно, напишите мне в LinkedIn, обсудим в чате.
      По поводу кода, должно быть все верно, т.к. обычно я делаю рабочий пример и уже его выкладываю в статью. Мы когда скопировали закладку, произошло копирование не закладки, а содержащихся в ней данных. Именно поэтому мы можем копировать закладку снова и снова. Метки находятся в области целевой закладки, а не исходной. Поэтому там и LINE2. Header2 где была там и осталась.

Добавить комментарий

Ваш адрес email не будет опубликован.