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

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

  • автор:

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

есть ТД который формируется по формату EXCEL (шрифты, размеры колонок и т.д.) менять это нельзя

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

теперь вопрос — как поменять масштаб программно?

зы
варианты которые мне НЕ подходят
— sendKey (не работает на клиенте, запрещены)
— МасштабПечати (это для печати а не для элемента формы)
— РежимМасштабированияПросмотра (там нет уменьшения)

запусти программу Лупа

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

примерно это как кассир в ашане.

(2) Выводи в HTML, там нормально браузер масштабирует

в XDTO табличного документа есть свойство ViewSettings, но оно равно неопределено, подозреваю, что можно сделать что-то вроде

мСер = СериализаторXDTO.ЗаписатьXDTO(ТД)
мСер.ViewSettings = .
ТД = ПрочитатьXDTO(мСер);

(5) Есть подозрение, что это (масштаб отображения) вообще не свойство ТД, а свойство элемента формы.

Пишут что можно уменьшать РежимомПредварительногоПросмотра

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

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

(8) это действует только на окно предварительного просмотра а не на табличный документ
придётся разрешить SendKeys

Можно ещё попробовать так:

в конфигураторе для поля таб.док. выставить масштаб 50% и в свойствах для «ТабличныйДокумент» установить СохранятьСвойстваОтображения=Истина

сп
ФормаКлиентскогоПриложения (ClientApplicationForm)
Масштаб (Scale)
Доступен, начиная с версии 8.3.8.
Использование:
Чтение и запись.
Описание:
Тип: Число.
Содержит масштаб формы.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.8.

мСер = СериализаторXDTO.ЗаписатьXDTO(мТД);
мСер.viewSettings = Получить_viewSettings();
мСер.viewSettings.scale = 50;
Меню = СериализаторXDTO.ПрочитатьXDTO(мСер);

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

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

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

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

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

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

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

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

Именованные области

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

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

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

Примечания

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

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

Группировки

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

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

Графические объекты

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

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

Кроме этого редактор поддерживает возможность группировки (разгруппировки) графических объектов и задания имен графических объектов.

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

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

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

Использование OLE-объектов

Поддержка работы с OLE-объектами является универсальной возможностью, позволяющей внедрять в табличные документы объекты, созданные в других Windows-приложениях. Например, это может быть лист Word, рисунок CorelDraw или лист Excel. Использование механизма OLE позволяет редактировать внедренные объекты так, как будто разработчик находится в «родном» приложении, в котором создан внедренный объект:

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

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

Диаграммы

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

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

Использование этих объектов позволяет улучшить оформление выходных документов и повысить наглядность отображаемой информации:

Как изменить табличный документ в 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С 8.3, 8.2 (в примерах)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Общая форма

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

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

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

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

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

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТабличныйДокументФормы = Параметры.ТабДок; КонецПроцедуры 

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

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

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

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

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

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

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

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

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

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

Более подробно и основательно разработка в 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

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

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

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