Как да разтоваря програмно от 1s до excel. Качване на данни в Excel със задаване на различни параметри. Две основни изисквания, които трябва да бъдат изпълнени

Много често се изисква да получите данни от 1C 8.3 и да запазите информацията във външен файл, с други думи, да качите от 1C enterprise. Задачата почти винаги е осъществима без участието на 1C програмисти.

Помислете за редица полезни съвети, с които можете да качвате данни от 1C във външна информационна система.

В 1C има няколко метода, чрез които можете да получите информация, без да включвате специалисти:

  • Разтоварване на цялата база данни от 1C 8.3 - за последващо изтегляне на друг компютър
  • Запазвайте отчети и разпечатки в Excel, Word или PDF
  • Разтоварване на таблици от 1C
  • Получаване на информация чрез конзолата за заявки

Повече за тях:

Как да разтоварите цялата база данни от 1s 8.3 (към .dt файл)

За да направите това, трябва да влезете в режим на конфигуратор, след което да изберете елемента "Администриране" - "Разтоварване на информационна база" в главното меню:

След това трябва само да посочите името на бъдещия файл и местоположението му на диска.

За последващо качване в друга база данни, щракнете върху бутона "Качване на информационна база" и изберете качения преди това файл.

Разтоварване на отчети и разпечатки от 1C в Excel

Този метод е универсален и много прост. За да направите това, е достатъчно, когато отворите формуляр или отчет за печат.

Например, отворете файла за печат TORG 12, натиснете ctrl+S (или в менюто File - Save As) и изберете типа на файла и името му:

За същата система работи - отчетът се разтоварва с две кликвания:

Вземете 267 1C видео урока безплатно:

Предлага се запис в основните формати - excel, word, pdf, html, txt и др.

Разтоварване на таблици от 1C 8.3

Често има такива банални задачи като „получаване на списък с плащания за текущата година“, „разтоварване на книга за покупки или продажби“ или „разтоварване на стоки от фактура № 256“. Решаването на такива проблеми е доста просто.

Например, трябва да получа всички разписки от контрагента "Вектор" със сума над 1000. Нека отворим формуляра за списък и зададем необходимите филтри в списъка:

Системата ще предложи възможност за извеждане - към табличен документ или текстов документ, ще изберем електронна таблица. Програмата 1C ще покаже информация в такъв документ с електронна таблица, който, подобно на отчетите, може да бъде запазен във формата, от който се нуждаем:

Подобни действия могат да се извършват за почти всяка таблична част в 1C 8.2. Например трябваше да качим списък със стоки от разписка № МСК00003, няма проблем. Това се прави много просто - отворете документа, извикайте контекстното меню и след няколко кликвания получаваме желаното качване в желания формат:


Качване на дневник за транзакции от 1C в Excel:

Получаване на информация чрез конзолата за заявки

Въпреки това, не цялата информация може да бъде намерена в проста таблична част на 1C 8.2. Понякога трябва да съберете данни от няколко източника на данни, да ги свържете чрез някои полета.

Този метод е подходящ за технически разбиращи хора, които познават основите на езика на заявките. Състои се в получаване на резултата от заявката с помощта и запазването му в необходимия ни формат.

Например изисква се получаване на всички контрагенти-доставчици и техния телефонен номер. За да направите това, напишете следната заявка:

Получената таблица може да бъде качена и в желания файлов формат:

Можете да качите получените данни в друга база данни 1C, като използвате "". Гледайте видео инструкцията на примера на номенклатурата:

Например, нека да създадем Оборотна ведомост (Справки - Стандартни - Баланс).

Посочете папката - къде да запишете документа, задайте име на файла и изберете Тип файлExcel лист (*.xls)или Лист Excel2007-...(*.xlsx)са различни версии на Excel. Можете да запазите и в двата формата и да видите кой ви подхожда най-добре. Освен това при записване са налични други файлови формати. Натискаме бутона Запазване .

В нашия пример сме избрали папката Документи от 1C и задайте името на файла - OSV за 9 месеца. Например, записваме в различни Excel формати.


След записване документите ще бъдат разположени в посочената папка.

И двата файла ще бъдат отворени, т.к. по-ранните версии на документи се поддържат от по-късни версии на програми.

Как да запазите документ в Excel в 1C

Помислете за запазване на примера на документ Платежно нареждане . Нека оформим неговата печатна форма и сред бутоните на лентата с инструменти виждаме бутон с дискета.

При натискане се отваря прозорец за запазване на документа, където посочваме папката – къде да се записва и избираме желания формат. В нашия случай това е Microsoft Excel лист. Поставете отметка в квадратчето и щракнете върху бутона Готов. Документът се записва в папка.

Качване на таблици от 1C в Excel

Понякога става необходимо да се формира списък от тези таблични раздели на дневници на документи, директории и др. В този случай можете да зададете избора на необходимите елементи (дата, име на контрагента). Помислете за пример.

Искаме да изброим Платежни нареждания за плащане на данъци и вноски за периода.

За да изберете документи, можете да ги маркирате, като задържите бутона ctrlили Shift, както и да използвате за избиране на група редове. След това натискаме бутона | Повече ▼и изберете екип Показване на списък .

В прозореца, който се отваря, конфигурираме кои колони трябва да показваме и избираме - показване в документ с електронна таблица . Ако сме избрали група редове в списъка, тогава поставете отметка в квадратчето - дисплей Само избрани . Кликнете Добреи списъкът е готов.

Изглежда така.

Полученият отчет може да бъде запазен във всякакъв формат, включително Excel - *.xls. За да направите това (както е описано по-горе), изберете командата Запазване(или Запази като ) в менюто Файли задайте параметрите.

Тези действия могат да се извършват с всякакви списъци на програмата 1C.

Когато работите с големи списъци, например директория Номенклатура , можете да зададете допълнителен избор и да направите групиране, да зададете реда на сортиране на данните.

Ето защо, преди да оформите какъвто и да е списък, трябва да обърнете внимание на командата Персонализиране на списъка в бутон | Повече ▼ .

Как да запазите данните от клетката на таблицата от 1C в Excel

Понякога трябва да копираме някои данни от отчет или документ. Това може да стане чрез просто копиране. За да направите това, изберете някои от желаните клетки и щракнете с десния бутон върху командата копие(или ctrl+c).

Като отидете на програмата превъзходенизползвайки командата Поставете, добавете копирания фрагмент към таблицата. Този метод работи с всички данни в 1C, както в генерираните таблици, така и с клетки от формуляри - в директории, списания, документи.

Помогна ли статията?

Вземете още един таен бонус и пълен достъп до системата за помощ BuhExpert8 за 14 дни безплатно

Този метод е прост. Същността му е, че обектът SpreadsheetDocumentима методи:

  • горя (< ИмяФайла>, < ТипФайлаТаблицы >) за качване на данни във файл;
  • Прочети (< ИмяФайла>, < СпособЧтенияЗначений >), за да заредите данни от файл.

внимание!

Методът Write() е наличен както на клиента, така и на сървъра. Методът Read() е достъпен само от страната на сървъра. Трябва да запомните това
когато планирате взаимодействие клиент-сървър.

Помислете за пример за запазване на документ от електронна таблица във файл. Необходимо е да създадете и попълните обекта TableDocument по всякакъв начин и разтоварванефайл се прави само с един ред:

TabDoc . Write(FilePath, SpreadsheetDocumentFileType.XLSX);

Тук TabDoc- генерирана електронна таблица, Пътят до файла- името на файла за качване, SpreadsheetDocumentFileType.XLSX— формата на генерирания файл. Поддържат се следните Excel формати:

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

TabDoc = Нов документ за електронна таблица;
TabDoc . Read(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Тук Пътят до файла- Път до изтегления Excel файл. WayToReadValuesSpreadDocument.Valueопределя как да се интерпретират данните, прочетени от изходния документ. Налични опции:

  • Значение;
  • Текст.

Обмен чрез OLE

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

  • На компютъра на крайния потребител, ако обменът се извършва от страна на клиента;
  • На сървърния компютър на 1C:Enterprise, ако обменът се извършва от страната на сървъра.

Пример разтоварване:

// Създаване на COM обект
Excel = Нов COMObject("Excel.Application");
// Деактивиране на предупреждения и въпроси
Excel . displayalerts = невярно;
// Създаване на нова книга
Книга = Excel. работни тетрадки. добави();
// Позициониране на първия лист
Лист = Книга. Работни листове(1);

// Записване на стойност в клетка
Лист . Клетки (номер на ред, номер на колона). Стойност = Стойност на клетката;

// Запазване на файла
Книга . SaveAs(Име на файл);


Excel . Изход();
Excel = 0;

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

// -- ОПЦИЯ 1 --

// Създаване на COM обект
Excel = Нов COMObject("Excel.Application");
// Отворена книга
Книга = Excel. работни тетрадки. отворено( Пътят до файла);

Лист = Книга. Работни листове(1);

// Затвори книгата
Книга . Затвори(0);

// Затворете Excel и освободете паметта
Excel . Изход();
Excel = 0;

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

// Отворена книга
Книга = GetCOMObject( Пътят до файла);
// Позициониране върху желания лист
Лист = Книга. Работни листове(1);

// Прочетете стойността на клетката, обикновено това е мястото, където се намира веригата за байпас на клетката
CellValue = Лист. Клетки (номер на ред, номер на колона). стойност;

// Затвори книгата
Книга . приложение. Qui T();

За Околовръстен пътвсички попълнени редове на Excel листа, можете да използвате следните трикове:

// -- ОПЦИЯ 1 --
Брой редове = лист. Клетки (1 , 1 ). Специални клетки(11). ред;
За номер на ред = 1 по брой редове цикъл
CellValue = Лист. Клетки (номер на ред, номер на колона). стойност;
EndCycle;

// —— ВАРИАНТ 2 ——
номер на ред = 0;
Докато True Loop
Номер на ред = Номер на ред + 1;
CellValue = Лист. Клетки (номер на ред, номер на колона). стойност;
Ако НЕ е ValueFilled(CellValue) Тогава
прекъсвам;
EndIf;
EndCycle;

Вместо да преминавате последователно през всички редове на листа, можете изхвърлете всички данни в масиви работи с него. Този подход ще бъде по-бърз при четене на голямо количество данни:

Общо колони = лист. Клетки (1 , 1 ). Специални клетки(11). Колона;
Общо редове = Лист. Клетки (1 , 1 ). Специални клетки(11). ред;

Регион = Лист. Диапазон (Лист. Клетки (1 , 1 ), Списък. Клетки (Общо редове, Общо колони));
Данни = Регион. стойност. разтоварвам();

Таблицата по-долу изброява най-търсените свойства и методи за работа с Excel чрез OLE:

Действие Код Коментар
Работа с приложението
Настройка на видимостта на прозореца на приложението Excel . видими= невярно;
Настройка на режима на показване на предупреждение (показване/не показване) Excel . DisplayAlerts= невярно;
Затваряне на приложението Excel . Изход();
Работа с книга
Създайте нова книга Книга = Excel. работни тетрадки. Добавете();
Отваряне на съществуваща работна книга Книга = Excel. работни тетрадки. Отворете (Име на файл);
Запазване на книга Книга . SaveAs(Име на файл);
затваряне на книгата Книга . Затвори(0);
Работа с лист
Настройка на текущия лист Лист = Книга. Работни листове (Номер на лист);
Настройка на име Лист . Име = Име;
Настройка на защита Лист . Защитете();
Премахване на защитата Лист . Премахване на защитата();
Задаване на ориентация на страницата Лист . Настройка на страницата. Ориентация = 2; 1 - портрет, 2 - пейзаж
Задаване на лявата граница Лист . Настройка на страницата. LeftMargin = Excel. Сантиметри до точки (сантиметри);
Задаване на горната граница Лист . Настройка на страницата. TopMargin = Excel. Сантиметри до точки (сантиметри);
Задаване на правилната граница Лист . Настройка на страницата. RightMargin = Excel. Сантиметри до точки (сантиметри);
Задаване на долната граница Лист . Настройка на страницата. BottomMargin = Excel. Сантиметри до точки (сантиметри);
Работа с редове, колони, клетки
Настройка на ширината на колоната Лист . Колони (ColumnNumber). ColumnWidth = Ширина;
Премахване на линия Лист . Редове (Номер на ред). Изтрий();
Изтриване на колона Лист . Колони (ColumnNumber). Изтрий();
Изтриване на клетка Лист . Клетки (номер на ред, номер на колона). Изтрий();
Задаване на стойност Лист . Клетки (номер на ред, номер на колона). Стойност = Стойност;
Сливане на клетки Лист . Диапазон (Лист. Клетки (Номер на ред, Номер на колона), Лист. Клетки (Номер на ред1, Номер на колона1)). Обединяване();
Инсталиране на шрифта Лист . Клетки (номер на ред, номер на колона). Шрифт. Име = Име на шрифта;
Задаване на размера на шрифта Лист . Клетки (номер на ред, номер на колона). Шрифт. Размер = Размер на шрифта;
Настройка на получер шрифт Лист . Клетки (номер на ред, номер на колона). Шрифт. Удебелен = 1 ; 1 - получер, 0 - нормален
Задаване на курсив Лист . Клетки (номер на ред, номер на колона). Шрифт. Курсив = 1 ; 1 - курсив, 0 - нормален
Задаване на подчертан шрифт Лист . Клетки (номер на ред, номер на колона). Шрифт. Подчертайте = 2 ; 2 - подчертано, 1 - не

За да разберете кое свойство трябва да бъде променено или кой метод да извикате, можете да използвате макроси Excel. Ако запишете макрос с необходимите действия, след това можете да видите програмния код във VBA на записания макрос.

Използване на COMSafeArray

Когато разтоварвате големи количества данни от 1C в Excel, можете да използвате обекта за ускоряване COMSafeArray. Както е дефинирано от помощния синтаксис, COMSafeArray е обвивка на обект над многоизмерен масив SafeArrayот COM. Позволява ви да създавате и използвате SafeArray за обмен на данни между COM обекти. Просто казано, това е масив от стойности, които могат да се използват за обмен между приложения, използващи OLE технология.

// Създаване на COMSafeArray
ArrayCom = Нов COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// Попълване на COMSafeArray
За Str = 0 Общо редове - 1 цикъл
За Брой = 0 Общо колони - 1 цикъл
ArrayCom . SetValue(число, Str, стойност);
EndCycle;
EndCycle;
// Присвояване на стойностите на областта на листа на Excel от COMSafeArray
Лист . Диапазон (Лист. Клетки (1 , 1 ), Списък. Клетки (Общо редове, Общо колони)). Стойност = ArrayCom;

Обмен чрез ADO

Един Excel файл, когато се обменя чрез ADO, е база данни, която може да бъде достъпна чрез SQL заявки. Не е необходима инсталация на MS Excel, но е необходим ODBC драйвер, чрез който ще се осъществява достъпът. Използваният ODBC драйвер се определя чрез посочване на низа за свързване към файла. Обикновено необходимият драйвер вече е инсталиран на компютъра.

Обменът чрез ADO е значително по-бърз от обмена чрез OLE, но при разтоварване няма начин да се използва функционалността на Excel за декориране на клетки, маркиране на страници, настройка на формули и т.н.

Пример разтоварване:


Връзка = Нов COMObject("ADODB.Connection");


Съединение . ConnectionString="

|Източник на данни=" + Име на файл + ";
;
Съединение . отворено(); // Отворете връзката

// Създаване на COM обект за командата
Команда = Нов COMObject("ADODB.Command");
Екип

// Присвояване на команден текст за създаване на таблица
Екип . команден текст= „СЪЗДАВАНЕ НА ТАБЛИЦА [Лист1] (Колона1 char(255), Колона2 дата, Колона3 int, Колона4 float)“;
Екип . изпълни(); // Изпълнение на команда

// Присвояване на команден текст за добавяне на ред в таблица
Екип . команден текст= "INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) стойности ('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Изпълнение на команда

// Изтриване на командата и затваряне на връзката
команда = недефинирана;
Съединение . близо();
Връзка = Недефинирана;

За да създадете нов лист и да оформите неговата структура, можете да използвате обектите ADOX.КаталогИ ADOX.Таблица. В този случай кодът ще изглежда така:

// Създаване на COM обект за работа с книгата
Книга = Нов COMObject("ADOX.Catalog");
Книга . ActiveConnection = Връзка;

// Създаване на COM обект за работа със структурата от данни на листа
Таблица = Нов COMObject("ADOX.Table");
Таблица . Име = "Лист1" ;
Таблица . Колони. Append("Колона1" , 202 );
Таблица . Колони. Append("Column2" , 7 );
Таблица . Колони. Append("Column3" , 5 );
Таблица . Колони. Append("Column4" , 5 );

// Създаване на лист в книгата с описаната структура
Книга . маси. добавяне (таблица);
таблица = недефинирана;
книга = недефиниран;

В горния пример, в метода

Таблица . Колони. Добавете("Колона1", 202);

вторият параметър определя типа колона. Параметърът не е задължителен, ето някои стойности на тип колона:

  • 5-adDouble;
  • 6 - рекламна валута;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203-adLongVarWChar.

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

// Създайте COM обект за връзката
Връзка = Нов COMObject("ADODB.Connection");

// Задаване на низ за връзка
Съединение . ConnectionString="
|Доставчик=Microsoft.ACE.OLEDB.12.0;
|Източник на данни=" + Име на файл + ";
|Разширени свойства=""Excel 12.0 XML;HDR=ДА"";";
Съединение . отворено(); // Отворете връзката

// Създайте COM обект, за да получите селекция
Избор = Нов COMObject("ADODB.Recordset");
RequestText = „ИЗБЕРЕТЕ * ОТ [Sheet1$]“;

// Изпълнение на заявката
проба . Open(QueryText, Connection);

// Заобикаляне на резултата от селекцията
Докато НЕ взема проби. EOF() цикъл
ColumnValue1 = Избор. полета. Елемент ("Колона1"). стойност ; // Препращане по име на колона
Стойност на колона2 = избор. полета. Елемент(0). стойност; // Извличане по индекс на колона
проба . Преместване на следващия();
EndCycle;

проба . близо();
Проба = недефинирана;
Съединение . близо();
Връзка = недефинирана;

В низа за свързване, параметърът HDRопределя как ще се възприема първият ред на листа. Възможни опции:

  • ДА - първият ред се възприема като имената на колоните. Стойностите могат да бъдат достъпни по име и по индекс на колона.
  • НЕ - Първият ред се приема като данни. Стойностите могат да бъдат достъпни само чрез индекс на колона.

В дадените примери се разглеждат само няколко ADO обекта. Обектният модел ADO се състои от следните обекти:

  • Връзка;
  • команда;
  • набор от записи;
  • запис;
  • полета;
  • поток;
  • грешки;
  • параметри;
  • Имоти.

Качване без програмиране

За да запазите данни от 1C в Excel, не винаги е препоръчително да прибягвате до програмиране. Ако в режим Enterprise потребителят може да покаже данните, необходими за качване, тогава е възможно да ги запишете в Excel без програмиране.

За да запишете документ с електронна таблица (например резултат от отчет), можете да извикате командата Запазванеили Запази като…главно меню.

В прозореца, който се отваря, трябва да изберете директорията, името и формата на записания файл.

За да запазите данните от динамични списъци (например списък с елементи), трябва:

  1. Изведете данни в електронна таблица с помощта на командата Още ⇒ Показване на списък...;
  2. Запазете документа с електронната таблица в необходимия формат.

Качването или изтеглянето на информация в 1C е една от най-често срещаните задачи при работа с конфигурации. Тази статия ще ви помогне бързо да обменяте данни между бази данни с идентични 1C конфигурации.


Прехвърлянето на данни е необходимо в ситуации, когато трябва да качите данни, за да запазите или създадете архивно копие на справочниците "Номенклатура", "Разходи"; документи "Въвеждане на начални салда", "Входящ касов ордер" и др. Тоест, всички обекти на програмата, включително регистри на счетоводство, информация и спестявания.

За да изпълним тази задача, се нуждаем от обработка - Обработка на качване / изтегляне на данни IB 1C8.

Например, трябва да запазим директорията "Контрагенти", за да можем в бъдеще, в случаите, когато се окаже, че е повредена в работеща база данни или някой контрагент случайно бъде изтрит в нея, да изтеглим пълния списък.


И така, трябва да заредим данните от директорията във файл с разширение "xml", с други думи, да направим негово архивно копие. За това имаме нужда от:

  • Влезте в режим "Предприятие" и отворете базата данни, от която ще запазим контрагентите
  • В базата данни 1s в главното меню щракнете върху „Файл - Отваряне“ и изберете изтегления файл с обработка, връзката към която се намира по-горе в статията. Отваряме го

Изберете колоната "Конфигурационни обекти" и поставете отметки в квадратчетата пред всички обекти, които трябва да разтоварим. В нашия случай трябва да поставим отметка в секцията „Директории“ до реда „Изпълнители“.

По-горе, срещу полето за въвеждане „Къде“, щракнете върху бутона „…“ и посочете къде ще бъдат разтоварени основните елементи. Имайте предвид, че в допълнение към избора на директория, трябва да въведете името на файла (разширението на файла трябва да е "xml")


В друга колона вдясно, „Качване, ако е необходимо…“, квадратчетата за отметка могат да бъдат отметнати навсякъде, ако трябва да изтеглим съседни елементи от базата данни. Ако няма квадратчета за отметка в тази колона пред директорията "Банкови сметки", по-късно, по време на зареждане от създавания качващ файл, данните на директория "Контрагенти" с име "Основна банкова сметка" може да са празни или съответното поле ще гласи „Обектът не е намерен“. Ако оставим отметка пред тази директория, тогава за контрагента, свързан с нея, тази банкова сметка също ще бъде качена в архивно копие.

Сега щракнете върху „Изпълни“ и изчакайте, докато напредъкът на операцията достигне 100%


По този начин завършихме разтоварването на ВСИЧКИ контрагенти от нашата база данни 1C. Ако е необходимо, можете да получите достъп до тях по всяко време, ако трябва да ги възстановите в работеща база данни или във всяка друга база данни с подобна конфигурация.

Сега нека да преминем към зареждане на данни от направеното архивно копие на директорията в друга или използвана база данни:

  • Отворете базата данни, в която ще бъдат заредени запазените елементи на информационната база. В нашата ситуация имаме нужда от списък с изпълнители
  • Сега, както в предишния случай, в главното меню щракнете върху „Файл → Отвори“ и изберете изтегления файл с обработка, връзката към която се намира по-горе в статията
  • Посочете пътя до файла с данните, които ще бъдат заредени в базата данни 1C

Щракнете върху бутона "Изпълни".

Очакваме завършването на зареждането на директорията в базата данни


Имайте предвид, че чрез обработката, представена в статията, можете да качвате и изтегляте всички обекти на информационна база между едни и същи конфигурации. Ако трябва да разтоварите всички обекти на базата 1C, тогава съответно поставете отметки в квадратчетата до всички конфигурационни обекти: сметкограми документи, директории и др.

Ако не сте успели, нашият специалист може да дойде и.

Настройвам. Нека се свържем. Нека го оправим. Нека намерим грешка 1s.

Механизмът за създаване на документи с електронни таблици и печатни формуляри в 1C е доста обмислен и добре развит, но, разбира се, е далеч от функционалността, внедрена в Microsoft Excel. Ето защо много потребители предпочитат да действат според следния алгоритъм:

  • Създайте печатен формуляр в 1C;
  • Запишете данните като Excel лист (фиг.1) или копирайте таблицата;
  • Продължете да работите с информация в друга програма.

И често имат въпрос: как директно да качват информация от 1C в Excel, заобикаляйки допълнителни стъпки?

Две основни изисквания, които трябва да бъдат изпълнени

За безпроблемното функциониране на нашата обработка е необходимо:

  1. Да имате инсталиран Microsoft Office и по-специално Excel на компютъра на потребителя (ще се свържем с приложението чрез създаване на COM обект);
  2. Представете си структурата за съхранение на данни в Excel (разберете как се формират имената на клетките, знайте какво е лист, книга и т.н.).

Едва след като се уверите, че тези две точки са изпълнени, трябва да продължите към по-нататъшно развитие.

Алгоритъм за разтоварване и неговото внедряване в 1C

Последователността от действия при разтоварване от 1C в Excel може да бъде представена чрез следната последователност от стъпки:

  1. Формираме набор от данни, които трябва да бъдат запазени в Excel;
  2. Създайте връзка с приложението (стартирайте го);
  3. Попълваме файла с качени данни;
  4. Запазваме файла;
  5. Затворете отвореното приложение.

Сега в този списък по-подробно.

Формиране на набор от данни

Източникът на данни може да бъде резултат от заявка, отпечатана форма на документ с електронна таблица или всяка селекция от елементи. В нашия случай ще качим регистъра на документите "Получаване на стоки и услуги" за текущия месец (фиг. 2)

Фиг.2

Програмно стартираме приложението

Както бе споменато по-горе, за да започнем, ще използваме режима на свързване Com. Кодът на фигура 3 показва как може да се направи това.

Фиг.3

Умишлено вмъкнахме процедурата за създаване на нов обект в конструкцията Attempt - Exception-End Attempt, за да изключим всякакви нестандартни ситуации в по-нататъшния ход на обработка.

Попълване на файла, запазването му и изключване на приложението

Първо, трябва да решим какво искаме да направим: да качим данни в съществуващ файл или да създадем нов:

  • В първия случай трябва да стартираме диалоговия прозорец за избор на файл и да получим пълното име на съществуващото хранилище за информация;
  • Във втория случай трябва независимо да измислим име за създавания файл и да определим местоположението му (именно от тези два термина ще бъде създадено името на файла).

След като решим къде ще съхраняваме нашите данни, ще преминем към директно попълване на файла, за това ще създадем процедура и ще предадем нашата селекция от документи за текущия месец в нея като параметър. (фиг.4)

Фиг.4

Както можете да видите от кода, първо създадохме книга, в която ще се съхранява нашата таблица. По подразбиране Excel създава три работни листа в работна книга при първото стартиране. За да въведем данни, можем да изберем всеки от тях, като просто посочим номера на листа като параметър към метода WorkSheets(). Ако трябва да добавим нов лист към книгата, ще трябва да напишем ред като:

NewSheet=NewBook.Sheets.Add();

На това приключихме с формирането на общата структура на документа и продължаваме да го попълваме.

С цикъл с брояч преминаваме през редовете и колоните на нашата таблица със стойности, за да получим данните от конкретна клетка и да ги прехвърлим в крайната таблица.

Тук е важно да се има предвид, че индексите на редовете и колоните на таблицата със стойности в 1C започват от 0 и завършват с число 1 по-малко от броя на тези редове и колони, както и номерирането на редовете и колоните на клетките в Excel започва от 1.

След като преминем през нашата таблица и я преместим на ново място, трябва да запазим създадения файл. Параметърът FilePath, указан в процедурата SaveAs, трябва да съдържа пълния път до файла, включително неговото име.

Ако на вашия компютър е инсталиран Microsoft Office версия 2007 или по-нова, може да се наложи да запишете документ с електронна таблица във формат Excel 2003, можете да направите това програмно, като посочите стойността (-4143) като втория параметър на процедурата SaveAs. Това е числото, което показва формата на записания файл, съответстващ на разширението xls.

В случай на грешка (да речем, че файлът, който се запазва, вече е отворен), нашата обработка трябва да предупреди потребителя за нестандартна ситуация, която е написана в процедурата Report ().

Тъй като не планираме да продължим да работим с Excel, трябва да затворим приложението. Тук трябва да се отбележи, че можете визуално да проследите изпълнението на нашата обработка само с помощта на диспечера на задачите, той няма да се вижда в списъка с отворени прозорци. Отново, ако приложението не е затворено, то ще заема място в RAM и може да доведе до конфликти при стартиране на допълнителни копия на Excel.

Допълнителен начин за запазване на документ с електронна таблица от 1C в Excel

Друг начин за разтоварване е директно записване на табличния документ на диск, без да се показва на екрана или преди извеждането му, кодът на съответната процедура е показан на (фиг. 5).

Фиг.5

Една много важна забележка: в програмите 1C и Excel се различава между целочислени и дробни разделители в числови стойности, тази точка трябва да се вземе предвид при разтоварване, за да се избегне изкривяване на данните.



Продължение на темата:
Windows

Наталия Комарова , 28.05.2009 г. (25.03.2018 г.) Когато четете форум или блог, запомняте авторите на публикациите по псевдоним и ... по снимката на потребителя, така наречения аватар ....

Нови статии
/
Популярен