Как изменить табличный документ в 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С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
