Как вывести документы в одну таблицу 1с

Обновлено: 07.07.2024

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

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

Значения измерений отображаются в шапке или боковике, а ячейки области данных содержат сводную информацию на пересечении данных измерений. Пользователь имеет возможность методом перетаскивания (drag-n-drop) добавить или удалить измерения и ресурсы, поменять их расположение.

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

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

Формирование сводных таблиц

Всегда нужно помнить, что сводная таблица размещается в табличном документе. Добавить ее в табличный документ можно интерактивно или программно. Чтобы вставить сводную таблицу в макет в режиме "Конфигуратор" нужно установить курсор на ячейку макета и выбрать пункт меню "Таблица => Встроенные таблицы => Вставить сводную таблицу". Сводную таблицу можно также добавить в табличный документ программно, как, например, в следующем фрагменте:

Чтобы обратиться к сводной таблице средствами встроенного языка, нужно воспользоваться свойством-коллекцией "ВстроенныеТаблицы" объекта "ТабличныйДокумент", например:

Самое главное свойство сводной таблицы — это свойство " ИсточникДанных ", которое принимает значения типа "РезультатЗапроса" или "ПостроительОтчета". Это свойство определяет, откуда сводная таблица будет брать данные для отображения. Итоги запроса становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями.

Следующий фрагмент программы был использован для формирования приведенной выше сводной таблицы:

Управление сводной таблицей из встроенного языка

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

Следующий фрагмент включает измерение "Номенклатура" (по строкам), измерение "ПодразделениеКомпании" (по колонкам) и ресурс "СуммаПродажи" (область данных):

Здесь мы воспользовались следующими свойствами-коллекциями объекта "СводнаяТаблица":

Свойство-коллекция Описание Поля

Коллекция всех доступных полей сводной таблицы, включая все измерения и ресурсы (в том числе выключенные). Эта коллекция заполняется при назначении источника данных на основе итогов в запросе. Функции из предложения ИТОГИ становятся ресурсами, а группировочные поля, по которым они подсчитываются, становятся измерениями.

Используя свойства объекта "ПолеСводнойТаблицы" можно определить тип поля (измерение или ресурс), тип значения (объект "ОписаниеТипов"), прочитать или установить количество открытых уровней.

Строки Коллекция отображаемых полей сводной таблицы, расположенных в строках (сверху вниз). Колонки Коллекция отображаемых полей сводной таблицы, расположенных в колонках (слева направо). Данные Коллекция отображаемых полей сводной таблицы, расположенных в области данных.

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

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

Следующие свойства позволяют управлять внешним видом сводной таблицы:

  • ОтображатьПодписиИтогов (отображать строку типа "Отдел розничной торговли Итог")
  • ПоложениеИтоговСтрок (сверху или снизу)
  • ПоложениеИтоговКолонок (слева или справа)
  • Автофиксация (фиксация названий строк и колонок при прокрутке)

Эти свойства можно также редактировать интерактивно через палитру свойств:


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

Рассмотрим и последний метод объекта "СводнаяТаблица" — это метод ПолучитьЗначения. Данный метод принимает в качестве параметра область ячеек, а возвращает структуру, содержащую данные сводной таблицы, расположенные в этой области, например:

При этом ключи структуры будут содержать имена полей (измерений и ресурсов), а значения структуры — значения измерений и ресурсов, как показано на следующем рисунке:

Постраничный вывод в табличный документ

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

Метод табличного документа ПроверитьВывод()

Объект ТабличныйДокумент имеет метод ПроверитьВывод() , предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина , вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод.

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

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

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

2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице - выводим строку области;
2.3. иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;

3. выводим подвал отчета.

Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:

Метод табличного документа ПроверитьПрисоединение()

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

Основы формирования табличного документа на основе макета

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

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

Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".

Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).

Общая схема

Общая схема формирования печатной формы на основе макета:

  1. Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
  2. Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
  3. Получение макета в переменную (метод ПолучитьМакет).
  4. Получение областей макета (метод ПолучитьОбласть).
  5. Заполнение параметров области (свойство Параметры).
  6. Вывод области в табличный документ (методы Вывести и Присоединить).
  7. Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
  8. Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

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

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

Процедура Печать(ТабДок) Экспорт

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

//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");

//получим область "Заголовок" как новый табличный документ (!)
Область = Макет. ПолучитьОбласть ("Заголовок");

//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;

//выведем заполненную область "Заголовок" в табличный документ
ТабДок. Вывести (Область);

//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");

//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл

//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);

//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);

КонецЦикла;

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

//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;

//покажем табличный документ на экране
ТабДок. Показать ();

Всем привет! Делаю печатную форму документа, в котором есть таблица с начислениями (столбцы: ОКТМО, СуммаПлаты, НазначениеПлатежа).

Сейчас это примерно так выглядит:

ОКТМО Сумма НазначениеПлатежа
12345 23 .
12345 31 .
12345 41 .
654789 54 .
789 78 .

И есть только общий итог по документу.

Мне нужно в печатную форму добавить четвертый столбец, куда выводилась бы итоговая сумма по каждому ОКТМО. Как это можно сделать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Как вывести во внешнюю печатную форму сумму с проводки документа
Добрый день! Подскажите, как вывести во внешнюю печатную форму сумму с проводки документа.


1С: ЗУП 3.1. Как вывести в печатную форму должность в нужном падеже?
1С: ЗУП 3.1. Как вывести в печатную форму должность в нужном падеже, используя стандартные функции?

Как значение из запроса вывести в печатную форму табличного документа?
Здравствуйте, мне нужно получить остатки перед проведением документа. Худо бедно слепил запрос в.

LusineMkrtumyan, создайте 4 поле в пакете и кодом просуммируйте.

dggrom, общую сумму по документу я считала так:

А вот как тут прописать, чтоб он остановился, когда поменяется ОКТМО - вопрос.. LusineMkrtumyan, почитайте про итоги в запросах. Это поможет.

Всем добрый вечер!

Ошибка: Нельзя рассчитывать итоги по вложенным таблицам "НачислениеОплаты.Начисления.ОКТМО"

ОбластьНачисления.Параметры.ВсегоПоОКТМО = Выборка.СуммаПоОКТМО

polax, добрый день! Спасибо большое . Сейчас вот такая ошибка:

<(16, 4)>: Невозможно определить поле для записи результата
<<?>>СУММА (НачислениеОплаты.Сумма) как СуммаПоОКТМО

Параметр ВсегоПоОКТМО определен в макете? Есть для него столбец?

Добавлено через 2 минуты
Итоги посчитает не построчно. Итоги общие по всем ОКТМО

Параметр ВсегоПоОКТМО определен в макете? Есть для него столбец?

Мне нужно по каждому ОКТМО по-отдельности.. Общую сумму я уже вывела в макет..

LusineMkrtumyan, создайте 4 поле в пакете и кодом просуммируйте. polax, если бы я из нее все поняла, то не стала бы дальше тему двигать вверх) LusineMkrtumyan, Группируйте по ОКТМО и первый проход обработки запроса делайте по группировкам Сумму по октмо выводите в свою колонку. Посмотрите в гугле Обход запроса по группировкам

Подниму тему, я так и не разобралась вопросом(

Так? Если да, то что дальше с этим делать?

Добавлено через 56 минут
Переменная не определена (Результат)

Результат = Запрос.Выполнить(). Вам будет очень сложно, лучше нажмите программиста

Поле объекта не обнаружено (Начисления)

Добавлено через 3 минуты
polax, я научусь) когда-нибудь смарите.
можете вот так, как я пример привёл
но так можно запутаться
я бы два раза сделал
запрос выполнить выбрать
а потом запрос сбросить - второй раз не считает, просто сбрасывает текущую позицию , где стоит головка считывания, на ноль
и тогда уже написать - обход по группировкам
и оттуда выбирать

Всем доброе утро! Вы меня простите, но я снова тут.

Вроде, вывела итог, НО! в Макете показан итог только по 1 ОКТМО. А у меня в документе для примера их 2. Где я опять свернула не туда?

а точно две?
напишите вместо вывести сообщить(выборкаоктмо.сумма) и зазырьте количество

Yulunga, да, точно 2. Что-то у меня не выводится ничего(

Вы имели в виду написать Сообщить(ВыборкаОКТМО.Сумма) вместо ТабДок.Вывести(ОбластьНачисления)? Или что-то другое?

Вывести печатную форму на одном листе, а не на 3х
Доброго времени суток. Начал изучать 1С, прошел базовый курс лекций, дали задание на пробу пера. .

Как подвесить внешнюю печатную форму?
Напшел внешнюю печатную форму, как ее подвесит в камин к кнопке печать?

Как повернуть печатную форму на 90 градусов
Можно ли макет выводимый на печать повернуть на 90 градусов. заранее спасибо

Как добавить текст в печатную форму
Здравствуйте! Вот код обработки ПФ, нужно в макет добавить текст (см. рисунок), но после проведения.

Как создать простую печатную форму?
Вот нашел один пример, наверно проще не бывает? ТабДок = Новый ТабличныйДокумент; Макет =.

Как в БД формировать печатную форму в WORD
Пожалуйста помогите! Как из БД ACCESS формировать шаблон в WORD? ОЧЕНЬ ПРОШУ ПОМОЩИ! .

Читайте также: