1с сохранить табличный документ в excel программно
Доброго времени суток!
Вопрос не знаете ли как сделать в форме отчета кнопку которая при нажатии дает возможность сохранить табличный документ в Вордовское или Екселевское расширение? Я так понял процедурчик нужен?
От Новичка: Табличный документ или справочник ?
Дано: Некая таблица в которой примерно 500 тыс. ячеек со значениями. Вопрос: Распихать все.
Табличный Документ
Доброго времени суток проблемка заключается в следующем имеется код Процедура.
макет - табличный документ
Доброго времени суток! С 1с встречаюсь впервые. Вообщем мне необходимо создать документ и вывести.
Табличный документ, обход
Здравствуйте. 1с8.1 Есть табличный документ с группировками(1 уровня). Нужно найти дубли текста.
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Синтаксис:
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
(необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
При работе на сервере, веб клиенте или через внешнее соединение нет возможности сохранять в формате XLS95.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
Пример:
ТипФайлаТабличногоДокумента (SpreadsheetDocumentFileType)
Значения
ANSITXT (ANSITXT)
DOCX (DOCX)
HTML (HTML)
HTML3 (HTML3)
HTML4 (HTML4)
MXL (MXL)
MXL7 (MXL7)
ODS (ODS)
TXT (TXT)
XLS (XLS)
XLS95 (XLS95)
XLS97 (XLS97)
XLSX (XLSX)
Содержит варианты форматов файлов для сохранения табличного документа. Используется для определения параметра метода Записать.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером.
См. также:
ТабличныйДокумент, метод Записать
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Синтаксис:
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
(необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
При работе на сервере, веб клиенте или через внешнее соединение нет возможности сохранять в формате XLS95.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
Пример:
ТипФайлаТабличногоДокумента (SpreadsheetDocumentFileType)
Значения
ANSITXT (ANSITXT)
DOCX (DOCX)
HTML (HTML)
HTML3 (HTML3)
HTML4 (HTML4)
MXL (MXL)
MXL7 (MXL7)
ODS (ODS)
TXT (TXT)
XLS (XLS)
XLS95 (XLS95)
XLS97 (XLS97)
XLSX (XLSX)
Содержит варианты форматов файлов для сохранения табличного документа. Используется для определения параметра метода Записать.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером.
См. также:
ТабличныйДокумент, метод Записать
Спасибо большое, но я не понял этот код, точнее может и понял, но Вы можете просто код(процедуру) написать, без разъяснений, мне так лучше понятней, кстати вод ещё код нашел, но там на ТабДок жалуется, не определяет(((
Процедура ДействияФормыСохранить(Кнопка)
// Запускаем диалог сохранения файла
Режим = РежимДиалогаВыбораФайла.Сохранение;
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = "Выбор файла для сохранения";
Диалог.Фильтр = "Файл excel (*.xls)|*.xls";
Если Не Диалог.Выбрать() Тогда
Возврат;
Иначе
ИмяФайла = Диалог.ПолноеИмяФайла;
КонецЕсли;
// Потом табличный документ записываем в файл excel
ТабДок.Записать(ИмяФайла);
КонецПроцедуры
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Посмотреть все результаты поиска похожих
Еще в этой же категории
Вывод картинки (изображения) на печать, в макет (табличный документ) 32
// 1-й вариант //Как вывести картинку в табличный документ? ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет(" Макет" ); ОбластьКартинки = Макет.ПолучитьОбласть(" ОбластьСКартинкой" ); Картинка = Новый Картинка(ПутьККа Вывести табличный документ в PDF 18
Данный пример работает на платформе выше 8.2.13 Макет = ПолучитьМакет(" Макет" ); ОбластьШапка = Макет.ПолучитьОбласть(" Шапка" ); ТабДок = Новый ТабличныйДокумент; ОбластьШапка.Параметры.НомерДок = Номер; ОбластьШапка.Параметры.ДатаДок = Как программно изменить текст, цвет, фон ячейки или области табличного документа? 7
Ниже приведено несколько полезных шаблонов кода по работе с табличным документом: //Пример получения текста ячейки ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование; ПолеТабДок Как в отобразить картинку в табличной части 7
В табличной части есть документы заявки от покупателя, нам нужно добавить картинку для отображения статуса документов заявка - проведен , не проведен, помечен на удаление. //Отобразим картинку Процедура СписокПриВыводеСтроки(Элемент, Оформление Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул 6
Колонтитул является специальным текстом, выводимым вверху или внизу каждой страницы при выводе документа на печать. В тексте колонтитула можно использовать следующие управляющие конструкции: > ( >) - при печати в данном месте будет выведен номер ст Посмотреть все в категории Табличный документ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 14
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Экспорт и Импорт данных 1С - Microsoft Excel 12
Экспорт Процедура ОсновныеДействияФормыЭкспорт(Кнопка) - выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel с указанным именем, используя преобразование данных к типу число и типу строка; Процедура Основ Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Работа с MS Word через OLE 10
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и опис Посмотреть все в категории Работа с Microsoft Office и OpenOffice
После манипуляции с файлом необходимо его закрыть. В противном случае он останется захваченным в системе, и мы не сможем его использовать в других приложениях.
Клиент-Серверный вариант в управляемых формах.
1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.
2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.
Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.
В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.
На выходе получаем двумерный массив, который содержит все данные указанного листа Excel
Полезные функции при работе с Excel:
Устанавливает видимость Excel при работе |
Добавление новой книги в файл Excel |
Сохранение книги Excel |
Добавление нового листа к книге |
Переименование листа |
Изменение маштаба листа |
Изменение ориентации листа |
Отступы листа |
Обращение к ячейки чтение/запись |
Обращение к области ячеек |
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой. |
Объединение ячеек |
Работа с именованными ячейками в Excel |
Удаление ячейки |
Удаление области ячеек |
Обращение к строке |
Изменение ширины колонки |
Обращение к колонке |
Удаление Строки |
Фон ячейки / области / Строки / |
Функция переводит цвет из формата RGB в формат Excel |
Управление шрифтом в ячейки/строке/области |
Р азрешает переносить по словам в ячейке |
Управление рамкой ячейки |
Устанавливаем формат ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Функция для получения ширины колонки Excel Спасибо пользователю goodwill |
Разрешить перенос слов в ячейке Спасибо пользователю roofless |
Группировки данных на листе Спасибо пользователю dr-wit, ignor |
При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.
2. Работа с Excel через ТабличныйДокумент 1С
С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.
Итак, приступим: загрузка из Excel:
1. Загружаем файл Excel в табличный документ
2. Производим манипуляции уже с ТабличнымДокументом
Давайте теперь разберем сохранение в Excel с помощью данного метода:
Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
2. Работа с Excel ADODB
Выражаю особую благодарность коллеги Fragster за хороший комментарий
Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:
- Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
- Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.
Подключение к ADO
Отключение от ADO
Выполнение запроса
Пример запроса:
Запись в Excel тоже производится в виде запроса:
Хочу отметить что наименование полей производится по первой строке в таблице
ADODB предоставляет ряд объектов, с которыми мы работаем
ADODB.Recordset
В файле продемонстрированны оба варианта работы с запросами.
На этом пока все. По возможности буду дополнять статью :)
В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.
Каждому программисту 1с, хоть раз, да приходилось писать выгрузку отчета из 1С в Excel с формулами. Есть много вариантов как это сделать. Но мне захотелось это сделать "по нормальному", используя как можно меньше кода выгрузки в excel, и так чтобы проще было дорабатывать. Идея была проста, все формулы засунуть в макет, и при выводе в Excel просто "проинициализировать" их. Но меня ждал облом, который мне пришлось героически преодолевать. Спойлер - в итоге все получилось. )
Отчетов таких была написана куча и на доработку каждого требовалось куча времени. Я захотел попробовать найти какой-нибудь новый подход - все формулы засунуть в макет. Но меня поджидал облом. С простыми формулами типа "=RC[-2]-RC[-1]" все было замечательно - внести как текст и все ок, но, когда потребовалось реализовать формулу чуть посложнее, типа "=СУММ(R[1]C:R[КоличествоСтрок]C)", то тут ждал облом. Тут сразу напрашивается шаблон, но как оказалось, шаблон никак не хотел выводить символ "[", т.к. для 1С это служебный символ, определяющий параметры для шаблона. Поиск в инете типа "как вывести квадратные скобки в шаблоне макета" ничего не дал, вообще ничего не дал! Путем проб и ошибок выяснилось, чтоб вывести "КакойТоТекст[1]" нужно задать "КакойТоТекст [ [1]". А вот чтоб задать "КакойТоТекст[1]ещё[ КоличествоСтрок ]", где КоличествоСтрок - это параметр, который нужно менять, то тут нужно извратиться по жёсткому - "КакойТоТекст [] [[1]ещё [] [[[ КоличествоСтрок ]]". Конструкция [] - нужна, чтоб не удалялся текст - "КакойТоТекст".
Итого: копируем формулу Excel, модифицируем её:
1. заменяем " ; " на " , "
2. к неизменным значениям в скобках добавляем спереди [] [
3. изменяемые значения в скобках обворачиваем [] [[изменяемое значение в скобках]. И макет готов.
И тогда весь код при формировании Excel будет минимальным:
Эксель = Новый COMОбъект("Excel.Application");
Эксель.Application.DisplayAlerts = False;
Эксель.Application.ReferenceStyle = "xlR1C1";
Эксель.Application.ErrorCheckingOptions.InconsistentFormula = Ложь;
ВсегоКолонок = ТабличныйДокумент.ШиринаТаблицы;
ВсегоСтрок = ТабличныйДокумент.ВысотаТаблицы;
МассивКом = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).FormulaR1C1;
Для Ном = 1 По МассивКом.GetLength(0) Цикл
Для Ном2 = 1 По МассивКом.GetLength(1) Цикл
Значение = МассивКом.GetValue(Ном,Ном2);
Если НЕ Найти(Значение, "") = 0 Тогда
МассивКом.SetValue(Ном, Ном2, СтрЗаменить(Значение, "", ""));
КонецЕсли;
КонецЦикла;
КонецЦикла;
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).FormulaR1C1 = МассивКом; //Если тут ошибка, то скорее всего косяк в формуле
Как вы будете использовать макет - это ваше дело, хотите формируйте отчет через СКД используя Макет, хотите выводите отчет алгоритмически. В приложенном файле, я использую алгоритмическое формирование табличного документа (через СКД не получилось получить КоличествоСтрок), а затем формирую Excel файл из него. Приложенный файл это шаблон для ознакомления с подходом, он будет запускаться в Бухгалтерии, УТ, в общем там где есть регистр сведений ЦеныНоменклатуры.
Конечно формула в таком виде "=КакойТоТекст [] [[1]ещё [] [[[ КоличествоСтрок ]]" мне не очень нравится. Если кто-нибудь знает, как можно представить формулу в более наглядном виде, был бы рад узнать.
Читайте также: