заполнить табличный документ на форме 1с

Программирование в 1С для всех

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

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

Пример с отчетом

Реализуем самый простой вариант отчета, который будет без какой-то смысловой нагрузки, призванный просто показать, как работает табличный документ на управляемой форме. В основном все современные отчеты делают на СКД, но этот мы сделаем по «старинке», используя табличный документ. Для этого создадим объект Отчет и подчиненный ему макет табличного документа всего с одной областью.

заполнить табличный документ на форме 1с

Подробнее о том, как создается и оформляется макет табличного документа, читайте в этой статье:

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

заполнить табличный документ на форме 1с

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

заполнить табличный документ на форме 1с

Создадим команду управляемой формы, и поместим её на форму в виде кнопки.

заполнить табличный документ на форме 1с

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

Подробнее о заполнении табличных документов читайте в этой статье:

И всё, если мы сейчас попробуем выполнить нашу команду, то отчет заполнится нужными данными.

заполнить табличный документ на форме 1с

Пример с печатной формой документа

А сейчас, мы доработаем вывод печатной формы документа, который мы делали в статье ранее:

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

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

заполнить табличный документ на форме 1с

У этой формы создадим реквизит с типом ТабличныйДокумент, разместим его на форме, а также поменяем заголовок формы.

заполнить табличный документ на форме 1с

Следующим шагом, создадим параметр ТабДок с типом ТабличныйДокумент.

заполнить табличный документ на форме 1с

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

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

Перейдем в модуль команды документа, которую мы создали в предыдущей статье.

заполнить табличный документ на форме 1с

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

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

Всё! На этом доработка команды закончена. Можно проверить, как работает открытие нашей формы.

заполнить табличный документ на форме 1с

Причем, форму мы можем открыть, как с общего списка документов, так и из нужного нам документа.

заполнить табличный документ на форме 1с

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

заполнить табличный документ на форме 1сИзучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

заполнить табличный документ на форме 1с

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

Промо-код на скидку в 15% — 48PVXHeYu

Источник

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

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

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

заполнить табличный документ на форме 1с

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

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

Общая схема

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основные методы

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

Источник

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

Недавно появилась у меня задача получить данные из MS SQL и загрузить их в 1СБП 3.0. И если задачу по получению данных я выполнил достаточно быстро, спасибо //infostart.ru/public/137872/, то с проблемой вывода этих данных на форму для визуального контроля как-то не складывалось. ТЗ на управляемой форме отображаться никак не хотела. Пришлось по-быстрому сделать табличный документ на форме и заполнять его.

Но, не бросив первоначальную идею и потратив вечер на поиск, как это правильно сделать, натыкался только на программное создание элементов на форме, что в конце-концов и пришлось сделать, но упростив для себя модуль. Я заранее вывожу нужные реквизиты на форму, чтобы это не определять программно, и точно видеть, где потом отобразятся мои данные.

заполнить табличный документ на форме 1с

Хотя на форме ТЗ и не видна, так как нет ни одной колонки, но после выполнения все встает на свои места.

В итоге предлагаю два варианта вывода ТЗ на Форму через ТЗ и через Табличный документ (чтобы можно было скопировать).

Модуль выполняется &НаСервере в форме объекта.

P.S. Здесь после всех своих поисков наткнулся на похожую статью

Специальные предложения

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

заполнить табличный документ на форме 1с

На примере вывода в реквизит с типом «ТаблицаЗначений» я написал всего одну процедуру и теперь ее могут использовать без допилов все желающие в любом коде, а код для вывода нужной ТЗ на нужную форму теперь состоит всего из 2-х строк.

Источник

Табличный документ

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

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

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

заполнить табличный документ на форме 1с

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

заполнить табличный документ на форме 1с

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

заполнить табличный документ на форме 1с

Группировки

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

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

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

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

заполнить табличный документ на форме 1с

Расшифровки

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

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

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

заполнить табличный документ на форме 1с

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

Примечания

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

заполнить табличный документ на форме 1с

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

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

заполнить табличный документ на форме 1с

Компактный документ

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

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

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

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

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

заполнить табличный документ на форме 1с

Сохранение

Поскольку табличный документ, чаще всего, используется для формирования выходных документов, он может быть сохранен в файл на диске для последующего использования или переноса на другие компьютеры. Табличный документ может быть сохранен как в собственном формате, так и экспортирован в другие форматы хранения данных, в том числе в формат документов Microsoft Office (*.xlsx, *.docx), в формат электронной таблицы OpenDocument (*.ods) или в формат электронных документов Adobe (*.pdf):

заполнить табличный документ на форме 1с

Редактор табличного документа

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

Источник

Программирование в 1С для всех

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

Заполнение табличной части 1С 8.3

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

заполнить табличный документ на форме 1с

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

заполнить табличный документ на форме 1с

Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.

При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.

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

Очистка табличной части документа 1С 8.3

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

После выполнения этого метода вся табличная часть будет очищена.

Текущая строка табличной части 1С 8.3

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

заполнить табличный документ на форме 1с

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

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

заполнить табличный документ на форме 1с

Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.

заполнить табличный документ на форме 1с

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

Ещё пример: я создал команду, которая должна увеличивать количество в текущий строке табличной части в два раза и пересчитывать сумму. Эта команда размещена в командной панели таблицы и имеет следующий код:

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

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

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

В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.

Обход табличной части 1С

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

Остальные статьи по теме конфигурирования в 1С:

Более подробно и основательно конфигурирование в 1С дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

заполнить табличный документ на форме 1с

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

Промо-код на скидку в 15% — 48PVXHeYu

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *