У дома / Игрови конзоли / Как да добавите таблица на excel към 1s. Кое е по-добро - "1C" или "Excel"? Имате въпрос или нужда от помощ от консултант?

Как да добавите таблица на excel към 1s. Кое е по-добро - "1C" или "Excel"? Имате въпрос или нужда от помощ от консултант?

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

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

Добре е, ако току-що започвате бизнеса си, като постепенно вземате предвид необходимите данни в таблицата за взаимоотношения с клиенти, доставчици, регулаторни органи, изграждате своя произволна структура, но какво да правите след това, когато базата данни стане обемна и персоналът ще да си в десетките? Все едно да се разглеждат според собствените им параметри? Аз съм привърженик на това удобството да не се бърка с навика, който често пречи на систематизирането на бизнеса, а оттам и на оптимизирането му.

За по-голяма яснота, нека си представим какви нужди могат да възникнат при автоматизирането на счетоводството, например в търговията:

1. Анализ на продажбите за определен период.

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

2. Складово счетоводство.
Трябва ли да обяснявам, че за продажбите също е важно да разбират наличността на стоките на склад, кои стоки могат да бъдат резервирани и кои са изчерпани, както и какво трябва да се поръча? Мисля, че тук всичко е ясно.

3. Поддържане на база данни на контрагентите.
Дори ако собственикът продава само това, което може да се купи тук и сега, което е типично за B2C сектора, тогава той има малко по-различни отношения с базата на доставчика - договори, първични ... Представете си колко удобно е, когато всичко е свързано с доставчика се показва автоматично веднага в една база данни? Мениджърът, отговорен за склада, веднага вижда наличността на стоките в склада, друг служител, отговарящ за документите, следи информация за тяхната наличност, изпълняват ли се всички задължения по договорни отношения, кой на кого дължи и колко. А в случай на несъответствия можете да проверите данните за определен период, като генерирате резултат за по-малко от минута.

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

Ако нямате много клиенти и доставчици, Excel наистина ще ви подхожда, тъй като има достатъчно време да създадете свои собствени схеми в таблицата и да ги попълните, с последващо разпределяне на документи в различни папки на вашия компютър: договори, доставчици, клиенти, клиенти в квартала, клиенти в процес на разработка, клиенти за изтриване - безкрайният и вълнуващ процес на създаване на папки в папка. И ако има много информация, удобно ли е да поддържате запис на вашата база данни в този случай? Разбира се, винаги има изключения, понякога има организации с големи обороти, чиито финансови данни се поддържат само в Excel. Колко време им отнема обменът и комбинирането на данни между отделите? Отговор: много.

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

Не мога да кажа същото за 1C, защото цялата информация там е структурирана и взаимосвързана:

    Единна база данни за отдалечени и щатни служители, в която можете да работите с всички стандартизирани и произволни документи;
    Докладването до регулаторните органи се основава на данните, които вече са отразени в програмата, няма нужда да отваряте много файлове, да редуцирате няколко стойности в една таблица, за да получите крайните резултати.
"1C", по добър начин, е многозадачна система, която е насочена както към типични счетоводни задачи, така и към автоматизиране на всички организационни процеси, в зависимост от сферата на дейност. Ключовата дума тук е система. Никой не ви притеснява да организирате вашата бизнес система в Excel, но защо да преоткривате колелото, когато има решения, които покриват почти всички нужди за оптимизиране на времето и финансовите разходи, помагайки за систематизиране на работата?

В защита на Excel

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

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

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


Какъв е резултатът - "1C" или "Excel"?

В самото начало, ако въпросът е точно във финансите за автоматизация, въпреки че основните 1C програми не струват толкова пари, бих използвал Excel. Огромен плюс е, че данните от "зелените" таблици могат да бъдат заредени в 1C без загуба. Но докато се увеличавате, бих ви посъветвал да обърнете внимание на програмите за автоматизация на бизнес процеси. Има много от тях и може да не е непременно "1C" ...

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

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

На това, може би, всичко. Но ако имате някакви въпроси, моля свържете се с нас и ние ще се опитаме да ви помогнем. Успешни бизнес процеси, колеги!

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

За да изпълните тази операция, можете да използвате както стандартна функционалност, налична с абонамент за поддръжка на информационни технологии (ITS), така и самостоятелно написана обработка, реализирана чрез различни опции за свързване. В нашата статия ще се опитаме да анализираме всички възможни случаи възможно най-пълно и да отговорим на повечето от съществуващите въпроси относно зареждането на данни от Excel в 1C.

Универсален механизъм

На ITS дисковете, както и на портала 1C, като отидете в менюто „Технологична поддръжка“ -> „Универсални отчети и обработка“, в папката „Зареждане на данни от документ с електронна таблица“ има съответната обработка.

При стартирането му се отваря форма (фиг. 1):

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

  1. Справочник;
  2. Табличната част на документа или справочника;
  3. Регистър на информацията.

В зависимост от позицията на превключвателя полето за избор на обект се променя.

Табличната форма за обработка се попълва при отваряне на качения файл.

Обработката на типове поддържа качвания от:

  • Разработено от специалисти на компанията 1C, файлове във форматmxl;
  • Листxls, запазени във форматExcel 97-2003;
  • текстов файлтекст;
  • масиdbf.

Файловете на Excel с голям обем могат да отнемат много време за зареждане, така че ако се предполага, че зареждането на данни може да се извърши на няколко етапа или знаете със сигурност, че ще трябва да отворите съществуващ файл няколко пъти, по-добре е да запазите информацията от него в mxl за пестене на нерви и формат на време. Можете да направите това директно от формуляра за обработка.

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

Сега нека да преминем към раздела "Настройки" (фиг. 2):

Фиг.2

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

След като изберете обекта на метаданни, в който ще бъде записана информацията, табличният раздел на раздела „Настройки“ автоматично ще се попълни с имената на атрибутите, описанията на техните типове и други важна информация. Разглеждането на колоните от табличната част на раздела „Настройки“ трябва да бъде посветено на отделен раздел.

Колони за настройки

Флаг - с отметка или премахване на отметката в реда се определя дали съответният атрибут ще бъде попълнен.

Представяне на атрибута - тук се записва синоним (име) на атрибута метаданни, както е посочено в конфигуратора.

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

Описание на типовете - показва типа данни, които имат един или друг атрибут на метаданни.

Режим на изтегляне - предлага три опции за избор (фиг. 3):

Фиг.3

  • Търсене - ще се търси съответният елемент, в случай на липса може да се създаде нов;
  • Set - определена стойност е зададена по подчинен начин;
  • Изчисли – в този случай в полето на създавания елемент ще бъде зададен резултатът от изчислението на израза, посочен в колоната „Условие на връзка/Израз за стойност“.

Във втория случай активирането на полето Expression ще отвори формата (Фиг.4).

Фиг.4

Номер на колона - поле, използвано за указване от коя колона на електронната таблица на Excel трябва да вземете данни за попълване.

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

Условие на връзката / Израз за стойност - вече засегнахме частично това поле, когато разглеждахме изчислените полета, освен това можете да посочите условието, в съответствие с което ще се синхронизират изходните данни.

Тук по принцип е цялата информация, която е налична в раздела "Настройки".

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

Можете да проверите коректността на прехвърлените данни, като кликнете върху бутона "Контрол на попълване" (фиг. 1). След това можете да започнете процеса на изтегляне. Ще бъдете уведомени отделно за успешното приключване на процедурата или нестандартни ситуации.

За да качите данни от Excel в информационни бази"Мениджмънт и търговия" има друг механизъм. Той е по-малко универсален от горния метод, но не изисква абонамент за ITS и е включен в стандартната доставка.

Тази обработка можете да намерите в раздела "Покупки", в меню "Услуга", нарича се "Зареждане на цени на доставчици от файлове" (фиг. 5)

Фиг.5

Формулярът за обработка съдържа:

  1. Поле за избор на дата, което ще покаже за кое време е актуална тази цена;
  2. Полето за избор на контрагента, който е изпратил ценовата си листа;
  3. Бутон, който ви позволява да изберете вида на задаваните цени;
  4. Табличен раздел, който може да бъде попълнен с качени данни.

Тази форма може да се види на фиг.6

Фиг.6

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

След като изберете контрагент (в зависимост от това дали действа като доставчик, комисионер или продавач), в таблицата ще станат достъпни допълнителни колони за всеки тип цена.

Когато работите през уеб интерфейса, някои браузъри може да изискват инсталирането на добавка за браузър (фиг. 7). Трябва да щракнете върху бутона "Стартиране на инсталацията" и да рестартираме връзката си.

Фиг.7

След това, използвайки клипборда, ще можем да прехвърляме информация от една таблица в друга. Когато нужните ни колони (“Артикул”, “Име”, “Цена”) са попълнени, натискаме бутона “Напред” и отиваме на втора страница (фиг. 8)

Фиг.8

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

  • Регистрирайте всичко;
  • Регистрирайте само тези, които са променени в сравнение с тези, които вече са в базата данни.

В текстовото поле можете да въведете коментар, който ще бъде записан в документа (фиг. 9):

Фиг.9

След обработка:

  • Ще бъде създаден съответен елемент в директорията "Номенклатура на доставчика" (ако не е бил там);
  • Ще бъде съпоставен с елемент от справочника "Номенклатура";
  • Ще бъде създаден и осчетоводен документът "Определяне на цени на артикули", като се посочват: доставчик, тип цена и дата на фиксиране на данните.

Обработката "Зареждане на стоки от външни файлове" работи по подобен начин.

Опции за обработка на DIY трансфер

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

  • Чрез Microsoft ADODB - сравнително бърз метод, който като правило е приложим както за опции за съхранение на база данни на файл, така и на клиент-сървър;
  • През Използване на Microsoft Office - метод, който понякога се проваля при работа с SQL бази данни, като правило работи малко по-бавно от първия метод и се изисква и Office;
  • Чрез Libre Office - за разлика от предишния метод, той е безплатен, освен форматите xls и xlsx, поддържа и собствени таблици, но изисква инсталиран Пакет LibreOfficeи известна подготовка на качения файл (първият ред на таблицата трябва да съдържа имената на колоните).

Нека да разгледаме по-отблизо различни начинии опции.

Чрез ADODB.Connection

Като цяло ADO означава ActiveX Data Object и служи за програмен достъпкъм различни бази данни. Най-големият проблем при създаване на каквато и да е връзка към файл на трета страна (включително Excel) е правилното съставяне на низа за връзка.

Има три опции за Excel файлове:

Опции за низ за връзка:

  • Доставчик - тук се определя използвания драйвер;
  • Data Source – определя името на файла, който ще отворим;
  • Разширени свойства - тук можете да посочите дали е необходим заглавен ред за таблицата (HDR = YES показва, че данните ще бъдат прочетени от първия ред, HDR = NO - от втория), дали файлът се отваря само за четене ( ReadOnly) и някои други допълнителни опции.

След като създадем низ за свързване, можем да се свържем с изтегления файл (фиг. 13)

Фиг.13

Сега можем да използваме проста молба(Фиг.14) започнете да извличате информация от изтегления файл.

AT този случайпараметърът “Sheet” определя с кой лист от работната книга на excel трябва да работим.

Наборът от записи, съхранени на лист, може да бъде прочетен с помощта на обекта Recordset. В този случай първият запис на листа може да бъде получен от параметъра BOF (начало на файла), а последният EOF (край на файла).

Чрез приложението Excel

Основната разлика от предишния метод е, че в допълнение към драйверите за база данни, Excel трябва да бъде инсталиран на компютъра, където се осъществява връзката. Само в този случай можем да инициализираме приложението за четене на данни от таблицата (Фигура 16).

Този COM обект има няколко дъщерни параметъра, но основният за нас, при текущите условия на задачата, е параметърът WorkBooks (фиг. 17).

След инициализиране на книгата е необходимо да се определи листът, от който ще се четат данните (фиг. 18).

След това можете да итерирате вътре в циклите на редовете и колоните на таблицата на файла, който се отваря.

Няколко думи за възможни грешки

Лъвският дял от грешките при свързване към файл се дължи на факта, че файлът вече се използва от друго приложение. Добре е, ако лентата на задачите показва, че Excel работи на компютъра, но ако вие или друг потребител го отворите от външна обработка, визуално това може да се определи само чрез "Диспечер на задачите", така че не забравяйте да затворите връзката преди края на процедурата за прехвърляне:

В случай на работа чрез ADO (фиг.19);

Фиг.19

  • В случай на работа с приложението (фиг. 20).

Ориз. двадесет.

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

В 1C има 2 начина за работа с файлове на MS Excel, чрез COM обект и вградени инструменти на 1C, използвайки обект на документ от електронна таблица. Нека разгледаме по-подробно и двата метода.

1. Работа чрез COM-обект.

Този метод изисква MS Excel да бъде инсталиран и ако работите с файл на сървъра, тогава MS Excel трябва да бъде инсталиран на сървъра, ако е на клиента, тогава MS Excel също се изисква от страна на клиента.

Пример (в края на статията може да се види в текстов вид):

Трябва да се отбележи, че всички обекти, методи и свойства, предоставени от COM обекта "Excel.Application", са обекти, методи и свойства на VBA, езика за програмиране на MS Office.

Забележка:

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

2. Работа с електронни таблици Документ 1C.

Документът с електронна таблица 1C поддържа формата на MS Excel за запис, започвайки от платформа 8, но за отваряне само от платформа 8.3.6. Освен това при отваряне всички листове се зареждат в един документ с електронна таблица. Започвайки от версия 8.3.10, при зареждане различни листове се зареждат като различни области.

Примерът за запис е много прост и не изисква много внимание:

Тук обаче имаме проблем. Когато записвате от 1C в работна книга на Excel, показването на имена на листове е деактивирано по подразбиране.

Този проблем може да бъде решен по 2 начина, 1 - активирайте показването на листове в самата книга в настройките (не всички потребители ще се съгласят да направят това), 2 - направете го чрез COM обект (отново имаме нужда от инсталиран MS Excel) .

След тази малка добавка етикетите на листа ще бъдат видими във файла на MS Excel.

Четенето на MS Excel не е толкова проста задача, тъй като методът за четене е достъпен само на сървъра или дебелия клиент. За целта трябва да прехвърлим MS Excel файла на сървъра.

&При клиент

Процедура CreateDocument().

Изключение

Край на опита;

Книга = Excel.WorkBooks.Add(); //Създаване на нова работна книга на MS Excel

Sheet = Book.WorkSheets.Add(); //Добавяне на лист

Sheet.Name = "Пример от 1C"; //Задайте името на листа

Sheet.Cells (1,1).Value = "(!LANG:Нека създадем формула";!}

Sheet.Cells(2,1).Value = 1;

Sheet.Cells(2,2).Value = 2;

Sheet.Cells(2,3).Formula = "=A2+B2";

Sheet.Cells(3,1).Value = CurrentDate();

Book.SaveAs("C:\1\Test.xlsx");

Book.Close();

EndProcedure

&На сървъра

Функция GetLayoutServer().

Върнете FormAttributeToValue("Object").GetLayout("Upload Template"); //Така получаваме оформлението на външната обработка;

Крайни функции

&При клиент

Процедура Работа()

Excel = Нов COMObject("Excel.Application");

Изключение

Show("Неуспешен опит за свързване на компонент на Excel. Excel може да не е инсталиран на този компютър!");

Край на опита;

Оформление = GetLayoutServer();

Layout.Write(TemporaryFileName);

Имате въпрос, имате нужда от помощта на консултант?

Книга = Excel.WorkBooks.Open(TempFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells (6,1).Value = "(!LANG:Дата:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "дд/мм/гг;@"; // Нека зададем формата на датата, този формат се получава чрез запис на макрос в MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Разтеглете колоната, за да пасне точно на датата

Book.SaveAs(Име на файл);

Book.Close();

EndProcedure

&При клиент

EndProcedure

&При клиент

Процедура WriteSpreadsheetDocument()

SpreadsheetDocument = Нов SpreadsheetDocument();

SpreadsheetDocument.Area("R1C1").Text = "Пример за запис в MS Excel от 1C";

SpreadDocument.Write("C:\1\Test2.xls",SpreadDocumentFileType.XLSX);

Excel = Нов COMObject("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save();

Excel.Application.Quit()

EndProcedure

BinaryData = Нови двоични данни ("C:\1\test2.xlsx");

Address=PutToTempStorage(BinaryData,ThisForm.UniqueIdentifier)​;

SpreadsheetDocument = DownloadOnServer(Address);

SpreadsheetDocument.Show();

EndProcedure

&На сървъра

Функция LoadOnServer(Address)

TempFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTempStorage(адрес);

FileData.Write(TemporaryFileName);

SpreadsheetDocument = Нов SpreadsheetDocument();

Връщане на SpreadsheetDocument;

Въведение.

Много хора знаят, че Excel е много по-стар от 1C. Според мен това е много успешен продукт и не съм чул оплаквания за него. Excel е прост и многофункционален. Той е в състояние да извършва не само прости аритметични операции, но и сложни изчисления, графики и др. Знам примери, когато организациите, преди да преминат към 1C, поддържат част от счетоводството в Excel. Много и сега успоредно използват две програми. В тази статия ще разгледаме начини за обмен на данни между 1C и Excel.

Таблици 1C и Excel.

За удобство много потребители запазват 1C таблици (формуляри за печат) във формат на Excel (* .xls). След това в получения файл се правят различни групировки, сортировки, изчисления и др. Това се дължи на факта, че в таблиците 1C няма такава огромна функционалност, както в таблиците на Excel. Но във версия 1C 8.0 има иновации, които правят работата с таблици по-удобна.

Уебсайтът на 1C (http://www.1c.ru/) има полезна програма, която ви позволява да отваряте 1C таблици в Excel и да запазвате Excel лист като 1C таблица. Това е полезно, ако таблицата 1C не е запазена във формат Excel и 1C не е инсталиран на компютъра, където трябва да отворите тази таблица. Да, и постоянно помнете, че трябва да запазите таблицата 1C във формат Excel, няма да има нужда.

Пълна информация за програмата можете да намерите тук.
Можете да изтеглите програмата от тук (zip архив 682 739 байта).

коментар:В Excel десетичният разделител е ",". Ето защо, преди да запазите таблицата 1C във формат Excel, заменете друг разделител в нея (например ".") с ",". В противен случай Excel няма да може да извършва изчисления с тези числа или те изобщо няма да се показват като числа. Например в таблица 1C "15.2" ще се покаже в Excel като "15 фев".

Получаване на данни от Excel.

Достъпът от 1C до Excel се осъществява чрез OLE. Например код
опит
Изключение
Известяване(Описание на грешка() +
);
Връщане;
Край на опита;
ще ни позволи достъп чрез променливата "Excel" до работещо приложение Excel. И тогава вече можете да получите достъп до книгата (файла), листа и клетката с данни. По-долу са примерни кодове.

Отваряне на книга (файл):
Книга = Excel. работни тетрадки. Отваряне (Път до файл);
PathToFile е пълният път до файла на работната книга на Excel.

Избор на книжен лист за работа:
или
Лист = Книга. Работни листове (Име на лист);
SheetNumber е номерът на листа в книгата, SheetName е името на листа в книгата.

Получаване на стойността на клетка от лист:
Стойност = Лист. Клетки (Номер на ред, Номер на колона). стойност;

Важно:не забравяйте да добавите код на Excel към полето за извършване на необходимите действия. Изход(); , в противен случай изпълняваният процес ще остане незавършен и ще заеме паметта и процесора на компютъра.

Извеждане на данни в Excel.

За да изведете (качите) данни в Excel, трябва или да отворите съществуваща работна книга, или да създадете нова и да изберете работен лист за извеждане на данни. Отварянето на съществуваща книга е описано по-горе, но за да създадете нова книга, трябва да използвате следния код:
опит
Excel = CreateObject("Excel.Application" );
Изключение
Известяване(Описание на грешка() +
„Excel не е инсталиран на този компютър!“);
Връщане;
Край на опита;
Книга = Excel. работни тетрадки. добави();

Тъй като при създаване на работна книга в Excel автоматично се създават листове (Инструменти->Опции->Общи->Листове в нова работна книга), трябва само да изберете листа, с който да работите:
Лист = Книга. Работни листове (Номер на лист);
или добавете нов лист към книгата, ако е необходимо:
Лист = Книга. Листове. добави();
Следващата стъпка е да зададете стойността на клетката:
Лист. Клетки (Номер на ред, Номер на колона). стойност = стойност;
RowNumber, ColumnNumber - номер на ред и номер на колона, в пресечната точка на които се намира клетката.
И накрая, трябва да запишете създадената книга:
опит
Книга . Запиши като (път към файла);
Изключение
Известяване (описание на грешка()
+ „Файлът не е запазен!“);
Връщане;
Край на опита;
PathToFile - пълният път до файла на работната книга на Excel (включително името).
Важно:не забравяйте, че имената на файловете не трябва да съдържат \ / : * ? " >< |.

Често използвани методи за четене/задаване на стойности в Excel.

Excel = CreateObject("Excel.Application" ); Получаване на достъп до приложението Excel.
Excel. Visible = Видимост ; 0 - Excel не се вижда, 1 - се вижда.
Книга = Excel. работни тетрадки. добави(); Създаване на нова работна книга (файл) Excel.
Книга . SaveAs(Име на файл); Запазване на работна книга на Excel.
Лист = Книга. Работни листове. добави(); Добавяне на нов лист към книгата.
Книга = Excel. работни тетрадки. Отворете (име на файл); Отваряне на съществуваща работна книга (файл) Excel.
Лист = Книга. Работни листове (Номер на лист); Задаване на лист като работен лист с numberSheetNumber.
Лист. Име = Име на лист; Наименуване на работен лист SheetName
Лист. Настройка на страницата . Мащабиране = Мащаб; Указва опцията за мащабиране на страницата (от 10 до 400).
Лист. Настройка на страницата . Ориентация = Ориентация ; Ориентация: 1 - портрет, 2 - пейзаж.
Лист. Настройка на страницата . LeftMargin = Excel. CentimetersToPoints ( Сантиметри ); Задава лявата граница (в сантиметри).
Лист. Настройка на страницата . TopMargin = Excel. CentimetersToPoints ( Сантиметри ); Определя горната граница (в сантиметри).
Лист. Настройка на страницата . RightMargin = Excel. CentimetersToPoints ( Сантиметри ); Указва дясната граница (в сантиметри).
Лист. Настройка на страницата . BottomMargin = Excel. CentimetersToPoints ( Сантиметри ); Задава долната граница (в сантиметри).
Лист. Колони (ColumnNumber) . ColumnWidth = Ширина; Задайте ширина на колоната.
Лист. Клетки (Номер на ред, Номер на колона) . стойност = стойност; Въвеждане на данни в клетка.
Лист. Клетки (Номер на ред, Номер на колона) . шрифт. Име = Име на шрифта ; Задаване на шрифта в клетка.
Лист. Клетки (Номер на ред, Номер на колона) . шрифт. Размер = Размер на шрифта; Задайте размера на шрифта в клетка.
Лист. Клетки (Номер на ред, Номер на колона) . шрифт. Bold = Получер; 1 - удебелен шрифт, 0 - нормално.
Лист. Клетки (Номер на ред, Номер на колона) . шрифт. Курсив = Курсив ; 1 - наклонен шрифт, 0 - нормален.
Лист. Клетки (Номер на ред, Номер на колона) . шрифт. Underline = Подчертано ; 2 - подчертано, 1 - не.
Лист. Клетки (Номер на ред, Номер на колона) . NumberFormat = Формат; Задайте формата на клетъчните данни.
Лист. Клетки (Номер на ред, Номер на колона) . Граници. Стил на линия = Тип линия ; Задайте граници на клетките. 1 - тънко твърдо вещество.

Този метод е прост. Същността му е, че обектът 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. Запазете документа с електронната таблица в необходимия формат.