Управляемые формы: чтение макетов с объединенными ячейками (в частности, и из экселей). Работа с табличным документом Группировка строк в табличном документе

Управляемые формы: чтение макетов с объединенными ячейками (в частности, и из экселей). Работа с табличным документом Группировка строк в табличном документе

Для всех выходных документов (первичных документов и отчетов) в системе 1С:Предприятие предусмотрен единый формат - формат табличных документов. Табличный документ является мощным интерактивным средством отображения информации и может использоваться как сам по себе, так и входить в состав любой из форм, используемых в прикладном решении. По своей сути табличный документ напоминает электронные таблицы - он состоит из строк и столбцов, в которых размещаются данные, однако его возможности гораздо шире:

Оформление ячеек

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

Табличный документ позволяет оформлять ячейки рамками различного вида:

Также разработчик имеет возможность управлять цветом текста, фона и рамок, выбирая цвета как из палитры операционной системы, так и из палитры Web-цветов, поддерживаемой платформой, или из палитры того стиля, который будет использоваться прикладным решением:

Группировки

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

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

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

Отступ уровней иерархии при использовании группировок формируется системой автоматически:

Расшифровки

В системе поддерживается механизм расшифровок, который позволяет пользователю получить детальный или дополнительный отчет, щелкнув мышью на строке или ячейке табличного документа. Платформа поддерживает возможность обработки нажатий клавиши мыши в ячейках табличного документа. При этом система может выполнять как стандартные действия, так и алгоритмы, заданные разработчиком.

Стандартные действия при расшифровке выполняются, например, если щелкнуть мышью на документе или элементе справочника. В этом случае система откроет этот объект для просмотра (если иное поведение не предусмотрено разработчиком).

Обработка нестандартных расшифровок производится средствами встроенного языка. Например, разработчик может задать алгоритм получения детального отчета, путем переформирования существующего с использованием дополнительных условий отбора ("показать продажи только по этому контрагенту"). Или же, используя расшифровку, пользователь может получить совершенно новый отчет (например "показать расходные накладные, которые сделали вклад в объем продаж по данному контрагенту").

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

Примечания

Разработчик имеет возможность задавать примечания для отдельных ячеек или групп ячеек документа. Ячейка с примечанием имеет маленький треугольник в правом верхнем углу. При наведении курсора на ячейку, примечание отображается во всплывающем окне. С помощью примечаний можно добавлять в табличные документы дополнительную (справочную) информацию, которая не отображается на экране (в обычном режиме), но может быть легко просмотрена, если подвести курсор мыши к нужной ячейке:

Ширина столбцов

Табличный документ поддерживает возможность задания различной ширины колонок для различных строк. Это возможность является весьма важной для регламентированных отчетов. Фактически в этом случае табличный документ будет представлять собой нескольких таблиц, что, например, часто встречается в бухгалтерской и налоговой отчетности:

Сводные таблицы

Табличный документ может содержать в себе сводные таблицы. Сводные таблицы, - это мощный инструмент программного и интерактивного представления многомерных данных.

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

Сводная таблица автоматически изменяет состав строк, колонок и их форматирование, в соответствии с теми данными, которые размещаются в ней; кроме того, система поддерживает несколько вариантов стандартного оформления сводных таблиц, которые могут быть использованы разработчиком. Все это делает сводные таблицы самым простым инструментом для анализа многомерных данных, поскольку от разработчика требуются минимальные усилия для их создания:

Дополнительная информация

Вы можете познакомиться с использованием сводных таблиц в реальном режиме времени. Для этого можно скачать демонстрационный ролик "Пример разработки торговой мини-системы", в котором показан процесс разработки торговой мини-системы с использованием сводной таблицы в отчете "Анализ продаж по периодам".

Ввод данных в табличный документ

Хотя табличные документы в системе 1С:Предприятие 8.0 используются, в основном, для представления уже обработанной информации, существует возможность непосредственного ввода данных в табличный документ как в "обычную" электронную таблицу.

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

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

Сохранение

Поскольку табличный документ, чаще всего, используется для формирования выходных документов, он может быть сохранен в файл на диске для последующего использования или переноса на другие компьютеры. Табличный документ может быть сохранен как в собственном формате, так и экспортирован в другие форматы хранения данных, в том числе лист Excel или формат MXL7 (для совместимости с версией платформы 7.7):

Редактор табличных документов

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

Всем добрый период времени!

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

ЧТЕНИЕ ТАБЛИЧНОГО ДОКУМЕНТА

Для чтения табличного документа в 1С можно использовать как ни странно объект "ТабличныйДокумент". С версии 8.3.7 (если не изменяет память) данный объект способен читать не только MXL-файлы, но и XLS/XLSX/ODT и какие-то еще варианты таблиц (а также, кстати, и писать).

Но как всегда есть одна малюсенькая проблемка - объект создается только на сервере. Но 1С попыталась решить данную проблему создав потоки в памяти и предоставив программисту возможность использовать их вместо пути к файлу в конструкторе объекта, но при этом необходимо указать тип читаемого файла. Правда у меня на платформе Windows 7 pro x64 c 1C 8.3.10.2466 эксель таким образом прочитать не получилось, а вот MXL читает замечательно, поэтому для екселевский файлов все-равно придется создать временный файл.

Итак, код чтения файлов:

&НаСервере Процедура ЗагрузитьФайлНаСервере(ДД, Расширение) Если Расширение = "xml" Тогда ЧД = Новый ЧтениеДанных(ДД); Таб.Прочитать(ЧД, СпособЧтенияЗначенийТабличногоДокумента.Значение, ТипФайлаТабличногоДокумента.MXL); Иначе ИмяФайла = ПолучитьИмяВременногоФайла(Расширение); ДД.Записать(ИмяФайла); Таб.Прочитать(ИмяФайла); УдалитьФайлы(ИмяФайла); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ЗагрузитьФайл(Команда) Длг = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Длг.Фильтр = "MXL-files (*.mxl)|*.mxl|XLS-files (*.xls)|*.xls|XLSX-files (*.xlsx)|*.xlsx|ODS-files (*.ods)|*.ods"; Длг.Показать(Новый ОписаниеОповещения("ПриВыбореФайла", ЭтаФорма)); КонецПроцедуры &НаКлиенте Процедура ПриВыбореФайла(Рез, Доп) Экспорт Если Рез = Неопределено Тогда Возврат КонецЕсли; фл = Новый Файл(Рез); ЗагрузитьФайлНаСервере(Новый ДвоичныеДанные(Рез), НРег(фл.Расширение)); КонецПроцедуры

Создадим форму с табличным документом и кнопкой "Загрузить файл" и получим фот такую формочку, которая сможет прочитать MXL, XLS, XLSX и ODS файлы в табличный документ.

ВЫДЕЛЕННЫЕ ЯЧЕЙКИ

Давайте разберемся, где тут у нас находятся выделенные пользователем ячейки. И вот тут интересная странность платформы в том, что эти выделенные ячейки доступны только на клиенте в соответствующем элементе формы. Давайте пробежимся по выделенным ячейкам и распечатаем результат в строку сообщений:

&НаКлиенте Процедура СообщитьВыделенное(Команда) Для Каждого Область ИЗ Элементы.Таб.ПолучитьВыделенныеОбласти() Цикл Для Х = Область.Лево ПО Область.Право Цикл Для У = Область.Верх ПО Область.Низ Цикл Сообщить(Таб.Область(У,Х).Текст); КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры

Если мы выделим теперь первую строку без объединенных ячеек, то получим следующий результат:

Т.е. тут у нас напечаталось А, Б и В. Если же мы выберем вторую строку, то получим иную картину:

Как видите, наличие объединения никоим образом не мешает нам получить данные из строки , которая у нас объединена со строкой , При том в обоих этих строках будет находиться значение "А". Если мы выделим третью строку, то получим вывод "А А А" (ну вы уже поняли, почему, да?)

ОБЪЕДИНЕННЫЕ ЯЧЕЙКИ

Для того, чтобы исправить проблему с объединенными ячейками, нужно просто узнать одну подробность: каждая ячейка имеет реквизиты "Лево", "Право", "Верх" и "Низ". И для объединенных ячеек они не будут равны. Для простого объединения по оси Х произвести чтение с учетом объединения будет достаточно просто:

Для Каждого Область ИЗ Элементы.Таб.ПолучитьВыделенныеОбласти() Цикл Для Х = Область.Лево ПО Область.Право Цикл Для У = Область.Верх ПО Область.Низ Цикл Сообщить(Таб.Область(У,Х).Текст); Х = Х + Таб.Область(У,Х).Право - Таб.Область(У,Х).Лево; КонецЦикла; КонецЦикла; КонецЦикла;

Мы просто добавляем к "Х" "право" и вычитаем "лево".

А для оси "У" предлагаю разобраться самостоятельно (в качестве домашнего задания).

Табличный документ 1С:Предприятия 8 служит не только для печати документов и отчетов. Он имеет расширенные возможности, которые превращают его в интерактивное средство взаимодействия с пользователем. К таким возможностям относятся:
- расшифровки,
- группировки,
- примечания.
Стоит заметить, что к интерактивным возможностям табличного документа можно также отнести сводные таблицы и элементы управления, располагающиеся в ячейках, но сейчас мы не будем на них останавливаться, а подробнее рассмотрим вышеперечисленные механизмы.

Расшифровки

Система "1С:Предприятие 8" поддерживает механизм расшифровок (drill-down, drill-through), когда пользователь щелкает на строке или ячейке отчета и получает более детальный отчет, если конечно это предусмотрено программистом.

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

Событие "ОбработкаРасшифровки" можно обработать, только если табличный документ помещен в форму как элемент управления, а не открывается в отдельном окне, поскольку это событие существует только у элемента управления "ПолеТабличногоДокумента". Ниже показаны категория свойств "События" элемента управления "ПолеТабличногоДокумента", где назначается процедура-обработчик расшифровки.

Сама процедура "РасшифроватьСтроку" может выглядеть следующим образом (как пример):

Процедура РасшифроватьСтроку(Элемент, Расшифровка, СтандартнаяОбработка)
Если ТипЗнч(Расшифровка) = Тип("ДокументСсылка.ДоговорПродажи") Тогда

СтандартнаяОбработка = Ложь;
Отчет = Отчеты.АнализДоговора.Создать();
Отчет.Договор = Расшифровка; //заполняем реквизит отчета
Отчет.Сформировать(ЭлементыФормы.ПолеТабличногоДокумента1);
КонецЕсли;
КонецПроцедуры

Примечание 1 . В модуле приложения (аналог глобального модуля в версии 7.7) больше нет события ОбработкаЯчейкиТаблицы. Вся обработка расшифровок должна быть произведена в модуле формы, где располагается элемент управления "ПолеТабличногоДокумента".

Примечание 2 . Событие "ОбработкаРасшифровки" возникает при щелчке на ячейке или рисунке, содержащих расшифровку. Не путайте его с событием "Выбор", возникающим для всех ячеек и рисунков при двойном щелчке мыши или нажатии клавиши Enter, причем, сначала возникает событие "Выбор", а потом "ОбработкаРасшифровки".

Группировки

В 1С:Предприятии 8 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы.

Самый простой способ добавить группировки в отчет - доверить эту задачу системе, тогда от программиста потребуются минимальные усилия. Необходимо всего лишь применить методы НачатьАвтоГруппировкуСтрок/НачатьАвтоГруппировкуКолонок и ЗакончитьАвтоГруппировкуСтрок/ЗакончитьАвтоГруппировкуКолонок, которые включают режим автоматической группировки строк или колонок соответственно. В этом режиме при вызове методов Вывести (для строк) и Присоединить (для колонок) указываются дополнительные параметры для группировки:

Вывести(<Таблица>, <Уровень>, <Имя группы>, <Открыта>)
Присоединить(<Таблица>, <Уровень>, <Имя группы>, <Открыта>)

При использовании группировок очень полезно установить свойство ячейки "АвтоОтступ" в какое-нибудь ненулевое значение, например, 5. Тогда система будет автоматически добавлять заданное количество пробелов слева текста ячейки, основываясь на текущем уровне группировки. В результате отчет приобретет удобный внешний вид для отображения иерархии данных.

Следующий пример выводит список товаров с группировками:


ТабДок = Новый ТабличныйДокумент;

Область = Макет.ПолучитьОбласть("Строка");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
ТабДок.НачатьАвтоГруппировкуСтрок();
Пока Выборка.Следующий() Цикл
Область.Параметры.Номенклатура = Выборка.Ссылка;
ТабДок.Вывести(Область, Выборка.Ссылка.Уровень(), Выборка.Наименование, Истина);
КонецЦикла;

ТабДок.ЗакончитьАвтоГруппировкуСтрок();
ТабДок.Показать();

Примечания

Ячейки табличного документа могут иметь примечания, тогда в правом верхнем углу ячейки выводится маленький красный треугольник. При наведении курсора мыши на ячейку примечание показывается во всплывающем окне.

Программная установка примечаний реализуется следующим образом:

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
ТабДок.Очистить();

Макет = Справочники.Номенклатура.ПолучитьМакет("Каталог");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл

ОбластьЯчеекМакета = Макет.Область("ЯчейкаНаименование");
ОбластьЯчеекМакета.Примечание.Текст = Выборка.Ссылка.Комментарий;

ОбластьТабДок = Макет.ПолучитьОбласть("Строка");
ОбластьТабДок.Параметры.Номенклатура = Выборка.Ссылка;
ТабДок.Вывести(ОбластьТабДок);

КонецЦикла;

Обратите внимание, что свойство "Примечание" у объекта "ОбластьЯчеекМакета" является объектом типа "Рисунок", а не простой строкой. Через этот объект можно редактировать внешний вид примечания, шрифт и цвет текста, фон, линии и т.д.

Резюме
- Табличный документ служит не только для печати документов и отчетов, но имеет также мощные интерактивные возможности. К таким возможностям относятся в первую очередь расшифровки, группировки и примечания (рассмотрены в этом разделе), а также сводные таблицы и элементы управления (будут рассмотрены в других разделах).
- Нестандартные расшифровки, т.е. обрабатываемые программистом, можно реализовать, если только табличный документ выводится в экранную форму (элемент управления "ПолеТабличногоДокумента").
- Самый простой способ задействовать группировки - это включить режим автогруппировок строк, а при выводе каждой области в табличный документ указывать уровень, к которому она относится. Рекомендуется также в макете установить свойство "Автоотступ" для нужных ячеек.
- Примечания "всплывают" при наведении курсора мыши на ячейку. Есть возможность изменить внешний вид примечаний средствами встроенного языка.

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

В одной таблице перечислены товары к отгрузке со склада. В другой таблице – обязательства по оплате этих товаров.

Поэтому в 1С видное место занимает работа с таблицами.

Таблицы в 1С также называют «табличные части». Они есть у справочников, документов и других .

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

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

//Вариант 1 – последовательный доступ к результатам запроса

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

//Вариант 2 – выгрузка в таблицу значений
Запрос = Новый Запрос(«ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура»);
//получение таблицы
Таблица = Запрос.Выполнить().Выгрузить().
//далее можем также обойти все строки
Для каждого Строка из Таблица Цикл
Сообщить(Строка.Наименование);
КонецЦикла;
//или произвольно обращаться к строкам
Строка = Таблица.Найти(«Лопата», «Наименование»);

Важная особенность – в таблице, которая получена из результата запроса, все колонки будут строго типизированы. Это значит, что запросив поле Наименование из справочника Номенклатура, Вы получите колонку вида Строка с допустимой длиной не более N символов.

Таблица на форме (толстый клиент)

Пользователь работает с таблицей, когда она размещена на форме.

Базовые принципы работы с формами мы с Вами обсуждали в уроке по и в уроке по

Итак, разместим таблицу на форме. Для этого можно перетащить таблицу с панели элементов управления. Аналогично можно выбрать в меню Форма/Вставить элемент управления.

Данные могут храниться в конфигурации – тогда нужно выбрать существующую (ранее добавленную) табличную часть того объекта конфигурации, форму которого Вы редактируете.

Нажмите кнопку «…» в свойстве Данные. Для того, чтобы увидеть список табличных частей, нужно раскрыть ветку Объект.

При выборе табличной части 1С сама добавит колонки у таблицы на форме. Строки введенные пользователем в такую таблицу будут сохраняться автоматически вместе со справочником/документом.

В этом же свойстве Данные Вы можете ввести произвольное имя и выбрать тип ТаблицаЗначений.

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

Нажав правой кнопкой на таблице Вы можете добавить колонку. В свойствах колонки можно указать его имя (для обращения в коде 1С), заголовок колонки на форме, связь с реквизитом табличной части (последнее – если выбрана не произвольная таблица, а табличная часть).

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

Чтобы управлять таблицей, нужно вывести на форму командную панель. Выберите пункт меню Форма/Вставить элемент управления/Командная панель.

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

Таблица на форме (тонкий/управляемый клиент)

На управляемой форме указанные действия выглядят немного по другому. Если Вам нужно разместить на форме табличную часть – раскройте ветку Объект и перетащите одну из табличных частей влево. И все!

Если нужно разместить таблицу значений, добавьте новый реквизит формы и в его свойствах укажите тип – таблица значений.

Чтобы добавить колонки, используйте меню по правой кнопке мыши на этом реквизите формы, пункт Добавить колонку реквизита.

После чего также перетащите таблицу влево.

Чтобы у таблицы появилась командная панель, в свойствах таблицы выберите значения в секции Использование – Положение командной панели.

Выгрузка таблицы в Excel

Любую таблицу 1С, расположенную на форме, можно распечатать или выгрузить в Excel.

Для этого щелкните правой кнопкой мыши на свободном месте в таблице и выберите пункт Вывести список.

В управляемом (тонком) клиент аналогичные действия можно выполнить с помощью пункта меню Все действия/Вывести список.

Большинство обучающих материалов по программированию в системе 1С при описании формированияпечатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.

Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.

Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).

Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:

ТабДок . ИмяПринтера = "HP LaserJet 3050 Series PCL 6" ;

При печати пакета документовможно сэкономить время, установив признак разбора по копиям:

ТабДок . РазборПоКопиям =истина;

Число копий можно указать так:

ТабДок . КоличествоЭкземпляров = 5 ;

Разумеется, можно задать поля:

ТабДок . ПолеСлева = 20 ; //Поле слева 20мм, остальные поля 10мм (по умолчанию)

Еще несколько свойств страницы:

ТабДок . ОриентацияСтраницы = ОриентацияСтраницы . Ландшафт ;
ТабДок . ЭкземпляровНаСтранице = 2 ; //на листе будет размещено 2 страницы
ТабДок . Автомасштаб =истина; //аналогично настройкам масштаба «по ширине страницы»

При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати» ).

Свойство «РазмерСтраницы» позволяет задать стандартные форматы страницы - “ A 3”, “A4”, “ A 5” (полный список вариантов доступен в справке 1С).

ТабДок . РазмерСтраницы = "A3" ; // буква А должна быть английской

Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):

ТабДок . РазмерСтраницы = "Custom" ; //нестандартный размер
ТабДок . ВысотаСтраницы = 350 ;
ТабДок . ШиринаСтраницы = 350 ;

Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:

ТабДок . ВерхнийКолонтитул . Выводить =истина; //будет напечатан верхний колонтитул
ТабДок . РазмерКолонтитулаСверху = 7 ; //размер колонтитула 7мм (по умолчанию 10мм)
ТабДок . ВерхнийКолонтитул . ВертикальноеПоложение = ВертикальноеПоложение . Верх ;
ТабДок . ВерхнийКолонтитул . НачальнаяСтраница = 2 ; //колонтитул выводится со второй страницы
ШрифтКолонтитула =Новый Шрифт ("Courier New" , 8 ,Истина);
ТабДок . ВерхнийКолонтитул . Шрифт = ШрифтКолонтитула ; //наклонный шрифт
ТабДок . ВерхнийКолонтитул . ТекстВЦентре = "Верхний колонтитул" ;
ТабДок . ВерхнийКолонтитул . ТекстСправа = "Стр.[&НомерСтраницы] из [&СтраницВсего]" ; //нумерация страниц
ТабДок . ВерхнийКолонтитул . ТекстСлева = "[&Дата]" ; //текущая дата

Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.

1) Непосредственно на принтер:

ТабДок . Напечатать (. НеИспользовать );
ТабДок . Напечатать (истина);

2) Перед печатью будет выведен диалог печати:

ТабДок . Напечатать (РежимИспользованияДиалогаПечати . Использовать );
ТабДок . Напечатать (ложь);

Кроме того можно управлять и разбиением документа на страницы. Оценитьколичество страниц в документе по настройкам текущего принтера можно так:

ТабДок . КоличествоСтраниц ();

С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.

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

Принудительно вставить разрывы страниц позволяют методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()» .

Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:

Если Не ТабДок . ПроверитьВывод (МассивВыводимыхОбластей ) Тогда
ТабДок . ВывестиГоризонтальныйРазделительСтраниц ();
КонецЕсли;

Важной характеристикой платформы «1С:Предприятие 8.2» является строгое разделение свойств и методов по контексту исполнения. Если все приведенные выше свойства доступны в любом контексте, то перечисленные методы недоступны на тонком клиенте. Исключением является метод «Напечатать()», доступность которого по понятным причинам ограничена клиентской частью. Это означает, что формирование табличного документа должно происходить на сервере, а отправлять его на печать следует в клиентской процедуре.

просмотров