Данная публикация имеет две основные цели — Зафиксировать полученный опыт, чтобы через некоторое время можно было его использовать повторно — Получить обратную связь от сообщества относительно предлагаемых приемов.
Грамотная загрузка из Excel в 1С
Многим 1сникам не понятен единственно верный путь чтения Excel-файлов.
Если файл Excel содержит только одну страницу, то его можно прочитать методом Прочитать табличного документа. И записать в Excel файл табличный документ тоже можно из 1С.
Файлы Excel, пользователь, кстати, может открыть и посмотреть в 1С.
Но у метода Прочитать есть недостаток — он криво воспринимает некоторые даты, как ни читай — текстом или значениями. Будем надеяться, со временем эти банальные глюки 1с все же починят. А пока надо применять свои руки, т.е. читать через старый добрый Excel.Application, методика позволяет также читать книги с несколькими листами.
Важно, что читать нужно на клиенте. На сервере Excel запускается от имени пользователя, под которым работает служба 1С-сервера, на практике в 50% случаев админы не могут корректно настроить работу COM-приложения. Поэтому лучше прочитать весь файл на клиенте и передать его в виде массива структур.
Привожу пример чтения обычного файла, содержащего 12 листов с накладными среднего размера. 6 409 ячеек прочитались за 25 секунд. 256 ячеек в секунду — не быстро, но все же быстрее чем ручками?
Для ускорения можно использовать чтение методом COMSafeArray, данные считываются практически мгновенно, но об этом в другой раз. Поэкспериментируйте сами. Правда, первое измерение двухмерного массива получаются колонки, потом строки. Учитывая, что 1С не умеет быстро транспонировать массивы, нужно так и обрабатывать данные.
Ну и еще один штрих — многие пользователи работают в терминале и не ставят на сервер Excel по лицензионным соображениям. С файлами Excel может работать и Open Office, в том числе и по COM-объекту. Так что в планах написать функцию загрузки для Open Office.
Промокоды на Займер на скидки
Эксель = New COMObject ( «Excel.Application» );
Эксель . visible = false;
Книга = Эксель . Workbooks . Open ( ИмяФайла );
Для НомерЛиста = 1 To Книга . Sheets . Count Цикл
Лист = Книга . Sheets ( НомерЛиста );
ИмяЛиста = Лист . Name ;
Если СоответствиеФильтраЛистов Неопределено Тогда
Если СоответствиеФильтраЛистов [ НомерЛиста ] = Неопределено
И СоответствиеФильтраЛистов [ ИмяЛиста ] = Неопределено
Тогда
Продолжить; //Если лист грузить не надо
КонецЕсли;
КонецЕсли;
Ячейки = Новый Массив ( КоличествоСтрок , КоличествоКолонок );
Для Строка = 1 По КоличествоСтрок Цикл
Для Колонка = 1 По КоличествоКолонок Цикл
Ячейки [ Строка — 1 ][ Колонка — 1 ] = Лист . Cells ( Строка , Колонка ). Value ;
КонецЦикла;
КонецЦикла;
СтруктураЛиста = Новый Структура ();
СтруктураЛиста . Вставить ( «Строк» , КоличествоСтрок );
СтруктураЛиста . Вставить ( «Колонок» , КоличествоКолонок );
СтруктураЛиста . Вставить ( «Ячейки» , Ячейки );
СтруктураЛиста . Вставить ( «Номер» , НомерЛиста );
СтруктураЛиста . Вставить ( «Имя» , ИмяЛиста );
Как сделать ссылку в Excel. Создание ссылок в Эксель на другой лист, на другую книгу, гиперссылку
Для типовых конфигураций для парсинга строки возможно использование функции общего назначения РазложитьСтрокуВМассивПодстрок Текст,.
Табличный документ «1С:Предприятия» (*.mxl): как сохранить в другом формате?
После того как табличный документ сформирован в «1С:Предприятии» и выведен на экран, его можно распечатать и сохранить во внешний файл. Например, для последующей отправки контрагенту-покупателю по электронной почте.
В «1С:Предприятии» имеется возможность сохранить полученный документ в нескольких форматах. В частности, доступны:
- формат «1С:Предприятие» — табличный документ для версий платформы 7.7 и 8 (файлы с расширением «*.mxl»);
- текстовый формат («*.txt») с различными кодировками (ANSI, UTF-8);
- формат HTML различных стандартов («*.htm»);
- формат MS Excel различных стандартов («*.xls»).
Для того, чтобы сохранить документ из «1С:Предприятия» в любой из перечисленных выше форматов, достаточно выбрать в меню «Файл» опцию «Сохранить копию…», после чего в появившемся диалоге сохранения файла, в разделе «Тип файла» выбрать нужный нам тип.
Среди всех вышеперечисленных типов файлов, обратим внимание на три самых интересных с практической точки зрения — т. е. те, которые максимально полно сохранят форматирование в табличном документе и в дальнейшем позволят другим пользователям комфортно просматривать то, что мы сохранили, распечатывать это или даже редактировать.
Первый формат — «табличный документ» «1С:Предприятия». Он записывается в файлы с расширением «.mxl» и может быть прочитан и отредактирован только средствами платформы «1С:Предприятие». Открыть такой файл можно программой «1С:Предприятие», установленной на компьютер пользователя или бесплатным редактором файлов форматов 1С «1С:Предприятие-Работа с файлами».
Программу «1С:Предприятие-Работа с файлами» можно бесплатно скачать по адресу http://v8.1c.ru/metod/fileworkshopdownload.htm, описание программы и примеры работы можно увидеть по адресу http://v8.1c.ru/metod/fileworkshop.htm. Данный редактор позволяет открывать и редактировать различные форматы файлов, которые могут быть созданы средствами платформы «1С:Предприятия». Поддерживаются следующие форматы:
- текстовые документы различных кодировок («*.txt»);
- табличные документы версий платформы 7.7 и 8 («*.mxl»);
- HTML-документы («*.htm, *.html»);
- графические схемы («*.grs»);
- географические схемы («*.geo»).
В заключение стоит упомянуть, что в программу «1С:Предприятие-Работа с файлами» встроены также календарь и калькулятор, уже знакомые многим по платформе 1С версии 8.
Как правило, у рядового пользователя не возникает необходимости в редактировании файлов данного формата. В случае же, если возникнет необходимость отредактировать такой документ (например, опечатку поправить), пользователь всегда может установить необходимый ему HTML-редактор или бесплатную программу «1С:Предприятие-Работа с файлами», о которой мы уже упоминали.
В заключение, хочется отметить развитые возможности программ «1С:Предприятие» по экспорту своих данных в другие форматы. Это реализовано с целью упростить и облегчить процесс обмена рабочими данными и документами между разнородным программным обеспечением различных организаций.
Загрузка из Excel в 1С 8.3
Код важно отладить со стороны клиента, иначе придется долго дополнительно отстраивать серверную часть программного обеспечения.
Обработка расшифровки
После того, как расшифровка заполнена, следует позаботиться об ее обработке.
Если табличный документ открыт в отдельном окне, никаких действий по обработке расшифровки выполнить нельзя. В этом случае расшифровка будет работать в соответствии со своим поведением по умолчанию – то есть, будет открыто значение расшифровки. Для ссылочных типов будет открыта основная форма объекта, для других типов будет отображена строка, представляющая значение расшифровки.
Пример:
В тексте обработчика события можно выполнить любые действия по обработке расшифровки. Например, запустить на исполнение некоторый отчет, передав ему в качестве параметра значение расшифровки.
Табличный документ 1С: Предприятия (*. mxl): как сохранить в другом формате? БУХ.1С, сайт в помощь бухгалтеру
Заполнение расшифровки
Расшифровка представляет собой значение, которое присвоено свойству “Расшифровка” области ячеек табличного документа или рисунку табличного документа. Заполнить данное свойство можно одним из следующих способов:
1. Непосредственно присвоив данному свойству значение.
Этот способ может быть удобным в том случае, если табличный документ заполняется при помощи встроенного языка без использования макета и построителя отчета.
Пример:
В данном примере расшифровка устанавливается первой ячейке первой строки поля табличного документа.
2. Использовать параметр расшифровки и метод “Вывести”.
Часто табличный документ заполняется при помощи макета и метода табличного документа “Вывести”. В таком случае в ячейке макета можно указать свойство “Параметр расшифровки”. При вызове метода “Вывести”, этот параметр будет использован для заполнения значения свойства расшифровки.
Пример:
Отчет выводится при помощи макета. В некоторой ячейке области “Запись” табличного документа содержится параметр расшифровки “Номенклатура”. Результатом выполнения следующего кода будет помещение в данную ячейку значения переменной Номенклатура.
Отметим, что с параметром расшифровки работа ведется также как и с обычными параметрами, размещенными в ячейках макета.
В случае если необходимо поместить в значение расшифровки несколько значений, следует поместить нужные значения в коллекцию, после чего поместить коллекцию в расшифровку.
Пример того, как это можно сделать, воспользовавшись объектом Структура:
Аналогично выполняется заполнение расшифровки рисунка табличного документа.
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы