+7(499)-938-42-58 Москва
+7(800)-333-37-98 Горячая линия

1с 8.3 вывести в табличный документ. Работа с табличным документом

Содержание

Работа с расшифровкой в табличном документе

1с 8.3 вывести в табличный документ. Работа с табличным документом

Методические рекомендации

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

Для чего используется расшифровка и как ей пользоваться

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

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

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

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

Расшифровка может быть вызвана при помощи двойного щелчка левой кнопкой мыши, либо при помощи клавиши Enter.

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

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

Заполнение расшифровки

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

1. Непосредственно присвоив данному свойству значение.

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

Пример:

ЭлементыФормы.ПолеТабличногоДокумента1.Область(1,1).Расшифровка = “Текст расшифровки”;

В данном примере расшифровка устанавливается первой ячейке первой строки поля табличного документа.

2. Использовать параметр расшифровки и метод “Вывести”.

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

Обработка расшифровки

После того, как расшифровка заполнена, следует позаботиться об ее обработке.

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

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

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

Если стандартная обработка расшифровки не нужна, следует присвоить флагу СтандартнаяОбработка значение “Ложь”.

Работа с файлами Excel

1с 8.3 вывести в табличный документ. Работа с табличным документом

MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.

Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.

Обмен через табличный документ
Обмен через OLE
Использование COMSafeArray
Обмен через ADO
Выгрузка без программирования

Обмен через табличный документ

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

  • Записать(, ) для выгрузки данных в файл;
  • Прочитать(, ) для загрузки данных из файла.

Внимание!

Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.

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

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:

  • XLS95 — формат Excel 95;
  • XLS97 — формат Excel 97;
  • XLSX — формат Excel 2007.

Загрузка из файла осуществляется также достаточно просто:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:

Обмен через OLE

Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:

  • На компьютере конечного пользователя, если обмен происходит на стороне клиента;
  • На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.

Пример выгрузки:

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);

// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;

// Сохранение файла
Книга.SaveAs(ИмяФайла);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

Примеры чтения:

// —— ВАРИАНТ 1 ——

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Close(0);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

// —— ВАРИАНТ 2 ——

// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Application.Quit();

Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:

// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
     ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;

// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
     НомерСтроки = НомерСтроки + 1;
     ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
     Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
         Прервать;
     КонецЕсли;
КонецЦикла;

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

ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;

Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();

В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:

ДействиеКод

Источник: https://pro1c8.ru/obmen-excel-1c/

Настройка печати в 1С – 1С программист

1с 8.3 вывести в табличный документ. Работа с табличным документом

Здравствуйте дорогие читатели блога  1С Программист.

Спонсор Поста: Прошивка принтеров, заправка картриджей, ремонт принтеров в Москве. Прошивка принтера Sam­sung ML-2950ND/2955ND. Перепрошивка принтера Sam­sung ML 3300, прошивка принтеров Xerox.

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

При построении печатной формы используются следующие объекты:
1) Макет — В нем содержатся различные области для формирования печатной формы.
2) Табличный документ — Необходим для вывода печатной формы на экран.

Построение печатной формы происходит в следующем порядке: 1) Получить макет (созданный для данного объекта или общий) 2) Получаем области макета (в областях макета содержится параметр или текст) 3) Создаем табличный документ (тот объект, куда будет происходить вывод). 4) Подставляем значения в параметры и выводим области в табличный документ.

5) Отображаем табличный документ на экране.

Создание Макетов и областей макетов затрагивать сейчас не будем, а сразу перейдем к типу данных “ТабличныйДокумент”, который необходим для вывода печатной формы созданной на основании макета.
“Макет” доступен только на сервере и толстом клиенте, поэтому  для формирования печатной формы потребуется серверный вызов, Заполнение макета будем производить на сервере, а вывод на клиенте.

Пример создания простейшей печатной формы:

Макет = Документы.РеализацияТоваров.ПолучитьМакет(“Макет”);ОбластьШапка=Макет.ПолучитьОбласть(“Шапка”);ТабДок=Новый ТабличныйДокумент;ОбластьШапка.Параметры.Дата=Дата;ТабДок.Вывести(ОбластьШапка);ТабДок.

Показать( );

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

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

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

Узнайте из статьи: Как стать Программистом 1С

[yadi­rect]

Свойства Табличного Документа

Зададим для печати принтер, отличный от установленного по умолчанию.
Используем свойство Табличного документа «ИмяПринтера» которое позволяет задать имя принтера известного в системе, на который бедет выводится печать.

ТабДок.ИмяПринтера=” Samsung ML 3300 Series 5″;

Установим количество копий печатуемого документа программно.

ТабДок.КоличествоЭкземпляров=3;

Установив признак разбора по копиям для документа.

ТабДок.РазборПоКопиям=истина;

Установим через свойство «РазмерСтраницы» которое позволяет задать стандартные форматы страницы – “A3”, “A4”, “A5” (полный список в справке 1С).

ТабДок.РазмерСтраницы=”A4″;// буква А должна быть английской

Если размер бумаги нестандартен (Cus­tom — произвольный размер бумаги ) то укажем значения высоты и ширины страницы (в мм):

ТабДок.РазмерСтраницы=”Custom”;//нестандартный размерТабДок.ВысотаСтраницы=300;ТабДок.ШиринаСтраницы=300;

Зададим поля для страницы (по умолчанию поля 10мм).

ТабДок.ПолеСверху = 15; //Поле сверху 25мм,ТабДок.ПолеСлева=25;//Поле слева 25мм,

Программно управляем вывводом колонтиттула и его содержимым в 1С через свойства «ВерхнийКолонтитул» и «НижнийКолонтитул».
Пример:

ТабДок.ВерхнийКолонтитул.Выводить=истина; //будет напечатан верхний колонтитулТабДок.РазмерКолонтитулаСверху=8; //размер колонтитула 8мм (по умолчанию 10мм)ТабДок.ВерхнийКолонтитул.ВертикальноеПоложение=ВертикальноеПоложение.Верх;ТабДок.ВерхнийКолонтитул.

НачальнаяСтраница=2;//колонтитул выводится со второй страницыШрифтКолонтитула=Новый Шрифт(“Courier New”, 8,Истина,Истина, Истина);ТабДок.ВерхнийКолонтитул.Шрифт=ШрифтКолонтитула; //Жирный наклонный, подчеркнутый шрифтТабДок.ВерхнийКолонтитул.ТекстВЦентре=”Колонтитул верхний “;ТабДок.ВерхнийКолонтитул.ТекстСправа=”Стр.

[&НомерСтраницы] из [&СтраницВсего]”; //нумерация страницТабДок.ВерхнийКолонтитул.ТекстСлева=”[&Дата]”;//текущая дата

Еще пару свойств страницы:

ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;ТабДок.ЭкземпляровНаСтранице= 4; //на листе будет размещено четыре страницыТабДок.АвтоМасштаб= истина;

Если свойство АвтоМасштаб имеет значение Ложь или еще не заданно то можно указать значение масштабирования в процентах (через свойство «МасштабПечати»).

Методы Табличного Документа

Отправим на печать табличный документ непосредственно на принтер.

ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);ТабДок.Напечатать(Истина);

Перед печатью будет выведен диалог печати.

ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);ТабДок.Напечатать(Ложь);

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

ТабДок.Скрыть();

Или открываем окно для показа и редактирования табличного документа.

ТабДок.Показать(“Заявки от контрагентов”, “Заявки.mxl”);

Можно принудительно вставить разрывы страниц используя методы «ВывестиГоризонтальныйРазделительСтраниц()» и «ВывестиВертикальныйРазделительСтраниц()»

Если Не ТабДок.ПроверитьВывод(МассивВыводимыхОбластей) Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();КонецЕсли;
Более полный список по свойствам и методам Табличного Документа смотрите в справке 1С.

На платформе «1С:Предприятие 8.2» у свойств и методов идет четкое разделение по контексту исполнения. Если свойства доступны в любом контексте, то методы в основном недоступны на «Тонком» клиенте. Следовательно, оформляем документ на сервере, а отправку на печать производим в клиентской процедуре.

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

П.С. Если вам необходимо создать печатную форму или отредактировать существующую обращайтесь 1С Программист к вашим услугам.

Источник: https://1c-md.com/programmirovanie/1c-nastroika-pechati.html

Загрузка из Excel в 1С 8.3 и 8.2 для программиста – в накладные и в табличный документ

1с 8.3 вывести в табличный документ. Работа с табличным документом

MS Excel на данный момент является одной из самых распространенных и любимых программ для работы с электронными таблицами. Поэтому зачастую программистам приходится сталкиваться с просьбами пользователей загрузить Excel файл в 1С 8.3.

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

Загрузка из Excel в документ 1С

В качестве примера выберем такой документ, как «Установка цен номенклатуры» в программе 1С Бухгалтерия 3.0. Задачей будет создать документ, заполнить основные реквизиты шапки и заполнить табличную часть «Товары» из Excel файла.

1 шаг – интерфейс

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

2 шаг – процедура выбора файла

Для того чтобы открыть и выбрать Excel файл из 1С 8.3, необходимо в событии «НачалоВыбора» поля ввода вызвать ДиалогВыбораФайла с заранее установленным фильтром:

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = “Выберите excel – файл”; Диалог.ПолноеИмяФайла = “c:\”; Диалог.Фильтр = “Таблицы (*.xls,*.xlsx)|*.xls;*.

xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx”; Если Диалог.Выбрать() Тогда Объект.ФайлExcel = Диалог.

ПолноеИмяФайла; КонецЕсли;

Для работы на web-клиенте, в браузере необходимо подключить расширение работы с файлами.

3 шаг – обработка файла Excel

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

// Попытка открытия файла Excel Попытка Excel = Новый COMОбъект(“Excel.Application”); Excel.WorkBooks.Open(Объект.ФайлExcel); Исключение Сообщить(“При открытии файла произошла ошибка! Операция прервана!”); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; // Попытка выбрать первый лист // Можно указать любой другой Попытка Excel.Sheets(1).Select(); Исключение // Закрытие файла в том случае, если первый лист не найден Excel.ActiveWorkbook.Close(); Excel = 0; Сообщить(“Первый лист не найден!”); ОтменитьТранзакцию(); Возврат; КонецПопытки; // Вычисление количества строк и колонок в зависимости от версии Excel vExcel = Лев(Excel.Version, Найти(Excel.Version,”.”)-1); Если vExcel = “8” тогда КоличествоСтрок = Excel.Cells.CurrentRegion.Rows.Count; КоличествоКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13); Иначе КоличествоСтрок = Excel.Cells(1,1).SpecialCells(11).Row; КоличествоКолонок = Excel.Cells(1,1).SpecialCells(11).Column; Конецесли;

4 шаг – создание документа и заполнение его данными

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

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

// Проверка корректности заполнения колонок // Имена колонок в Excel файле должны совпадать с именами реквизитов табличной части, в которую загружаются данные // Переменная МассивКолонок содержит список номеров колонок, которые будут перегружаться МассивКолонок = Новый ТаблицаЗначений; МассивКолонок.Колонки.Добавить(“НомерКолонки”); МассивКолонок.Колонки.Добавить(“НазваниеКолонки”); Для КолонкаОтсчета = 1 по КоличествоКолонок Цикл ИмяКолонки = Excel.Cells(1, КолонкаОтсчета).Text; // Удаление лишних пробелов из имен колонок ИмяБезПробелов = СтрЗаменить(ИмяКолонки,” “,””); // Проверка наличия реквизитов табличной части “Товары” в документе “УстановкаЦен” Если НЕ НаличиеРеквизитаТЧ(ИмяБезПробелов, Метаданные.Документы.УстановкаЦенНоменклатуры, “Товары”) Тогда Сообщить(“Не найден реквизит с именем ” + ИмяБезПробелов + “! Колонка не будет загружена!”); Иначе НовСтрока = МассивКолонок.Добавить(); НовСтрока.НомерКолонки = КолонкаОтсчета; НовСтрока.НазваниеКолонки = ИмяБезПробелов; КонецЕсли; КонецЦикла;

Вызываемая функция «НаличиеРеквизитаТЧ(ИмяРекв, МетаданныеДок, ИмяТЧ)» проверяет в метаданных документа наличие реквизита выбранной нами табличной части (в данном случае «Товары») по его имени. Функция является универсальной, но если на практике задача загрузки файлов из Excel встречается не часто можно вместо нее сразу указать имена реквизитов табличной части документа для сравнения.

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

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

Источник: https://1s83.info/programmirovanie/zagruzka-iz-excel-v-1s-dlya-programmista.html

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

1с 8.3 вывести в табличный документ. Работа с табличным документом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Раньше у нас печатная форма документа выходила каждый раз в отдельном окне, так её выводила платформа 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://.com/1c_prosto
Фейсбуке: https://www..com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://.com/signum2009

Источник: https://www.1s-up.ru/tablichnyj-dokument-na-upravljaemoj-forme-v-1s-8-3/

Многостраничный Excel из 1С

1с 8.3 вывести в табличный документ. Работа с табличным документом

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

С помощью объекта пакетотображаемыхдокументов

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

// Сохраняет табличные документы в файл Эксель // // Параметры: // ИмяФайла – Строка – указывающая имя сохраняемого файла. // Можно включить полный путь; // // МассивДанных – Массив – массив соответствий: // * ДанныеЛиста – соответствие: // ** АдресВХранилище – адрес табличного документа во временном хранилище // ** Имя – имя листа. // &НаКлиенте Процедура СформироватьФайлПакетом(ИмяФайла, МассивДанных) Пакет = Новый ПакетОтображаемыхДокументов; Для каждого ДанныеЛиста Из МассивДанных Цикл АдресВХранилище = ДанныеЛиста[“АдресВХранилище”]; ЭлементПакета = Пакет.Состав.Добавить(); ЭлементПакета.Наименование = ДанныеЛиста[“Имя”]; ЭлементПакета.Данные = АдресВХранилище; КонецЦикла; Попытка Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX); ПоказатьПредупреждение(, “Файл выгружен в ” + ИмяФайла); Исключение ПоказатьПредупреждение(,”Ошибка выгрузки в ” + ИмяФайла); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры // СформироватьФайлПакетом()

// Сохраняет табличные документы в файл Эксель//  ИмяФайла  – Строка – указывающая имя сохраняемого файла.// Можно включить полный путь;//                 //  МассивДанных  – Массив – массив соответствий:// * ДанныеЛиста – соответствие:// ** АдресВХранилище – адрес табличного документа во временном хранилищеПроцедура СформироватьФайлПакетом(ИмяФайла, МассивДанных) Пакет = Новый ПакетОтображаемыхДокументов; Для каждого ДанныеЛиста Из МассивДанных Цикл АдресВХранилище = ДанныеЛиста[“АдресВХранилище”]; ЭлементПакета = Пакет.Состав.Добавить(); ЭлементПакета.Наименование = ДанныеЛиста[“Имя”]; ЭлементПакета.Данные = АдресВХранилище; Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);     ПоказатьПредупреждение(, “Файл выгружен в ” + ИмяФайла); ПоказатьПредупреждение(,”Ошибка выгрузки в ” + ИмяФайла); Сообщить(ОписаниеОшибки());КонецПроцедуры // СформироватьФайлПакетом()

ИмяФайла — имя файла в который будет сохранена книга. Можно перед вызовом функции предлагать пользователю указать каталог, куда будет сохраняться файл, и в параметр передать полный путь до файла, например «D:\Файлы\МойФайлЭксель.xlsx».

МассивДанных — массив соответствий с данными для формирования книги. Массив собираю на сервере. Соответствие представляет из себя коллекцию значений в связки с ключем. Ключи — Имя (имя листа в книге) и АдресВХранилище (адрес табличного документа во временном хранилище).

В отличие от второго варианта файл сохраняется значительно быстрее.

С помощью com-объекта excel.application

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

ТабличныйДокумента.Записать(, );

ТабличныйДокумента.Записать(, );

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

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

  1. Открываем Эксель;
  2. Создаем новую книгу с 1 листом (переменная Книга);
  3. В цикле каждое табличный документ сохраняем в файл с типом xlsx;
  4. Открываем файл с выгруженным табличным документом, и копируем лист в нашу рабочую книгу, вставляя последним листом;
  5. Закрываем временный файл, удаляем из временного хранилища и переходим к следующему табличному документу;
  6. Последним шагом — сохраняем книгу, закрываем эксель.

&НаКлиенте Процедура СформироватьФайл(ИмяФайла, МассивДанных) ОбъектЭксель = ПолучитьCOMОбъект(“”, “Excel.Application”); ОбъектЭксель.SheetsInNewWorkbook = 1; // в новой книге создавать только 1 лист ОбъектЭксель.DisplayAlerts = False; Книга = ОбъектЭксель.Workbooks.Add(); Попытка НомерЛиста = 1; Для каждого ДанныеЛиста Из МассивДанных Цикл АдресВХранилище = ДанныеЛиста[“АдресВХранилище”]; ТабличныйДокумента = ПолучитьИзВременногоХранилища(АдресВХранилище); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(“xlsx”); ТабличныйДокумента.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX); ВременнаяКнига = ОбъектЭксель.Workbooks.Open(ИмяВременногоФайла); ЛистИсточник = ВременнаяКнига.WorkSheets(1); ЛистИсточник.Copy(Книга.WorkSheets(НомерЛиста)); Книга.WorkSheets(НомерЛиста).Name = ДанныеЛиста[“Имя”]; ВременнаяКнига.Close(0); УдалитьИзВременногоХранилища(АдресВХранилище); НомерЛиста = НомерЛиста + 1; КонецЦикла; Книга.Sheets(НомерЛиста).Delete(); ОбъектЭксель.Workbooks(1).Activate(); Книга.Worksheets(1).Activate(); Книга.SaveAs(ИмяФайла); Книга.Close(0); ОбъектЭксель.Quit(); ОбъектЭксель = Неопределено; ПоказатьПредупреждение(,”Файл выгружен в ” + ИмяФайла); Исключение ПоказатьПредупреждение(,”Ошибка выгрузки в ” + ИмяФайла); Сообщить(ОписаниеОшибки()); Если ОбъектЭксель Неопределено Тогда ОбъектЭксель.Quit(); ОбъектЭксель = Неопределено; КонецЕсли; КонецПопытки; КонецПроцедуры // СформироватьФайл()

Процедура СформироватьФайл(ИмяФайла, МассивДанных) ОбъектЭксель = ПолучитьCOMОбъект(“”, “Excel.Application”); ОбъектЭксель.SheetsInNewWorkbook = 1; // в новой книге создавать только 1 лист ОбъектЭксель.DisplayAlerts = False;        Книга = ОбъектЭксель.Workbooks.Add(); Для каждого ДанныеЛиста Из МассивДанных Цикл АдресВХранилище = ДанныеЛиста[“АдресВХранилище”]; ТабличныйДокумента = ПолучитьИзВременногоХранилища(АдресВХранилище); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(“xlsx”);             ТабличныйДокумента.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX); ВременнаяКнига = ОбъектЭксель.Workbooks.Open(ИмяВременногоФайла); ЛистИсточник = ВременнаяКнига.WorkSheets(1); ЛистИсточник.Copy(Книга.WorkSheets(НомерЛиста)); Книга.WorkSheets(НомерЛиста).Name = ДанныеЛиста[“Имя”]; УдалитьИзВременногоХранилища(АдресВХранилище); НомерЛиста = НомерЛиста + 1; Книга.Sheets(НомерЛиста).Delete(); ОбъектЭксель.Workbooks(1).Activate(); Книга.Worksheets(1).Activate(); ОбъектЭксель = Неопределено; ПоказатьПредупреждение(,”Файл выгружен в ” + ИмяФайла); ПоказатьПредупреждение(,”Ошибка выгрузки в ” + ИмяФайла); Сообщить(ОписаниеОшибки()); Если ОбъектЭксель Неопределено Тогда ОбъектЭксель = Неопределено;КонецПроцедуры // СформироватьФайл()

Источник: https://codernote.ru/1c/mnogostranichnyj-excel-iz-1s/

Примеры работы с табличным полем в 1С 8

1с 8.3 вывести в табличный документ. Работа с табличным документом

ЭлементыФормы.ТабличноеПоле.Значение=ТаблицаЗначений1;
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();

Примеры реализации данного метода вы можете посмотреть здесь и тут.

Как при разворачивании формы на весь экран сделать, чтобы табличное поле изменяло свой размер?

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

Бывает, что привязки сбрасываются из-за каких-то наших действий. Из-за того табличное поле
перестает масштабироваться или растягиваться по форме.

Поэтому привязки табличного поля необходимо настроить.

Нажмём на табличном поле правой кнопкой мыши и выберем пункт меню «Установить привязки…».

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

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

На новой форме, нажмём на табличном поле правой кнопкой мыши и выберем пункт меню «Установить привязки…»

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

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

Нажмём на табличном поле старой формы правой кнопкой мыши и выберем пункт меню «Установить привязки…».

Установим привязки аналогично тому, что мы увидели на новой форме. Готово!

Как программно установить видимость колонки табличного поля?

ЭлементыФормы.РегистрСведенийСписок.Колонки.Период.Видимость = Истина;

Где, «Период» — колонка табличного поля «ЭлементыФормы.РегистрСведенийСписок».

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

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

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

Тип значения зависит от типа данных, с которыми связано табличное поле.

Например, для списка справочника это будет ссылка на элемент справочника, а для табличной части — строка табличной части.

Если тип значения РегистрСведенийСписок, тогда свойству ТекущаяСтрок присваивается значение типа — РегистрСведенийКлючЗаписи.

Пример:

Отбор1 = Новый Структура;
Отбор1.Вставить(«Период», ДатаТекущегоТарифа);
Отбор1.Вставить(«Владелец», ОсновнаяОрганизация);
Отбор1.Вставить(«Вес», 0.3);
Рег = РегистрыСведений.Тарифы;
КлючЗаписи = Рег.

СоздатьКлючЗаписи(Отбор1);//Тип: РегистрСведенийКлючЗаписи
// РегистрСведенийСписок — табличное поле для отображения списка
// записей регистра сведений
ЭлементыФормы.РегистрСведенийСписок.

ТекущаяСтрока = КлючЗаписи;

Отбор должен однозначно идентифицировать запись в табличном поле.

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

тут.

Как создать контекстное меню для табличного поля?

Создать на форме невидимую командную панель, т.е. убрать флажок «Видимость» в свойствах командной панели.

В свойствах табличного поля убрать флажок «АвтоКонтекстноеМеню».

Из выпадающего списка «КонтекстноеМеню» выбрать только что созданную командную панель.

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

Как в табличном поле с типом значения справочник, отображать только группы?

Откроем свойства табличного поля и найдем свойство «ПросмотрГруппИЭлементов».

В выпадающем списке выберем «Группы».

Как изменить значение ячейки табличного поля?

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

Процедура ПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
ОформлениеСтроки.Ячейки.РНН.Значение =
ОформлениеСтроки.ДанныеСтроки.Контрагент.РНН;
КонецЦикла;
КонецПроцедуры

Как сделать текущим значение колонки табличного поля и присвоить этой колонке тип?

Предположим, что колонке «СубконтоДоходовБУ3» нужно присвоить тип «СправочникСсылка.ПодразделенияОрганизаций».

СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
ЭлементыФормы.Услуги.ТекущаяКолонка =
ЭлементыФормы.Услуги.Колонки.СубконтоДоходовБУ3;
СтрокаТабличнойЧасти.СубконтоДоходовБУ3 =
Справочники.ПодразделенияОрганизаций.ПустаяСсылка();

Как в табличном поле установить флажок элементом управления для колонки?

ТекКолонка = ЭлементыФормы.ТабличноеПоле.Колонки[«Загружать»];
ТекКолонка.УстановитьЭлементУправления(Тип(«Флажок»));

Как программно создать колонку табличного поля с элементом управления «Флажок»?

ТекКолонка = ЭлементыФормы.ТаблицаНакладных.Колонки[«Загружать»];
ТекКолонка.УстановитьЭлементУправления(Тип(«Флажок»));
ТекКолонка.ДанныеФлажка = «Загружать»;
ТекКолонка.Ширина = 3;
ТекКолонка.ТекстШапки = «»;
ТекКолонка.РежимРедактирования=РежимРедактированияКолонки.Непосредственно;
ТекКолонка.ЭлементУправления.ПрозрачныйФон = Истина;

Свойство «РежимРедактирования» определяет режим редактирования ячейки табличного поля,если его не установить в «РежимРедактированияКолонки.Непосредственно»

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

Источник: https://www.softmaker.kz/tablichnoe-pole/primery-raboty-s-tablichnym-polem-v-1s-8.html

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.