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

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

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

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

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

Отчет с макетом табличного документа

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

Создание и оформление макета табличного документа

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

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

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

Элемент формы поле табличного документа

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

Команда управляемой формы

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

&НаСервере
Процедура ПечатьНаСервере()
    МакетТД = Отчеты.НашОтчет.ПолучитьМакет("Макет");
    ОбластьШапка = МакетТД.ПолучитьОбласть("Область");
    ТабДок.Вывести(ОбластьШапка);
КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)
    ПечатьНаСервере();
КонецПроцедуры

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

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

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

Вывод табличного документа в 1с предприятии

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

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

Создание и вывод печатной формы документа

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

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

Общая форма

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

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    ТабличныйДокументФормы = Параметры.ТабДок;

КонецПроцедуры

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

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

Создание печатной формы документа

Открытие модуля команды

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

&НаСервере
Функция ПолучитьТабличныеДокументы(МассивДокументов)
	 Возврат Документы.ПриходТовара.СформироватьПечатныйДокумент(МассивДокументов);
КонецФункции	

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ТабличныйДокумент = ПолучитьТабличныеДокументы(ПараметрКоманды);
	Если ТабличныйДокумент = Неопределено Тогда 
		Возврат
	КонецЕсли;
	
	новФормПараметры = Новый Структура("ТабДок",ТабличныйДокумент);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыводаПечатнойФормы",
				  новФормПараметры,,
				  Новый УникальныйИдентификатор,,,,
				  РежимОткрытияОкнаФормы.Независимый);
	
КонецПроцедуры

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

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

Открытие общей управляемой формы для печати

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

Открытие общей управляемой формы для печати

Использование расшифровки табличного документа
Расшифровка в табличном документе 1С 8.3

Как использовать расшифровку табличного документа на управляемой форме 1С
Расшифровка в табличном документе на управляемой форме 1С 8.3

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

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

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

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

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

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

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

  Маркет42 - Место для твоих разработок  

Я
   elFurion

27.07.11 — 14:44

Что указать первым параметром в Вывести, чтобы табличный документ отобразился в реквизите «ТабличныйДокумент» управляемой формы?

С обычным приложением проще было ТабДок.Вывести(ТабличныйДокумент). А в управляемом так не получается

НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

   …

   ТабДок.Вывести(<?>);

КонецПроцедуры

  

Партнерская программа EFSOL Oblako

   Wobland

1 — 27.07.11 — 14:51

а не Показать() ли?

   elFurion

2 — 27.07.11 — 14:56

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

   Wobland

3 — 27.07.11 — 15:02

ТабДок=ЭлементыФормы.ПолеТабДока;

но это 8.1

   Dem1urg

4 — 27.07.11 — 15:03

ИмяТвоегоРеквизитаФормы.Вывести(ИмяПеременнойТабличныйДокумент);

   elFurion

5 — 27.07.11 — 15:41

Нашел ответ в демонстрационной конфигурации «Управляемое приложение». Решение оказалось до ужаса простым:

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

   …

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

о_О

Спасибо всем кто откликнулся!

   Юрий Лазаренко

6 — 27.07.11 — 15:43

(5) Все гениальное — простынь!

   Ирис_яркая

7 — 27.07.11 — 15:44

а нельзя -взять да вывести прямо в форме?

  

Юрий Лазаренко

8 — 27.07.11 — 16:04

(7) Дык в итоге с помощью (5) именно это и получаем — выводим прямо в форму

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

2017-12-19T18:34:15+00:00<<< XML ZIP WORD DBF HTTP FTP ТекстовыйДокумент ТабличныйДокумент

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Как создать табличный макет в 1С.

Оглавление (нажмите, чтобы раскрыть)

&НаКлиенте
Процедура ФормируемПечатнуюФормуИзТабличногоМакета(Команда)
 
    // В макетах обработки у нас определен макет с именем
    // ТабличныйМакет и типом ТабличныйДокумент.
    // Вот как создаются такие макеты:
    // helpme1s.ru/kak-sozdat-tablichnyj-maket-v-1s
 
    // Сформируем печатную форму на основе этого макета.
 
    // Важно понимать, что сама печатная форма - это тоже
    // табличный документ, просто составленный из кусочков других
    // документов (макетов).
 
    // Печатная форма формируется на сервере, а затем
    // возвращается обратно на клиент...
 
    ПечатнаяФорма = СформироватьПечатнуюФормуИзТабличногоДокумента();
 
    НастроитьКолонтитулы(ПечатнаяФорма);
    НастроитьПараметрыПечати(ПечатнаяФорма);
 
    // ... чтобы вывести её пользователю в виде отдельного окна
 
    ПечатнаяФорма.Показать(
        "Наш отчёт"  // заголовок окна с отчётом
    );
 
    // после показа пользователь может сам и распечатать
    // и сохранить эту форму, но ...
 
    // .. мы можем программно сами сохранить форму в файл в нужном формате
 
    //ПечатнаяФорма.Записать(
    //    СлужебныйНаКлиенте.СоздатьПапкуДляЭкспериментов() + "Наш отчёт.xls",
    //    ТипФайлаТабличногоДокумента.XLS
    //);
 
    // .. или сразу отправить её на принтер
 
    //ПечатнаяФорма.Напечатать(
    //    РежимИспользованияДиалогаПечати.НеИспользовать);
 
КонецПроцедуры
 
/// Как сформировать печатную форму из табличного документа в 1с 8.3, 8.2
 
&НаСервере
Функция СформироватьПечатнуюФормуИзТабличногоДокумента()
 
    // Получаем макет, сохраненный в нашей обработке.
    Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет("ТабличныйМакет");    
 
    // Вот так можно изменить табличный макет программно,
    // уже после его создания.
    МеняемТабличныйДокументПрограммно(Макет);
 
    ПечатнаяФорма = Новый ТабличныйДокумент;
 
    // # Шапка документа #
 
    // Получаем область "Шапка" из макета.
    Шапка = Макет.ПолучитьОбласть("Шапка");
    // Заполняем её параметры.
    Шапка.Параметры.Номер = 1;
    Шапка.Параметры.Дата = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");    
    // Выводим её в нашу печатную форму.
    ПечатнаяФорма.Вывести(Шапка);
 
    // # Заголовок табличной части #
    ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьЗаголовок");
    ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок);
 
    // # Строки табличной части #
 
    // Если при выводе строк наша таблица не поместится на страницу -
    // будем повторять заголовок таблицы в начале страницы.
    // Выводим с 3 по 4 строки - это как раз заголовок таблицы.
    // Использовать область "ТабличнаяЧастьЗаголовок" не получится,
    // так как нужны именно строки целиком.
    ПечатнаяФорма.ПовторятьПриПечатиСтроки = Макет.Область(3,,4);
 
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьСтрока");
    СсылкаНаКлубнику = Справочники.Номенклатура.НайтиПоНаименованию("Клубника");
 
    // Сгруппируем строки таблицы в сворачивающийся блок.
    ПечатнаяФорма.НачатьГруппуСтрок("Товар", Истина);
 
    Для Шаг = 1 По 100 Цикл
        ТабличнаяЧастьСтрока.Параметры.Номенклатура = СсылкаНаКлубнику;
        ТабличнаяЧастьСтрока.Параметры.Количество = Шаг;
 
        // В макете мы выделили ячейку с номенклатурой и прописали
        // её параметр расшифровки "РасшифровкаНоменклатуры".
        // Заполним этот параметр, чтобы когда пользователь кликнет
        // два раза по товару - открылась его форма.
        // Дополнительный пример обработки расшифровки - см. ниже,
        // когда мы выводим табличный документ в поле формы.
        ТабличнаяЧастьСтрока.Параметры.РасшифровкаНоменклатуры = СсылкаНаКлубнику;
 
        ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
    КонецЦикла;
 
    // Закончим начатую группировку.
    ПечатнаяФорма.ЗакончитьГруппуСтрок();    
 
    Возврат ПечатнаяФорма;
 
КонецФункции
 
/// Как настроить колонтитулы печатной формы в 1с 8.3, 8.2
 
&НаКлиенте
Процедура НастроитьКолонтитулы(ПечатнаяФорма)
 
    // Верхний колонтитул.
    ПечатнаяФорма.ВерхнийКолонтитул.Выводить = Истина;
    ПечатнаяФорма.ВерхнийКолонтитул.НачальнаяСтраница = 1;
    ПечатнаяФорма.ВерхнийКолонтитул.ТекстВЦентре = "Этот отчёт сделан нами для тестов";
    ПечатнаяФорма.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
 
    // Нижний колонтитул.
    ПечатнаяФорма.НижнийКолонтитул.Выводить = Истина;
    ПечатнаяФорма.НижнийКолонтитул.ТекстСправа = "[&НомерСтраницы] из [&СтраницВсего]";        
    ПечатнаяФорма.НижнийКолонтитул.ТекстВЦентре = "[&Дата][&Время]";
 
    // Использованные выше конструкции [&НомерСтраницы] и т.п. предопределены
    // платформой.
 
КонецПроцедуры
 
/// Как настроить параметры печати табличного документа в 1с 8.3, 8.2
 
&НаКлиенте
Процедура НастроитьПараметрыПечати(ПечатнаяФорма)
 
    // Можно установить конкретный масштаб:
    ПечатнаяФорма.МасштабПечати = 60; // 60%
    // Или указать вариант "по ширине страницы"
    ПечатнаяФорма.АвтоМасштаб = Истина;
 
    // Поля страницы
    ПечатнаяФорма.ПолеСлева = 10;
    ПечатнаяФорма.ПолеСверху = 10;
    ПечатнаяФорма.ПолеСправа = 10;
    ПечатнаяФорма.ПолеСнизу = 10;
 
    // Партрет или альбом (ландшафт).
    ПечатнаяФорма.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
 
    // Двусторонняя печать позволяет очень экономить бумагу.
    ПечатнаяФорма.ДвусторонняяПечать = ТипДвустороннейПечати.Нет;
 
    // Количество страниц на листе при выводе документа на печать.
    // 1 - одна страницы, 2 - две, 0 - автоматическое определение.
    ПечатнаяФорма.ЭкземпляровНаСтранице = 1;
 
    // Количество копий документа, которое нужно напечатать.
    ПечатнаяФорма.КоличествоЭкземпляров = 1;    
 
    // Если печатаем несколько экземпляров - очень удобная галка.
    ПечатнаяФорма.РазборПоКопиям = Истина;
 
    // Не будем отображать сетку пользователю.
    ПечатнаяФорма.ОтображатьСетку = Ложь;
 
    // А также запретим редактирование ячеек отчёта.
    ПечатнаяФорма.ТолькоПросмотр = Истина;
 
    // Зафиксируем верхние 4 строки таблицы, чтобы
    // пользователю было удобно прокручивать
    // вниз печатную форму.
    ПечатнаяФорма.ФиксацияСверху = 4;
    ПечатнаяФорма.ФиксацияСлева = 0;    
 
КонецПроцедуры
 
/// Как изменить табличный документ программно в 1с 8.3, 8.2
 
&НаСервере
Процедура МеняемТабличныйДокументПрограммно(Макет)
 
    ОбластьЯчеек = Макет.Область("Шапка");
    ОбластьЯчеек.ЦветТекста = Новый Цвет(255, 0, 0);
    ОбластьЯчеек.ГраницаСверху =
        Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.БольшойПунктир, 2);
    ОбластьЯчеек.ГраницаСлева =
        Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.БольшойПунктир, 2);
    ОбластьЯчеек.ГраницаСправа =
        Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.БольшойПунктир, 2);
    ОбластьЯчеек.ГраницаСнизу =
        Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.БольшойПунктир, 2);    
    ОбластьЯчеек.Примечание.Текст = "Привет";    
 
    // и т.д. и т.п.
 
КонецПроцедуры
 
/// Как в обработать расшифровку в отчёте в 1с 8.3, 8.2
 
&НаКлиенте
Процедура ПолеСПечатнойФормойОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
 
    // Дополнительная обработка расшифровки возможна только
    // для табличного документа, который выведен на форму.
 
    // Это событие мы прописали для элемента формы, который связан
    // с реквизитом, имеющим тип "ТабличныйДокумент".
 
    Сообщить("Обработка расшифровки");
    Сообщить(Элемент.ТекущаяОбласть.Имя);
    Сообщить(Расшифровка);
 
    // Мы не хотим, чтобы открывалось значение расшифровки,
    // которое мы программно прописали в печатной форме.
    // Остановим дальнейшую обработку расшифровки.
    СтандартнаяОбработка = Ложь;
 
КонецПроцедуры
 
/// Как вывести табличный документ на форму в 1с 8.3, 8.2
 
&НаКлиенте
Процедура ВыводимТабличныйДокументНаФорму(Команда)
 
    // Предварительно создаём на форме реквизит с именем
    // "ПолеСПечатнойФормой" и типом ТабличныйДокумент,
    // а затем перетаскиваем его в элементы формы.
 
    ВыводимТабличныйДокументНаФормуНаСервере();
 
КонецПроцедуры
 
&НаСервере
Процедура ВыводимТабличныйДокументНаФормуНаСервере()
 
    // Формируем табличный документ.
    ПечатнаяФорма = СформироватьПечатнуюФормуИзТабличногоДокумента();
 
    // Выводим его в соотв. реквизит формы.
    ПолеСПечатнойФормой.Очистить();    
    ПолеСПечатнойФормой.Вывести(ПечатнаяФорма);
    // После этого он автоматически отобразится
    // в поле формы, с которым он связан.
 
КонецПроцедуры
 
/// Как использовать табличный документ для ввода данных в 1с 8.3, 8.2
 
&НаКлиенте
Процедура НастраиваемТаблицуДляВводаДанных(Команда)
 
    // В начале выводим в поле формы табличный документ
    // из макета с именем "ТабличныйМакетДляВвода"
 
    НастраиваемТаблицуДляВводаДанныхНаСервере();
 
    // После этого пользователь должен ввести значение,
    // а мы его получим в коде ниже.
 
КонецПроцедуры
 
&НаСервере
Процедура НастраиваемТаблицуДляВводаДанныхНаСервере()
 
    ПолеСПечатнойФормой.Очистить();
    Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет("ТабличныйМакетДляВвода");
    Форма = Макет.ПолучитьОбласть("ФормаВвода");    
    ПолеСПечатнойФормой.Вывести(Форма);
 
КонецПроцедуры
 
&НаКлиенте
Процедура УзнатьКакойЖеТоварВыбралПользователь(Команда)
 
    // Имя ячейки ввода мы задали в макете.
    ПолеВвода = ПолеСПечатнойФормой.Область("ПолеТовар");    
 
    Если ПолеВвода.Значение.Пустая() Тогда
        Сообщить("Укажите товар в табличной форме ввода!");
    Иначе
        Сообщить("Вы выбрали " + ПолеВвода.Значение);
    КонецЕсли;
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Как создать табличный макет в 1С.

Работа с табличным документом в языке 1С 8.3, 8.2 (в примерах)

<<< XML ZIP WORD DBF HTTP FTP ТекстовыйДокумент ТабличныйДокумент

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

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

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

Создание печатной формы из табличного документа в 1С 8.3:

&НаКлиенте
Процедура СозданиеПечатнойФормыИзТабличногоДокумента(Команда)ФормаПечати = СозданиеПечатнойФормыИзТабличногоДокументаНаСервере();НастройкаКолонтитуловПечатнойФормы(ФормаПечати);
   
НастройкаПараметровПечатиТабличногоДокумента(ФормаПечати);ФормаПечати.Показать(«Отчет по долгам»);// Сохранение «Отчета по долгам»
   
ФормаПечати.Записать(«D:StoragedataОтчетПоДолгам.xls», ТипФайлаТабличногоДокумента.XLS);// Печать «Отчета по долгам» сразу на принтер
   
ФормаПечати.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

КонецПроцедуры

&НаСервере
Функция СозданиеПечатнойФормыИзТабличногоДокументаНаСервере()Макет = ЭтотОбъект.ПолучитьМакет(«Макет_Табл»);// Изменение табличного макета после его создания.
   
ПрограммноеИзменениеТабличногоДокумента(Макет);ФормаПечати = Новый ТабличныйДокумент;// Получение области и макета по имени
   
Шапка = Макет.ПолучитьОбласть(«Шапка»);
    
// Заполнение параметров
   
Шапка.Параметры.Дата = ТекущаяДата();
   
Шапка.Параметры.Номер = 2020;
    
// Вывод шапки в документ
   
ФормаПечати.Вывести(Шапка);// Заголовок табличной части.
   
ЗаголовокТ = Макет.ПолучитьОбласть(«ТЧ_Заголовок»);
   
ФормаПечати.Вывести(ЗаголовокТ);ТЧ_Строка = Макет.ПолучитьОбласть(«ТЧ_Строка»);
   
SSDIntelOptaneDC = Справочники.Номенклатура.НайтиПоНаименованию(«SSD Intel Optane DC P4800X 1.5TB»);// Группировка строк таблицы в сворачивающийся блок
   
ФормаПечати.НачатьГруппуСтрок(«Номенклатура», Истина);

    Для

Х = 1 По 100 Цикл
       
ТЧ_Строка.Параметры.Номенклатура = SSDIntelOptaneDC;
       
ТЧ_Строка.Параметры.Количество = Х;// Параметр расшифровки «РасшифровкаНоменклатуры» — для открытия формы номенклатуры из макета по клику
       
ТЧ_Строка.Параметры.РасшифровкаНоменклатуры = SSDIntelOptaneDC;
       
ФормаПечати.Вывести(ТЧ_Строка);
    КонецЦикла;
// Конец группировки
   
ФормаПечати.ЗакончитьГруппуСтрок();

    Возврат

ФормаПечати;

КонецФункции

Программное изменение табличного документа в 1С 8.3:

&НаСервере
Процедура ПрограммноеИзменениеТабличногоДокумента(Макет)ОбластьШапки = Макет.Область(«Шапка»);
   
ОбластьШапки.ЦветТекста = Новый Цвет(0, 255, 0);
   
ОбластьШапки.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
   
ОбластьШапки.ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
   
ОбластьШапки.ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
   
ОбластьШапки.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
   
ОбластьШапки.Примечание.Текст = «Тут текст примечания…»;

КонецПроцедуры

Настройка параметров печати табличного документа в 1С 8.3:

&НаКлиенте
Процедура НастройкаПараметровПечатиТабличногоДокумента(ФормаПечати)// Поля страницы
   
ФормаПечати.ПолеСлева = 20;
   
ФормаПечати.ПолеСверху = 5;
   
ФормаПечати.ПолеСправа = 5;
   
ФормаПечати.ПолеСнизу = 5;ФормаПечати.АвтоМасштаб = Истина; // Установка авто-масштаба: «по ширине страницы»
   
ФормаПечати.МасштабПечати = 85; // ИЛИ Установка определенного масштаба 85%

    // Ориентация: Портрет или альбом (ландшафт)

ФормаПечати.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;// Двусторонняя печать = Да
   
ФормаПечати.ДвусторонняяПечать = ТипДвустороннейПечати.Да;// Количество страниц на листе: 0 — автоматическое определение
   
ФормаПечати.ЭкземпляровНаСтранице = 1;// Количество одинаковых копий
   
ФормаПечати.КоличествоЭкземпляров = 1;// При печати несколько экземпляров, желательно установить «Истина»
   
ФормаПечати.РазборПоКопиям = Истина;// Отключение отображения сетки в пользовательском режиме
   
ФормаПечати.ОтображатьСетку = Ложь;// Запрет редактирования ячеек отчёта
   
ФормаПечати.ТолькоПросмотр = Истина;// Фиксация двух верхних строк таблицы и одной строи слева для отображения заглавной информации при прокручивании
   
ФормаПечати.ФиксацияСверху = 2;
   
ФормаПечати.ФиксацияСлева = 1;

КонецПроцедуры

Настройка колонтитулов печатной формы в 1С 8.3:

&НаКлиенте
Процедура НастройкаКолонтитуловПечатнойФормы(ФормаПечати)ФормаПечати.ВерхнийКолонтитул.Выводить = Истина;
   
ФормаПечати.ВерхнийКолонтитул.НачальнаяСтраница = 1;
   
ФормаПечати.ВерхнийКолонтитул.ТекстСлева = «Отчет по реализации и полученной прибыли»;
   
ФормаПечати.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Центр;ФормаПечати.НижнийКолонтитул.Выводить = Истина;
   
ФормаПечати.НижнийКолонтитул.ТекстВЦентре = «[&Дата][&Время]»;
   
ФормаПечати.НижнийКолонтитул.ТекстВЦентре = «[&НомерСтраницы] из [&СтраницВсего]»;

КонецПроцедуры

Обработка расшифровки отчета в 1С 8.3:

&НаКлиенте
Процедура ОбработкаРасшифровкиОтчета(Элемент, Расшифровка, СтандартнаяОбработка)// Возможна только для табличного документа, который выведен на форму
    // Необходимо прописать для элемента формы, который связан с «ТабличныйДокумент»
   
Сообщить(Расшифровка);
   
Сообщить(Элемент.ТекущаяОбласть.Имя);
   
СтандартнаяОбработка = Ложь;

КонецПроцедуры

Вывод табличного документа на форму в 1С 8.3:

&НаКлиенте
Процедура ВыводТабличногоДокументаНаФорму(Команда)ВыводТабличногоДокументаНаФормуНаСервере();
   
// На форме нужно создать реквизит с именем «ПолеВвода», тип «ТабличныйДокумент»
    // и перенести на элементы формы.
КонецПроцедуры&НаСервере
Процедура ВыводТабличногоДокументаНаФормуНаСервере()// Формирование табличного документа
   
ФормаПечати = СозданиеПечатнойФормыИзТабличногоДокументаНаСервере();// Вывод табличного документа в нужный реквизит формы
   
ПолеВвода.Очистить();
   
ПолеВвода.Вывести(ФормаПечати); // Произойдет авто.отображение в поле формы (с которым связан)КонецПроцедуры

Настройка табличного документа для ввода данных в 1С 8.3:

&НаКлиенте
Процедура НастройкаТабличногоДокументаДляВводаДанных(Команда)// Вывод из макета с именем «Макет_Табл_Ввод» в поле формы ТабличногоДокумента
   
НастройкаТабличногоДокументаДляВводаДанныхНаСервере();// Получение значения после его ввода пользователем
    // см.Процедуру: ПолучениеЗначенияПослеЕгоВводаПользователемНаКлиенте
КонецПроцедуры&НаСервере
Процедура НастройкаТабличногоДокументаДляВводаДанныхНаСервере()ПолеВвода.Очистить();
   
Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет(«Макет_Табл_Ввод»);
   
Форма = Макет.ПолучитьОбласть(«ФормаДляВвода»);
   
ПолеВвода.Вывести(Форма);

КонецПроцедуры

Получение значения после его ввода пользователем в 1С 8.3:

&НаКлиенте
Процедура ПолучениеЗначенияПослеЕгоВводаПользователемНаКлиенте(Команда)// Имя ячейки для ввода задано в макете
   
ПолеОбластьВвода = ПолеВвода.Область(«ПолеТовар»);

    Если

ПолеОбластьВвода.Значение.Пустая() Тогда
       
Сообщить(«В табличной форме ввода не указана номенклатура!»);
    Иначе
       
Сообщить(«Выбрана номенклатура: » + ПолеОбластьВвода.Значение);
    КонецЕсли;

КонецПроцедуры

💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Табличный документ:

Copyright©, «Программист 1С в г.Минске», 02.06.2020

Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник

Реквизиты управляемых форм

Автор mindruk, 08 авг 2013, 11:49

0 Пользователей и 1 гость просматривают эту тему.

День добрый.

При создании внешнего отчета возник вопрос о выводе результата на форму.

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

Я его передаю как параметр  в функцию выполняемую на Сервере и заполняю данными.

Если в конце функции возвращаю ТабДок тогда могу вывести в отдельном окне — а нужно вывести на форме.

Пытался использовать ЗначениеВДанныеФормы(ТабДок,Объект.ТабДок);  :dfbsdfbsdf:

Типы совпадают — Табличный документ, но выскакивает ошибка несоответствие параметра №1  :dfbsdfbsdf:

Подскажите где я ошибаюсь — и вообще Табличный документ можно преобразовывать в реквизит?


Используйте ЗначениеВРеквизитФормы() и уберите ТабДок из объекта, не место ему там.


Убрать ТабДок из объекта — значит убрать реквизит?
И не могу нигде найти как мне правильно вывести ТабличныйДокумент созданный программно на форму.
В отдельном окне получается а на форму не очень…
Помогите разобраться пожалуйста…
Листинг примерно такой
& На Сервере \кусок
        ТаблДок = Новый ТабличныйДокумент;
   ТаблДок.Очистить();
   Макет = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»);
   Шп = Макет.ПолучитьОбласть(«Шапка»);
   Шп.параметры.ДатаОтчета = Формат(ДатаОтчета,»ДЛФ=DD»);
   ТаблДок.Вывести(Шп);
   Заг = Макет.ПолучитьОбласть(«Заголовок|Начало»);
   Кол =  Макет.ПолучитьОбласть(«Заголовок|Колонка1»);
   СтрокаВыводаНачало = Макет.ПолучитьОбласть(«Строка|Начало»);
   СтрокаВыводаКол =  Макет.ПолучитьОбласть(«Строка|Колонка1»);
   ПТР = Макет.ПолучитьОбласть(«ПустаяСтрока|Начало»);
   ПТРК = Макет.ПолучитьОбласть(«ПустаяСтрока|Колонка1»);
   \выполняю кучу действий и в итоге получаю свой документ

если я делаю Возврат(ТаблДок) — тогда на &Клиенте я могу его вывести — но в отдельном окне,а мне надо на форму

я понимаю что надо использовать ЗначениеВРеквизитФормы() но если пишу
ЗначениеВРеквизитФормы(ТаблДок,ТабДок) получается плохо — несоответствие параметра1
ТаблДок — тип Табличный документ — создаю и заполняю сам
ТабДок — тип табличный документ — реквизит на форме

:dfbbdrfb::dfbbdrfb::dfbbdrfb:


вместо ЗначениеВРеквизитФормы(ТаблДок,ТабДок)

нужно писать

ЗначениеВРеквизитФормы(ТаблДок,»ТабДок»)


{Форма.Форма.Форма(374)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
   ЗначениеВРеквизитФормы(ТаблДок,»ТабДок»);
по причине:
Недопустимое значение параметра (параметр номер ‘2’)

Час от часу не легче?!


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


Вай, шайтаномо насальнико…:o

ОГРОМНОЕ СПАСИБО :zebzdr:


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Реквизиты управляемых форм

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

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

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

Для поиска решения я создал в тестовый пример для не типовой конфигурации.

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

Реквизиты объекта
Настройки формы

Стоит обратить внимание, что на форме табличное поле связано с данными реквизита формы, а не реквизитом объекта.

Модуль формы
Модуль объекта

Также, здесь мы видим как в 1С можно выполнить на клиенте в модуле формы обращение к функции Модуля объекта. Делаем функцию в модуле объекта Экспортной. Получаем Объект через РеквизитФормыВЗначение, вызываем экспортную функцию общего модуля.

tvm
16.05.2016 15:47 Прочитано: 7821

отчет на УФ. На форме есть реквизит ТабДок- табличный документ. При команде «Показать» выдает ошибку «

{Форма.ФормаОтчета.Форма(266)}: Ошибка при вызове метода контекста (Показать) ТабДок.показать();по причине:Недопустимая операция для реквизита формы»

Код 1C v 8.3

 &НаСервере
процедура СформироватьНаСервере()
    текОбъект = РеквизитФормыВЗначение("Отчет");
    Макет = текОбъект.ПолучитьМакет("Макет1");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    // тут выполняется запрос
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

         ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

         ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);

         //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

         ТабДок.ОтображатьСетку = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
ТабДок.показать();
КонецПроцедуры

Yandex
Возможно, вас также заинтересует

Реклама на портале

safin
17.05.2016 13:21 Ответ № 1

all4cf
19.05.2016 17:47 Ответ № 2

а что ты показываешь?

тогда делай СформироватьНаСервере как функцию, в конце возврат табдок; 

а в сформировать:

Код 1C v 8.3

 &НаКлиенте
Процедура Сформировать(Команда)
  ТабДок = СформироватьНаСервере();
   ТабДок.показать();
КонецПроцедуры   
Подсказка: Для выделения Кода используйте (в редакторе).

Понравилась статья? Поделить с друзьями:
  • 1с групповое изменения реквизитов справочников
  • Bank sort code что это в банковских реквизитах
  • Яндекс такси для бизнеса личный кабинет войти
  • 1с дополнительные реквизиты документа на форму
  • Яндекс такси на огородном проезде часы работы