Функции сохранения таблицы значений в файл и чтения из файла В данном примере хочу привести несколько универсальных функций по выгрузке таблицы значений в файл и дальнейшего чтения из файла:
П орядок программных действий при выгрузке в файл выглядит так:
Подготавливаем таблицу значений (выгружаем из табличной части, выбираем колонки); Конвертируем таблицу значений в табличный документ; Сохраняем табличный документ в MXL.
При загрузке таблицы порядок действий такой:
Читаем из файла табличный документ; Конвертируем табличный документ в таблицу значений; Используем эту таблицу значений в своих целях (загружаем в табличную часть).
Соответственно файл для хранения данных таблицы имеет расширение *.mxl.
Основные функции для реализации поставленной задачи следующие:
ПреобразоватьТДвТЗ – Функция преобразования табличного документа в таблицу значений.
ПреобразоватьТЗвТД – Функция обратного преобразования таблицы значений в табличный документ.
ПрочитатьТЗИзMXL – Читает из файла данные, определяет колонки таблицы и преобразует эти данные в таблицу значений.
ЗаписатьТЗВMXL – Преобразует таблицу значений в табличный документ и записывает его в файл.
Код 1C v 8.3
Функция ПреобразоватьТДвТЗ(ТабДок, СтруктураКолонок, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, Знач КонецСтрока = Неопределено, Знач КонецСтолбец = Неопределено) Экспорт
Если НачалоСтрока = Неопределено И НачалоСтолбец = Неопределено Тогда
НачалоСтрока = 1 ;
НачалоСтолбец = 1 ;
КонецЕсли ;
Если НачалоСтрока = Неопределено Тогда
НачалоСтрока = 1 ;
Пока НЕ ТабДок. Область( НачалоСтрока, НачалоСтолбец) . СодержитЗначение
И НачалоСтрока < ТабДок. ВысотаТаблицы
Цикл
НачалоСтрока = НачалоСтрока + 1 ;
КонецЦикла ;
ИначеЕсли НачалоСтолбец = Неопределено Тогда
НачалоСтолбец = 1 ;
Пока НЕ ТабДок. Область( НачалоСтрока, НачалоСтолбец) . СодержитЗначение
И НачалоСтолбец < ТабДок. ШиринаТаблицы
Цикл
НачалоСтолбец = НачалоСтолбец + 1 ;
КонецЦикла ;
КонецЕсли ;
КонецСтрока = ? ( КонецСтрока = Неопределено , ТабДок. ВысотаТаблицы, КонецСтрока) ;
КонецСтолбец = ? ( КонецСтолбец = Неопределено , ТабДок. ШиринаТаблицы, КонецСтолбец) ;
ЭтоТаблица = ( ТипЗнч( СтруктураКолонок) = Тип( "ТаблицаЗначений" ) ) ;
ТабЗначений = ПолучитьТаблицуВывода( СтруктураКолонок) ;
Для ИндексСтроки = НачалоСтрока По КонецСтрока Цикл
СтрокаТЗ = ТабЗначений. Добавить( ) ;
ИндексКолонки = НачалоСтолбец;
Для Каждого Колонка Из СтруктураКолонок Цикл
НаименованиеКолонки = ? ( ЭтоТаблица, Колонка. Наименование, Колонка. Ключ) ;
пИндексКолонки = ? ( ЭтоТаблица, Колонка. СтолбецОтчёт, ИндексКолонки) ;
Если ТабДок. Область( ИндексСтроки, пИндексКолонки) . СодержитЗначение Тогда
СтрокаТЗ[НаименованиеКолонки] = ТабДок. Область( ИндексСтроки, пИндексКолонки) . Значение;
Иначе
СтрокаТЗ[НаименованиеКолонки] = ТабДок. Область( ИндексСтроки, пИндексКолонки) . Текст;
КонецЕсли ;
ИндексКолонки = ИндексКолонки + 1 ;
КонецЦикла ;
КонецЦикла ;
Возврат ТабЗначений;
КонецФункции ;
Функция ПреобразоватьТЗвТД(ТабЗначений, ТабДок = Неопределено, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, ВыводитьЗаголовки = Ложь) Экспорт
Если ТабДок = Неопределено Тогда
ТабДок = Новый ТабличныйДокумент;
КонецЕсли ;
НачалоСтрока = ? ( НачалоСтрока = Неопределено , 1 , НачалоСтрока) ;
НачалоСтолбец = ? ( НачалоСтолбец = Неопределено , 1 , НачалоСтолбец) ;
ИндексСтроки = НачалоСтрока;
Если ВыводитьЗаголовки Тогда
ИндексКолонки = НачалоСтолбец;
Для Каждого Колонка Из ТабЗначений. Колонки Цикл
ТабДок. Область( ИндексСтроки, ИндексКолонки) . Текст = ? ( ПустаяСтрока( Колонка. Заголовок) , Колонка. Имя, Колонка. Заголовок) ;
ИндексКолонки = ИндексКолонки + 1 ;
КонецЦикла ;
ИндексСтроки = ИндексСтроки + 1 ;
КонецЕсли ;
Для Каждого Элемент Из ТабЗначений Цикл
ИндексКолонки = НачалоСтолбец;
Для Каждого Колонка Из ТабЗначений. Колонки Цикл
ТабДок. Область( ИндексСтроки, ИндексКолонки) . СодержитЗначение = Истина ;
ТабДок. Область( ИндексСтроки, ИндексКолонки) . ТипЗначения = Новый ОписаниеТипов( Колонка. ТипЗначения) ;
ТабДок. Область( ИндексСтроки, ИндексКолонки) . Значение = Элемент[Колонка. Имя];
ИндексКолонки = ИндексКолонки + 1 ;
КонецЦикла ;
ИндексСтроки = ИндексСтроки + 1 ;
КонецЦикла ;
Возврат ТабДок;
КонецФункции ;
Функция ПрочитатьТЗИзMXL(ИмяФайла, СтруктураКолонок = Неопределено, ЕстьЗаголовок = Истина) Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок. Прочитать( ИмяФайла) ;
Если СтруктураКолонок = Неопределено И ЕстьЗаголовок Тогда
СтруктураКолонок = Новый Структура;
Для ИндексКолонки = 1 По ТабДок. ШиринаТаблицы Цикл
Обл1 = ТабДок. Область( 1 , ИндексКолонки) ;
Обл2 = ТабДок. Область( 2 , ИндексКолонки) ;
ИмяКолонки = СокрЛП( Обл1 . Текст) ;
ИмяКолонки = ? ( Найти( ИмяКолонки, " " ) > 0 , СтрЗаменить( ТРег( ИмяКолонки) , " " , "" ) , ИмяКолонки) ;
СтруктураКолонок. Вставить( ИмяКолонки, ? ( Обл2 . СодержитЗначение, Обл2 . ТипЗначения, Новый ОписаниеТипов) ) ;
КонецЦикла ;
ИначеЕсли СтруктураКолонок = Неопределено И НЕ ЕстьЗаголовок Тогда
СтруктураКолонок = Новый Структура;
Для ИндексКолонки = 1 По ТабДок. ШиринаТаблицы Цикл
Обл2 = ТабДок. Область( 1 , ИндексКолонки) ;
ИмяКолонки = "К" + Формат( ИндексКолонки, "ЧДЦ=0; ЧН=0; ЧГ=0" ) ;
СтруктураКолонок. Вставить( ИмяКолонки, ? ( Обл2 . СодержитЗначение, Обл2 . ТипЗначения, Новый ОписаниеТипов) ) ;
КонецЦикла ;
КонецЕсли ;
Таблица = ПреобразоватьТДвТЗ( ТабДок, СтруктураКолонок, ? ( ЕстьЗаголовок, 2 , 1 ) , 1 ) ;
Возврат Таблица;
КонецФункции ;
Процедура ЗаписатьТЗВMXL(ИмяФайла, ТабЗначений, ЕстьЗаголовок = Истина) Экспорт
ТабДок = ПреобразоватьТЗвТД( ТабЗначений, Неопределено , 1 , 1 , ЕстьЗаголовок) ;
ТабДок. Записать( ИмяФайла, ТипФайлаТабличногоДокумента. MXL) ;
КонецПроцедуры ;
Еще небольшой набор функций для вывода таблицы значений в табличный документ. После формирования табличного документа, - сохраняем его в файл mxl.
Табличный документ можно сохранить a файлы следующих типов:
ANSITXT - Текстовый документ DOCX - документ MS Word HTML HTML3 HTML4 HTML5 MXL MXL7 ODS - Файл Open Office PDF - файл Acrobat Readr TXT - Текстовый документ XLS - файл Excel XLS95 - файл Excel95 XLS97 - файл Excel97 XLSX - файл Excel2010
Код 1C v 8.3
Функция ЗагрузитьТЗизФайла(ИмяФайла)
Путь = КаталогВременныхФайлов( ) + ИмяФайла;
Текст = Новый ЧтениеТекста( Путь, КодировкаТекста. UTF8) ;
стрТЗ = Текст. Прочитать( ) ;
Текст. Закрыть( ) ;
ТЗ = ЗначениеИзСтрокиВнутр( стрТЗ) ;
Возврат ТЗ;
КонецФункции
Функция ЗаписьТЗ2ТабДок(записьТЗ,НомерСтроки,ТабличныйДокумент)
НомерКолонки = 1 ;
Символ160 = Символ( 160 ) ;
Для каждого полеТЗ из ЗаписьТЗ цикл
типПоляТЗ = ТипЗнч( полеТЗ) ;
если типПоляТЗ = Тип( "Число" ) тогда
полеТЗ= Строка( полеТЗ) ;
полеТЗ= СтрЗаменить( полеТЗ, Символ160 , "" ) ;
полеТЗ= СтрЗаменить( полеТЗ, "," , "." ) ;
иначеесли типПоляТЗ = Тип( "Строка" ) тогда
иначе
полеТЗ = строка( полеТЗ) ;
КонецЕсли ;
имяОбласти = "R" + номерСтроки + "C" + НомерКолонки;
имяОбласти = СтрЗаменить( имяОбласти, Символ( 160 ) , "" ) ;
Ячейка = ТабличныйДокумент. Область( имяОбласти) ;
Ячейка. Текст = полеТЗ;
НомерКолонки = НомерКолонки + 1 ;
КонецЦикла ;
КонецФункции
Функция НаимКолонок2Mxl(ТаблицаЗначений,ТабличныйДокумент)
номерСтроки= 1 ;
номКолонки= 1 ;
ТабличныйДокумент = новый ТабличныйДокумент;
Для НомКол= 0 по ТаблицаЗначений. Колонки. Количество( ) - 1 Цикл
имяКолонки= ТаблицаЗначений. Колонки[НомКол]. Имя;
имяОбласти = "R" + номерСтроки + "C" + номКолонки;
имяОбласти = СтрЗаменить( имяОбласти, Символ( 160 ) , "" ) ;
Ячейка = ТабличныйДокумент. Область( имяОбласти) ;
Ячейка. Текст = имяКолонки;
ЖирныйШрифт = ? ( ЖирныйШрифт = Неопределено , Новый Шрифт( Ячейка. Шрифт, , , Истина ) , ЖирныйШрифт) ;
Ячейка. Шрифт = ЖирныйШрифт;
номКолонки = номКолонки + 1 ;
КонецЦикла ;
КонецФункции
Функция Таблица2Mxl(ТаблицаЗначений,ТабличныйДокумент)
НомСтр= 1 ;
Для каждого записьТЗ из ТаблицаЗначений Цикл
НомСтр = НомСтр + 1 ;
ЗаписьТЗ2 ТабДок( записьТЗ, НомСтр, ТабличныйДокумент) ;
КонецЦикла ;
КонецФункции
Функция ТаблицаЗначений2Mxl(ТаблицаЗначений,ФайлMxl)
ТабличныйДокумент = новый ТабличныйДокумент;
НаимКолонок2 Mxl( ТаблицаЗначений, ТабличныйДокумент) ;
Таблица2 Mxl( ТаблицаЗначений, ТабличныйДокумент) ;
ТабличныйДокумент. Записать( ФайлMxl, ТипФайлаТабличногоДокумента. MXL) ;
ТабличныйДокумент. Показать( ФайлMxl, ФайлMxl) ;
Возврат 0 ;
КонецФункции
Функция Тест_ВыгрузитьТЗвMxl() ;
файл_мТЗИсходныеДанные = "мТЗИсходныеДанные.dat" ;
ТЗ = ЗагрузитьТЗизФайла( файл_мТЗИсходныеДанные) ;
ФайлMxl = КаталогВременныхФайлов( ) + СтрЗаменить( файл_мТЗИсходныеДанные, ".dat" , ".mxl" ) ;
ТаблицаЗначений2 Mxl( ТЗ, ФайлMxl) ;
КонецФункции
Тест_ВыгрузитьТЗвMxl( ) ;
Пример выгруженной таблицы значений в файл:
Категория:
Работа с Таблицей Значений Значение параметра Extended Properties для разных версий MS Excel Параметр
Extended Properties=""Excel 8.0;" обозначает версию в котором сохранен файл
* 1997 год — Excel 97(8) — Microsoft Office 97
* 1999 год — Excel 2000 (9) — Microsoft Office 2000
* 2001 год — Excel 2002 (10) — Microsoft Office XP
* 2003 год — Excel 2003 (11) — Microsoft Office 2003
* 2007 год — Excel 2007 (12) — Microsoft Office 2007
* 2010 год — Excel 2010 (13) — Microsoft Office 2010
Примеры
Код 1C v 8.х
Conn= Новый COMОбъект( "ADODB.Connection" ) ;
Conn. ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Параметры. ИмяФайла+ ";
|Extended Properties="" Excel 8.0;" + ? ( Параметры. ЗаголовкиКолонокИменаСтолбцовExcel, "HDR=NO;" , "" ) + "IMEX=1;"" " ;
Conn. Open( ) ;
ТекстЗапроса= "S_elect
| *
|FROM [Лист1$]
// |INNER JOIN
// | ON
// |WHERE
// |GROUP BY
// | ORDER BY
|" ;
Результат= Conn. Execute( ТекстЗапроса) ;
Ссылки по теме:
V8 1С8.1 и Excel 2007 Категория:
Работа с Microsoft Office и OpenOffice Отправка отчетов из 1С по электронной почте (E-Mail) Автоматическая генерация отчета "Анализ заказов поставщикам"
Отчет анализ заказов является штатным отчетом конфигурации 1С Управление производственным предприятием. Обработка для генерации отчета, рассматриваемая в данной статье, позволяет программно создать и настроить форму отчета, запустить его выполнение. Полученный результат сохраняется в файл Microsoft Excel (XLS, XLSX) и может быть отправлен по электронной почте.
Предлагаемое решение состоит из трех файлов: Скачивать файлы может только зарегистрированный пользователь!
service.vbs служит для запуска 1С предприятия и генерации отчета;
emailer.vbs - VBS скрипт предназначен для отправки результатов выполнения запроса отчета на указанный при настройке адрес электронной почты;
rep_email.epf - сама внешняя обработка для генерации отчета, выполняющая настройки отображаемых показателей, группировок строк и столбцов, установки требуемых отборов отчета, обеспечивает выполнение запроса и формирования табличного документа по макету отчета и сохранение сформированного отчета в XLS файл.
Запуск отчета выполняется посредством VBS файла (vbscript) при помощи "Назначенных заданий". VBS программа обеспечивает запуск приложения 1С, устанавливает соединение с сервером 1С и передает управление внешней обработке через экспортную функцию ReportNow(), размещенную в общем модуле обработки по генерации отчета. Пример VBS Script для выполнения внешней обработки 1С из командной строки:
Код VBS
Set v81 = CreateObject ("V81.Application" )
res = v81.Connect("Srvr=Server1C;Ref = db1C;Usr=User1C;Pwd=Password1C" )
res = v81.ExternalDataProcessors.Create("C:\1C\Service\rep_email.epf" ).ThisObject.Report()
v81.Exit (false )
WScript.Sleep(5000 )
Dim WshShell
Set WshShell = WScript.CreateObject ("WScript.Shell" )
WshShell.Run "C:\1C\ Service\emailer.vbs"
VBS E-Mail скрипт для отправки готового отчета в формате Excel создает новое электронное письмо на заданный адрес, в теле письма указывает пояснение к отчету, а в качестве вложения прикрепляет файл, создание и наполнение информацией которого была произведена при запуске service.vbs
Код VBS
Const cdoSendUsingPickup = 1
Const cdoSendUsingPort = 2
Const cdoAnonymous = 0
Const cdoBasic = 1
Const cdoNTLM = 2
Set objMessage = CreateObject ("CDO.Message" )
objMessage.Subject = "Ежедневный отчет Анализ заказов поставщикам"
objMessage.From = "" "Генератор отчетов" " "
objMessage.To = "email@domain.org; recv@domain.net; last@domain.ru"
objMessage.TextBody = "JSC AUTO SERVICE. Please find Orders reporting in attachment." & vbCRLF & _
"------------------------------------------" & vbCRLF & _
"Best regards, Auto report service" & vbCRLF & _
"Support line: it@domian.ru" & vbCRLF
objMessage.AddAttachment "C:\1C\Service\ЗаказыПоставщику.xls"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing" ) = 2
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver" ) = "mail.domain.ru"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ) = cdoBasic
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername" ) = "report@domain.ru"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword" ) = "youpassword"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) = 25
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl" ) = False
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ) = 60
objMessage.Configuration.Fields.Update
objMessage.Send
Внешняя обработка по запуску отчета "Анализ заказов поставщику" состоит из двух процедур. Первая - "ReportNow() Экспорт" служит для определения входной точки передачи управления от VBS к 1С. Вторая - "ОткрытьОтчетПоИмени()" - выполняет действия по настройке критериев отбора отчета, группировке строк и столбцов, определению состава количественных показателей. Данный способ вызова отчетов стандартной конфигурации широко применяется в различных формах 1С, и по мере развития конфигурации может быть позаимствован как минимум из нескольких форм списка справочников (Контрагенты, Номенклатура и т.д.). Исходный код первой функции: >
Код 1C v 8.х Процедура ReportNow() Экспорт
ОткрытьОтчетПоИмени( "АнализЗаказовПоставщикам" ) ;
КонецПроцедуры
Сохранение отчета из 1С в Excel
Процедура формирования формы отчета принимает в качестве параметра название объекта метаданных конфигурации, в данном случае - "АнализЗаказовПоставщикам". Очевидно, что в зависимости от типа отчета процедура будет меняться пропорционально используемым реквизитам. В рассматриваемом примере добавляется отбор по контрагенту. Для своего ключевого поставщика заменить значение искомого наименования на нужное.
Код 1C v 8.х Процедура ОткрытьОтчетПоИмени(НазваниеОтчета) Экспорт
Отчет = Отчеты[НазваниеОтчета]. Создать( ) ;
Форма = Отчет. ПолучитьФорму( , , ) ;
Форма. Открыть( ) ;
Отчет. УстановитьНачальныеНастройки( ) ;
ТекОтбор = Отчет. УниверсальныйОтчет. ПостроительОтчета. Отбор. ДоговорКонтрагентаВладелец;
ТекОтбор. Использование = Истина ;
ТекОтбор. Значение = Справочники. Контрагенты. НайтиПоНаименованию( "Поставщик" ) ;
ТекОтбор. ВидСравнения = ВидСравнения. Равно;
Отчет. УниверсальныйОтчет. ПостроительОтчета. Отбор. Добавить( "ОсталосьОтгрузитьЕдиницОтчетов" ) ;
ТекОтбор1 = ОтчетОстатки. УниверсальныйОтчет. ПостроительОтчета. Отбор. ОсталосьОтгрузитьЕдиницОтчетов;
ТекОтбор1 . Использование = Истина ;
ТекОтбор1 . Значение = 0 ;
ТекОтбор1 . ВидСравнения = ВидСравнения. Больше;
Отчет. СостояниеОтгрузкиПоЗаказу = истина ;
Отчет. НеОтгружено = Истина ;
Отчет. ОтгруженоЧастично = Истина ;
Отчет. СформироватьОтчет( ФормаОтчета. ЭлементыФормы. ПолеТабличногоДокументаРезультат) ;
мПутьШаблон= "C:\1C\Service" ;
мФайлШаблон= "ЗаказыПоставщику.xls" ;
ИмяФайла = мПутьШаблон + "\" + мФайлШаблон;
Если Не ИмяФайла = Неопределено Тогда
Форма. ЭлементыФормы. ПолеТабличногоДокументаРезультат. СохранятьСвойстваОтображения = Истина ;
Форма. ЭлементыФормы. ПолеТабличногоДокументаРезультат. Записать( ИмяФайла, ТипФайлаТабличногоДокумента. XLS97) ;
КонецЕсли ;
ФормаОтчета. Закрыть( ) ;
КонецПроцедуры
Для того, чтобы отладить обработку в режиме 1С:Предприятие, запущенного из конфигуратора можно создать экранную форму обработки и разместить в ней следующую процедур автоматического запуска отлаживаемого отчета:
Код 1C v 8.х Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = истина ;
ОткрытьОтчетПоИмени( "АнализЗаказовПоставщикам" ) ;
КонецПроцедуры
Надеемся, что успешная комбинация внешней обработки для запуска отчета по расписанию и vbscript поможет в автоматизации бизнеса вашего предприятия. Данная редакция настроек больше ориентирована на менеджера поставщика для вашей компании, что отслеживать взаимное движение товаров и документов.
Источник
Руководство компании, хочет получать оперативную сводку продаж по фирме Категория:
Работа с Интернет, Почтой (Mail), FTP Как выгрузить табличный документ в excel Процедура сохраняет табличный документ в файл excel и открывает его
Код 1C v 8.х Процедура ОткрытьТабличныйДокументВExcel(ТабДокумент,ИмяФайла) Экспорт
ИмяФайла = Строка( ИмяФайла) + ".xls" ;
Каталог = КаталогВременныхФайлов( ) ;
ПолныйПутьКФайлу = Каталог + ИмяФайла;
Попытка
ТабДокумент. Записать( ПолныйПутьКФайлу, ТипФайлаТабличногоДокумента. XLS) ;
Сообщить( "Записан новый файл " + ПолныйПутьКФайлу) ;
ЗапуститьПриложение( ПолныйПутьКФайлу) ;
Исключение
СообщитьОбОшибке( ОписаниеОшибки( ) ) ;
КонецПопытки ;
КонецПроцедуры
Категория:
Табличный документ Выгрузка данных в Excel с установкой разных параметров Код 1C v 8.х
Процедура ОсновныеДействияФормыЭкспорт (Кнопка)
Попытка
Попытка
Состояние( "Выгрузка данных из 1С в Microsoft Excel..." ) ;
ExcelПриложение = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "Ошибка при запуске Microsoft Excel."
+ Символы. ПС + ОписаниеОшибки( ) , СтатусСообщения. Внимание) ;
Возврат ;
КонецПопытки ;
Книга = ExcelПриложение. WorkBooks. Add( ) ;
Лист = Книга. WorkSheets( 1 ) ;
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Лист. Cells( 1 , Колонка) . Value = стр. НазваниеРеквизита;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
выборка = Справочники[ИмяСправочника]. Выбрать( ) ;
СтрокаЛиста = 2 ;
Пока выборка. Следующий( ) Цикл
Колонка = 1 ;
Для каждого стр из ТП цикл
Если стр. Выгружать Тогда
Попытка
Если ТипЗнч( выборка[стр. НазваниеРеквизита]) = Тип( "Число" ) Тогда
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "0,00" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Формат( выборка[стр. НазваниеРеквизита], "ЧГ=0" ) ;
иначе
Лист. Cells( СтрокаЛиста, Колонка) . NumberFormat = "@" ;
Лист. Cells( СтрокаЛиста, Колонка) . Value =
Строка( выборка[стр. НазваниеРеквизита]) ;
КонецЕсли ;
исключение
Сообщить( "Ошибка установки значения для: " +
выборка[стр. НазваниеРеквизита]) ;
Сообщить( "Стр: " + СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр. НазваниеРеквизита) ;
КонецПопытки ;
Колонка = Колонка + 1 ;
КонецЕсли ;
КонецЦикла ;
СтрокаЛиста = СтрокаЛиста + 1 ;
Состояние( "Экспорт из 1С в Excel " + СтрокаЛиста) ;
КонецЦикла ;
Книга. SaveAs( имяФайла) ;
ExcelПриложение. Quit( ) ;
Сообщить( "Файл выгружен успешно: " + имяФайла ) ;
Исключение
Сообщить( "Ошибка записи данных файла :" + имяФайла) ;
Сообщить( ОписаниеОшибки( ) ) ;
Попытка
ExcelПриложение. Quit( ) ;
Исключение
КонецПопытки ;
КонецПопытки ;
КонецПроцедуры
Код 1C v 7.x
Процедура Вывод()
Попытка
Application= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , "!!!" ) ;
Сообщить( "Возможно, MS Excel не установлен на этом компьютере." ) ;
Возврат ;
КонецПопытки ;
WorkBook= Application. WorkBooks. Add( ) ;
Window= WorkBook. Windows( 1 ) ;
Window. Visible= 0 ;
Если WorkBook. Worksheets. Count= 0 Тогда
WorkBook. Worksheets. Add( ) ;
Иначе
Application. DisplayAlerts= 0 ;
Пока WorkBook. Worksheets. Count> 1 Цикл
WorkBook. Worksheets( 1 ) . Delete( ) ;
КонецЦикла ;
Application. DisplayAlerts= - 1 ;
КонецЕсли ;
Worksheet= WorkBook. Worksheets( 1 ) ;
Worksheet. Name= "Пример вывода" ;
Worksheet. Range( "A1" ) . Value= "Пример вывода из 1С:Предприятия в MS Excel" ;
Worksheet. Range( "A2" ) . Value= "сегодня " + ТекущаяДата( ) ;
Worksheet. Range( "A1:A2" ) . Font. Size= 14 ;
Worksheet. Range( "A1:A2" ) . Font. Bold= - 1 ;
Worksheet. Columns( 1 ) . ColumnWidth= 60 ;
Worksheet. Columns( 2 ) . ColumnWidth= 15 ;
Worksheet. Columns( 3 ) . ColumnWidth= 15 ;
Worksheet. Range( "A4" ) . Value= "Первая колонка" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "A4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "A4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "A4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "A4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "B4" ) . Value= "Вторая" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "B4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "B4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "B4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "C4" ) . Value= "Третья" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "C4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "C4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "C4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Outline. SummaryRow= 0 ;
Worksheet. Range( "A5" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B5" ) . Value= 123.45 ;
Worksheet. Range( "B5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C5" ) . Value= 678.9 ;
Worksheet. Range( "C5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A6" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B6" ) . Value= 123.45 ;
Worksheet. Range( "B6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C6" ) . Value= 678.9 ;
Worksheet. Range( "C6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A7" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B7" ) . Value= 123.45 ;
Worksheet. Range( "C7" ) . Value= 678.9 ;
Worksheet. Range( "A8" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B8" ) . Value= 123.45 ;
Worksheet. Range( "C8" ) . Value= 678.9 ;
Worksheet. Range( "A9" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B9" ) . Value= 123.45 ;
Worksheet. Range( "B9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C9" ) . Value= 678.9 ;
Worksheet. Range( "C9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A10" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B10" ) . Value= 123.45 ;
Worksheet. Range( "C10" ) . Value= 678.9 ;
Worksheet. Range( "A11" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B11" ) . Value= 123.45 ;
Worksheet. Range( "C11" ) . Value= 678.9 ;
Worksheet. Range( "A12" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B12" ) . Value= 123.45 ;
Worksheet. Range( "B12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C12" ) . Value= 678.9 ;
Worksheet. Range( "C12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A13" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B13" ) . Value= 123.45 ;
Worksheet. Range( "B13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C13" ) . Value= 678.9 ;
Worksheet. Range( "C13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A14" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B14" ) . Value= 123.45 ;
Worksheet. Range( "C14" ) . Value= 678.9 ;
Worksheet. Range( "A15" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B15" ) . Value= 123.45 ;
Worksheet. Range( "C15" ) . Value= 678.9 ;
Worksheet. Range( "A16" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B16" ) . Value= 123.45 ;
Worksheet. Range( "B16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C16" ) . Value= 678.9 ;
Worksheet. Range( "C16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A17" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B17" ) . Value= 123.45 ;
Worksheet. Range( "C17" ) . Value= 678.9 ;
Worksheet. Range( "A18" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B18" ) . Value= 123.45 ;
Worksheet. Range( "C18" ) . Value= 678.9 ;
Для НомСтр= 5 по 18 Цикл
Для ы= 7 по 10 Цикл
Worksheet. Range( "A" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C" + НомСтр) . Borders( ы) . LineStyle= 1 ;
КонецЦикла ;
КонецЦикла ;
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0.00" ;
Исключение
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0,00" ;
Исключение
КонецПопытки ;
КонецПопытки ;
Application. Visible= - 1 ;
Window. Visible= - 1 ;
Worksheet. Range( "A5" ) . S_elect( ) ;
Window. FreezePanes = - 1 ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Установка полей и масштаба документа при сохранении из 1С MS Excel
Код 1C v 8.х Попытка
Excel = Новый COMОбъект( "Excel.Application" ) ;
Исключение
Сообщить( "ВНИМАНИЕ! TOpenOffice не установлен или недостаточно прав доступа!
| - " + ОписаниеОшибки( ) , СтатусСообщения. ОченьВажное) ;
Возврат ;
КонецПопытки ;
ТабДокумент = ПечатьЦенника( ВидЦенника) ;
ИмяФайла = ПутьДляСохранения+ "\" + ТабДокумент. ИспользуемоеИмяФайла+ ".xls" ;
ТабДокумент. Записать( ИмяФайла, ТипФайлаТабличногоДокумента. XLS97) ;
МакетОформления = Неопределено ;
Excel. Workbooks. Open( ИмяФайла) ;
КнигаExcel = Excel. Workbooks. Item( Excel. Workbooks. Count) ;
ЛистExcel = КнигаExcel. WorkSheets. Item( 1 ) ;
КнигаExcel. Activate( ) ;
ЛистExcel. Activate( ) ;
ЛистExcel. PageSetup. LeftMargin = 28 ;
ЛистExcel. PageSetup. RightMargin = 28 ;
ЛистExcel. PageSetup. TopMargin = 25 ;
ЛистExcel. PageSetup. BottomMargin = 25 ;
Если ТабДокумент. ОриентацияСтраницы = ОриентацияСтраницы. Ландшафт Тогда
ЛистExcel. PageSetup. Orientation = 2 ;
Иначе
ЛистExcel. PageSetup. Orientation = 1 ;
КонецЕсли ;
ЛистExcel. PageSetup. Zoom = ТабДокумент. МасштабПечати;
КнигаExcel. Save( ) ;
Excel. Visible = 1 ;
Excel. Quit( ) ;
OpenOffice Calc
Код 1C v 8.х Попытка
СервисМанагер = Новый COMОбъект( "Com.Sun.Star.ServiceManager" ) ;
Исключение
Сообщить( "Не могу создать объект Open Office!
| - " + ОписаниеОшибки( ) , СтатусСообщения. ОченьВажное) ;
Возврат ;
КонецПопытки ;
ТабДокумент = ПечатьЦенника( ВидЦенника) ;
ИмяФайла = ПутьДляСохранения+ "\" + ТабДокумент. ИспользуемоеИмяФайла+ ".xls" ;
ТабДокумент. Записать( ИмяФайла, ТипФайлаТабличногоДокумента. XLS97) ;
МакетОформления = Неопределено ;
Скрипт = новый COMОбъект( "MSScriptControl.ScriptControl" ) ;
Скрипт. language = "javascript" ;
Скрипт. eval( "Massiv=new Array()" ) ;
Массив = Скрипт. eval( "Massiv" ) ;
Скрипт. AddObject( "СервисМанагер" , СервисМанагер) ;
Скрипт. eval( "Massiv[0]=СервисМанагер.Bridge_GetStruct('com.sun.star.beans.PropertyValue')" ) ;
Скрипт. eval( "Massiv[0].Name='Hidden'" ) ;
Скрипт. eval( "Massiv[0].Value=true" ) ;
Стол = СервисМанагер. createInstance( "com.sun.star.frame.Desktop" ) ;
ВремПуть = СтрЗаменить( ПутьДляСохранения, "\" , "/" ) ;
ВремПуть = СтрЗаменить( ВремПуть, " " , "%20" ) ;
УРЛ = "file:///" + ВремПуть+ "/" + ТабДокумент. ИспользуемоеИмяФайла+ ".xls" ;
Документ = Стол. LoadComponentFromURL( УРЛ, "_blank" , 0 , Массив) ;
Документ. lockControllers( ) ;
Документ. addActionLock( ) ;
Листы= Документ. getSheets( ) ;
ЛистДанные= Листы. getByIndex( 0 ) ;
СтилиСтраницы= Документ. StyleFamilies. getByName( "PageStyles" ) ;
ПараметрыСтраницы= СтилиСтраницы. getByName( ЛистДанные. PageStyle) ;
ПараметрыСтраницы. LeftMargin = ТабДокумент. ПолеСлева * 100 ;
ПараметрыСтраницы. RightMargin = ТабДокумент. ПолеСправа * 100 ;
ПараметрыСтраницы. TopMargin = ТабДокумент. ПолеСверху * 100 ;
ПараметрыСтраницы. BottomMargin = ТабДокумент. ПолеСнизу * 100 ;
Если ТабДокумент. ОриентацияСтраницы = ОриентацияСтраницы. Ландшафт Тогда
ПараметрыСтраницы. IsLandscape = Истина ;
ПараметрыСтраницы. Width = 29700 ;
ПараметрыСтраницы. Height = 21000 ;
Иначе
ПараметрыСтраницы. IsLandscape = Ложь ;
ПараметрыСтраницы. Width = 21000 ;
ПараметрыСтраницы. Height = 29700 ;
КонецЕсли ;
ПараметрыСтраницы. PageScale = ТабДокумент. МасштабПечати;
Документ. unlockControllers( ) ;
Документ. removeActionLock( ) ;
Документ. store( ) ;
Документ. Close( Истина ) ;
Стол. terminate( ) ;
Категория:
Работа с Microsoft Office и OpenOffice Как сделать чтобы при выделении числе в табличном документе, отчете выводилась их сумма? Часто бывает необходимость сложить несколько чисел в печатной форме, например, как это сделано в Excel.
Сегодня решить посмотреть Бухгалтерию КОРП. Нашёл в ней очень интересную штуку: поле в котором показан результат сложения выделенных ячеек печатной формы. Конечно, такую штуку бы правильнее реализовать на уровне платформы. Но коль нет, можно оказывается сделать ручками. Как говориться, и за это богам спасибо.
Вот исходный код из Бухгалтерии КОРП:
Код 1C v 8.х
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
Сумма = 0 ;
Для Каждого Область Из ПолеТабличногоДокумента. ВыделенныеОбласти Цикл
Если ТипЗнч( Область) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
Для ИндексСтрока = Область. Верх По Область. Низ Цикл
Для ИндексКолонка = Область. Лево По Область. Право Цикл
Попытка
Сумма = Сумма + Число( СтрЗаменить( ПолеТабличногоДокумента. Область( "R" + Формат( ИндексСтрока, "ЧГ=0" ) + "C" + Формат( ИндексКолонка, "ЧГ=0" ) ) . Текст, " " , "" ) ) ;
Исключение
КонецПопытки ;
КонецЦикла ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
Возврат Сумма;
КонецФункции
Подумав немного, я добавил в функцию ещё расчёт среднего и определение количества ячеек с числами. Получилось вот что:
Код 1C v 8.х Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента, average = 0, count = 0) Экспорт
Сумма = 0 ;
count = 0 ;
Для Каждого Область Из ПолеТабличногоДокумента. ВыделенныеОбласти Цикл
Если ТипЗнч( Область) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
Для ИндексСтрока = Область. Верх По Область. Низ Цикл
Для ИндексКолонка = Область. Лево По Область. Право Цикл
Попытка
vNumber = Число( СтрЗаменить( ПолеТабличногоДокумента. Область( "R" + Формат( ИндексСтрока, "ЧГ=0" ) + "C" + Формат( ИндексКолонка, "ЧГ=0" ) ) . Текст, " " , "" ) ) ;
Сумма = Сумма + vNumber;
count = count + 1 ;
Исключение
КонецПопытки ;
КонецЦикла ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
Если count < > 0 Тогда
average = Сумма / count;
Иначе
average = 0 ;
КонецЕсли ;
Возврат Сумма;
КонецФункции
Результат на картинке:
Да, чуть не забыл самое главное, функцию надо вызвать в обработчике ПриАктивизацииОбласти поля табличного документа.
Автор: Pim Категория:
Табличный документ Выбрать Остатки и Обороты по указанным счетам, отбор по субконто и выгрузка результата в EXCEL Код 1C v 8.х Запрос= Новый Запрос;
Запрос. Текст= "
|ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Счет,
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто2,
| ХозрасчетныйОстаткиИОбороты.Субконто3,
| ХозрасчетныйОстаткиИОбороты.Организация,
| ХозрасчетныйОстаткиИОбороты.СуммаОборот,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
| &ДатаНач,
| &ДатаКон,
| Период,
| ,
| Счет В (&Cчета),
| ," ;
Если Не Контрагент. Пустая( ) Тогда
Запрос. Текст= Запрос. Текст+ "
| Субконто1 = &Контрагент
| ИЛИ Субконто2 = &Договор" ;
КонецЕсли ;
Запрос. Текст= Запрос. Текст+ "
|) КАК ХозрасчетныйОстаткиИОбороты
|" ;
СписокСчетов= Новый СписокЗначений;
СписокСчетов. Добавить( ПланыСчетов. Хозрасчетный. РасчетыСПоставщикамиИПодрядчиками) ;
СписокСчетов. Добавить( ПланыСчетов. Хозрасчетный. РасчетыПоАвансамВыданным) ;
Запрос. УстановитьПараметр( "Cчета" , СписокСчетов) ;
Запрос. УстановитьПараметр( "ДатаКон" , ДатаК) ;
Запрос. УстановитьПараметр( "ДатаНач" , ДатаН) ;
Запрос. УстановитьПараметр( "Договор" , Договор) ;
Запрос. УстановитьПараметр( "Контрагент" , Контрагент) ;
Результат = Запрос. Выполнить( ) ;
ТабДок= ЭлементыФормы. ТД;
ТабДок. Очистить( ) ;
ПечатьТЗвТаб( ТабДок, Результат) ;
Режим = РежимДиалогаВыбораФайла. Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла( Режим) ;
ДиалогОткрытияФайла. ПолноеИмяФайла = "" ;
Фильтр = "Excel(*.xls)|*.xls" ;
ДиалогОткрытияФайла. Фильтр = Фильтр;
ДиалогОткрытияФайла. МножественныйВыбор = Ложь ;
ДиалогОткрытияФайла. Заголовок = "Выберите куда сохранить файл Excel" ;
Если ДиалогОткрытияФайла. Выбрать( ) Тогда
ПутьКФайлу = ДиалогОткрытияФайла. ПолноеИмяФайла;
КонецЕсли ;
ТабДок. Записать( ПутьКФайлу, ТипФайлаТабличногоДокумента. XLS97) ;
Категория:
Запросы Группировка строк Excel В ниже указанном коде нужно убрать символ
_
Код 1C v 8.х
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Excel. Range( "A3:A6" ) . S_elect( ) ;
Excel. S_election. Rows. Group( ) ;
BegCell = Лист. Cells( 1 , 1 ) ;
EndCell = Лист. Cells( 4 , 1 ) ;
Лист. Range( BegCell, EndCell) . Rows. Group( ) ;
Код 1C v 7.x
Процедура Вывод()
Попытка
Application= СоздатьОбъект( "Excel.Application" ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , "!!!" ) ;
Сообщить( "Возможно, MS Excel не установлен на этом компьютере." ) ;
Возврат ;
КонецПопытки ;
WorkBook= Application. WorkBooks. Add( ) ;
Window= WorkBook. Windows( 1 ) ;
Window. Visible= 0 ;
Если WorkBook. Worksheets. Count= 0 Тогда
WorkBook. Worksheets. Add( ) ;
Иначе
Application. DisplayAlerts= 0 ;
Пока WorkBook. Worksheets. Count> 1 Цикл
WorkBook. Worksheets( 1 ) . Delete( ) ;
КонецЦикла ;
Application. DisplayAlerts= - 1 ;
КонецЕсли ;
Worksheet= WorkBook. Worksheets( 1 ) ;
Worksheet. Name= "Пример вывода" ;
Worksheet. Range( "A1" ) . Value= "Пример вывода из 1С:Предприятия в MS Excel" ;
Worksheet. Range( "A2" ) . Value= "сегодня " + ТекущаяДата( ) ;
Worksheet. Range( "A1:A2" ) . Font. Size= 14 ;
Worksheet. Range( "A1:A2" ) . Font. Bold= - 1 ;
Worksheet. Columns( 1 ) . ColumnWidth= 60 ;
Worksheet. Columns( 2 ) . ColumnWidth= 15 ;
Worksheet. Columns( 3 ) . ColumnWidth= 15 ;
Worksheet. Range( "A4" ) . Value= "Первая колонка" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "A4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "A4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "A4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "A4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "B4" ) . Value= "Вторая" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "B4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "B4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "B4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Range( "C4" ) . Value= "Третья" ;
Для ы= 7 по 10 Цикл
Worksheet. Range( "C4" ) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C4" ) . Borders( ы) . Weight= - 4138 ;
КонецЦикла ;
Worksheet. Range( "C4" ) . Interior. ColorIndex= 15 ;
Worksheet. Range( "C4" ) . HorizontalAlignment= - 4108 ;
Worksheet. Outline. SummaryRow= 0 ;
Worksheet. Range( "A5" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B5" ) . Value= 123.45 ;
Worksheet. Range( "B5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C5" ) . Value= 678.9 ;
Worksheet. Range( "C5" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A6" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B6" ) . Value= 123.45 ;
Worksheet. Range( "B6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C6" ) . Value= 678.9 ;
Worksheet. Range( "C6" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A7" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B7" ) . Value= 123.45 ;
Worksheet. Range( "C7" ) . Value= 678.9 ;
Worksheet. Range( "A8" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B8" ) . Value= 123.45 ;
Worksheet. Range( "C8" ) . Value= 678.9 ;
Worksheet. Range( "A9" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B9" ) . Value= 123.45 ;
Worksheet. Range( "B9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C9" ) . Value= 678.9 ;
Worksheet. Range( "C9" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A10" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B10" ) . Value= 123.45 ;
Worksheet. Range( "C10" ) . Value= 678.9 ;
Worksheet. Range( "A11" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B11" ) . Value= 123.45 ;
Worksheet. Range( "C11" ) . Value= 678.9 ;
Worksheet. Range( "A12" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "B12" ) . Value= 123.45 ;
Worksheet. Range( "B12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "C12" ) . Value= 678.9 ;
Worksheet. Range( "C12" ) . Font. ColorIndex= 5 ;
Worksheet. Range( "A13" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B13" ) . Value= 123.45 ;
Worksheet. Range( "B13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C13" ) . Value= 678.9 ;
Worksheet. Range( "C13" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A14" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B14" ) . Value= 123.45 ;
Worksheet. Range( "C14" ) . Value= 678.9 ;
Worksheet. Range( "A15" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B15" ) . Value= 123.45 ;
Worksheet. Range( "C15" ) . Value= 678.9 ;
Worksheet. Range( "A16" ) . Value= "Объект аналитики" ;
Worksheet. Range( "A16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "B16" ) . Value= 123.45 ;
Worksheet. Range( "B16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "C16" ) . Value= 678.9 ;
Worksheet. Range( "C16" ) . Font. ColorIndex= 3 ;
Worksheet. Range( "A17" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B17" ) . Value= 123.45 ;
Worksheet. Range( "C17" ) . Value= 678.9 ;
Worksheet. Range( "A18" ) . Value= "Объект аналитики" ;
Worksheet. Range( "B18" ) . Value= 123.45 ;
Worksheet. Range( "C18" ) . Value= 678.9 ;
Для НомСтр= 5 по 18 Цикл
Для ы= 7 по 10 Цикл
Worksheet. Range( "A" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "B" + НомСтр) . Borders( ы) . LineStyle= 1 ;
Worksheet. Range( "C" + НомСтр) . Borders( ы) . LineStyle= 1 ;
КонецЦикла ;
КонецЦикла ;
Worksheet. Range( "7:8" ) . Rows. Group( ) ;
Worksheet. Range( "10:11" ) . Rows. Group( ) ;
Worksheet. Range( "14:15" ) . Rows. Group( ) ;
Worksheet. Range( "17:18" ) . Rows. Group( ) ;
Worksheet. Range( "6:11" ) . Rows. Group( ) ;
Worksheet. Range( "13:18" ) . Rows. Group( ) ;
Worksheet. Outline. ShowLevels( 1 ) ;
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0.00" ;
Исключение
Попытка
Worksheet. Range( "B5:C18" ) . NumberFormat= "# ##0,00" ;
Исключение
КонецПопытки ;
КонецПопытки ;
Application. Visible= - 1 ;
Window. Visible= - 1 ;
Worksheet. Range( "A5" ) . S_elect( ) ;
Window. FreezePanes = - 1 ;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Сохранение отчета в Excel и его открытие Код 1C v 8.х ИмяФайла = "Отчет.xls" ;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла( РежимДиалогаВыбораФайла. Сохранение) ;
ДиалогОткрытияФайла. ПолноеИмяФайла = ИмяФайла;
ДиалогОткрытияФайла. Каталог = КаталогВременныхФайлов( ) ;
ДиалогОткрытияФайла. Фильтр = "Файлы Microsoft Excel (*.xls)|*.xls|Все файлы (*.*)|*.*" ;
ДиалогОткрытияФайла. МножественныйВыбор = Ложь ;
Если ДиалогОткрытияФайла. Выбрать( ) тогда
ЭлементыФормы. ПолеОтчета. Записать( ДиалогОткрытияФайла. ПолноеИмяФайла, ТипФайлаТабличногоДокумента. XLS) ;
ДокExcel = ПолучитьCOMОбъект( "" , "Excel.Application" ) ;
ДокExcel. Workbooks. Open( ДиалогОткрытияФайла. ПолноеИмяФайла) ;
ДокExcel. Visible = 1 ;
КонецЕсли ;
Категория:
Работа с Microsoft Office и OpenOffice