Як називається прога для excel в 1с. Що краще – «1С» чи «Excel»? Вивантаження без програмування

Є різні способи, щоб у 1С відкрити файл Excel і навпаки. Користувачі-початківці віддадуть перевагу більш простим операціям зі збереженням документа в іншому форматі або використанням спеціальних програм. Але варто витратити небагато зусиль і навчитися працювати з програмними засобами для перегляду та обробки даних з однієї програми до іншої. Надалі ці базові навички програмування дозволять уникнути рутинних завдань.

Як відкрити документи Excel у 1С і навпаки

Табличний редактор корпорації Майкрософт Excel за повнотою функціоналу перевищує бухгалтерські програмні продукти 1С. Тому користувачі 1С воліють частину операцій виконувати у табличному редакторі, а потім повертати дані до бухгалтерської програми. І це не дивно, адже колись бухгалтерія багатьох компаній велася виключно за допомогою програм Майкрософта. Але за сучасного рівня автоматизації бізнес-процесів підприємств відмовитися від спеціалізованих програм неможливо. Щоб налагодити взаємодію між різними програмами, є такі прості способи:

    Коли доводиться мати справу з файлами програмних продуктів, які не встановлені на вашому поточному комп'ютері, найпростіше скористатися спеціальним додатком для переведення таблиць Excel у формат 1С і навпаки. Його можна знайти на сайті продукту 1С.

    Якщо на комп'ютері є і 1С, і Excel, то можна вручну відкрити файл у його "рідному" додатку, а потім зберегти у форматі іншої програми. Зазвичай, така опція доступна при збереженні друкованої форми або макета.

    Користувачі 1С 7.7 можуть оновитися до версії 1С 8, яка має покращений редактор таблиць.

Як 1С і Excel можуть взаємодіяти програмно

Взаємодія між 1С та Excel може здійснюватися на програмному рівні за допомогою технології OLE Automation, розробленої корпорацією Майкрософт. Вона дозволяє звертатися безпосередньо до COM-об'єктів із скриптових інтерпретаторів різних програм. Простіше кажучи, OLE дозволяє передавати частину роботи з однієї програми до іншої, а потім повертати зроблене у вихідний додаток. Це те, що потрібно бухгалтерам від редактора таблиць Майкрософта.

Щоб використовувати засоби OLE, не потрібно бути програмістом. Хоча перше знайомство з рядками коду супроводжуватиметься помилками, перевірка допоможе їх виявити, а отриманий досвід – уникнути надалі. Нижче наводяться найзатребуваніші команди (їх називають лістинги) для роботи з екселевськими даними в бухгалтерських програмах і навпаки.

Як відкрити екселевський файл в 1С програмно

Отже, якщо на вашому комп'ютері встановлені обидві програми, між якими ви хочете налагодити обмін даними, можна організувати взаємодію програмно. Для цього потрібно запустити обидві програми, а потім за допомогою OLE встановити доступ із 1С до Excel:

  • Виняток

    Повідомити(ОписПомилки() + "Програма Exсel не встановлена ​​на даному комп'ютері!");

  • КінецьСпроби.

Доступ до табличного редактора встановлено, тепер за допомогою наступних команд потрібно отримати доступ до:

    конкретному документу:

    • Книга = Ексель.WorkBooks.Open(ШляхКФайлу)

    • Аркуш = Книга. WorkSheets (НомерЛіста);

  • у тому числі з конкретним номером листа:

    у тому числі з конкретним ім'ям листа:

    • Аркуш = Книга. WorkSheets (Ім'яЛиста);

    • Значення = Лист.Cells(НомерРядки, НомерКолонки).Value;

Для читання даних з першої сторінки файлу використовуйте такі листинги:

    Ексель = Створити Об'єкт ("Excel.Application");

    Книга = Ексель.WorkBooks.Open(ШляхКФайлу);

    Аркуш = Книга.WorkSheets(1);

    ВсьогоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

    УсьогоРядок = Лист.Cells(1,1).SpecialCells(11).Row;

    Для Рядок = 1 По ВсьогоСтрок Цикл

    • Для Колонка = 1 По ВсьогоКолонок Цикл

      Значення = СокрЛП(Лист.Cells(Рядок,Колонка).Value);

      КінецьЦикл;

    КінецьЦикл;

Пам'ятайте, що прописувати шлях до файлу слід повністю. В ім'я документа при збереженні не можна включати такі символи, як \, /, :, *, ?, ", >,< и |.

Як відкрити файл 1С через Excel програмно

Для запису даних у Excel необхідно:

    або відкрити існуючий документ:

    • Книга = Ексель.WorkBooks.Open(ШляхКФайлу) - за аналогією з читанням екселівського файлу з 1С;

    або додати новий:

    • Книжка = Excel.WorkBooks.Add();

    у новому документі можна створити новий лист:

    • Аркуш = Книга.Sheets.Add();

    і додати в комірку нове значення:

    • Лист.Cells(НомерРядки, НомерКолонки).Value = Значення; (Методи запису значень за допомогою OLE докладно описані в інтернеті).

  • SaveAs(ШляхКФайлу);

    Виняток

    Повідомити(ОписПомилки()+" Файл не збережений!");

    КінецьСпроби.

Закінчивши роботу з табличним редактором, виходьте з допомогою спеціальної команди (Эксель.Application.Quit();). Цей спосіб допоможе зберегти ресурси комп'ютера при подальшій роботі.

Небезпеки при обміні даними між 1С та Excel

1С і Excel були розроблені різними компаніями та використовують різні способи поводження з даними. Тому при перенесенні таблиць з однієї програми в іншу пам'ятайте про наступні "підводні камені":

    Різні роздільники у дробових числах. Майкрософт розділяє цифри в десяткових дробах за допомогою коми. Тому при перенесенні таблиць з бухгалтерської програми не дивуйтеся безлічі дат та іншого плутанини. Просто в бухгалтерській програмі в записі дробів може використовуватися точка, яку редактор таблиць Майкрософта інтерпретуватиме як роздільник дати, і 15.5 перетвориться на 15 травня. Щоб обробляти бухгалтерські дані в табличному редакторі, роздільник доведеться замінити на кому.

    При перенесенні даних із Excel в 1С можуть некоректно відобразитися ті екселівські константи, яких немає у бухгалтерській програмі. Щоб їх розшифрувати, потрібно зайти до Довідки табличного редактора або режим налагодження і перевірити числове вираження різних констант.

Якщо вам потрібно налагодити обмін великими обсягами даних або не вдається позбавитися помилок, звертайтеся за допомогою до професіоналів компанії "Сетбі". Ми допоможемо вирішити ваші завдання на програмному рівні та розібратися з необхідними для вашої роботи командами.

Досить часто, спілкуючись із потенційними клієнтами, я чую про те, що їм цілком вистачає функціонала таблиці від офісного пакету, і вони не бачать сенсу в програмах «1С». Все тому, що деякі, як і раніше, асоціюють це рішення лише з програмами для бухгалтера, що є неправдою.

"Excel" - універсальний і масовий продукт, з цим не посперечаєшся. Практично кожен може скористатися цією програмою, на відміну від розробок «1С», спрямованих на вузьких спеціалістів. Використовуючи «зелені» таблиці, можна довільно реалізовувати необхідний функціонал, який буде зручним: тут і фінансова модель організації з усіма взаєморозрахунками, управлінський облік, навіть регламентований великий вибір візуалізації даних, можливість власноруч розширювати можливості програми, використовуючи різні надбудови – все у Ваших руках , все з нуля...

Добре, якщо Ви тільки починаєте свій бізнес, поступово враховуючи необхідні дані в таблиці з клієнтами, постачальниками, контролюючими органами, вибудовуючи свою довільну структуру, але як бути далі, коли база даних стане об'ємною, а штат співробітників обчислюватиметься десятками? Так само вважати за власними параметрами? Я за те, щоб не плутати зручність із звичкою, яка найчастіше заважає систематизації бізнесу, а отже – його оптимізації.

Для наочності давайте уявимо, які можу виникнути потреби в автоматизації обліку, наприклад, у торгівлі:

1. Аналіз продажів у межах певного періоду.

Керівник відділу продажів може аналізувати дані з продажу. Адже йому важливо розуміти, чи виконується план, наскільки ефективні його стратегії, щоб у разі неефективності вчасно внести коригування в роботу.

2. Складський облік.
Чи потрібно пояснювати, що для продажу також важливим є розуміння наявності товару на складі, який товар може бути зарезервований, а якого немає в наявності і що потрібно замовити? Думаю, тут і так зрозуміло.

3. Ведення основи контрагентів.
Навіть якщо власник продає лише те, що можна купити тут і зараз, що характерно для сектора B2C, то з базою постачальників у нього трохи інші стосунки – договори, первинки... Уявіть, наскільки це зручно, коли все, що пов'язане з постачальником автоматично відразу відображається в єдиній базі? Менеджер, який відповідає за склад, відразу бачить наявність товару на складі, інший співробітник, відповідальний за документи, моніторить інформацію щодо їх наявності, чи виконуються всі зобов'язання за договірними відносинами, хто і скільки кому винен. А у разі розбіжностей можна звірити дані за певний період, сформувавши результат менш ніж за хвилину.

4. Прибуток організації.
Сформувати звіт з прибутку не складе величезної праці, оскільки всі дані щодо витрат і доходів вже й так є в базі. За умови, якщо інформація вноситься своєчасно, принаймні, потрібною датою. Тут основний чинник – особиста відповідальність користувача.

Якщо у Вас не так багато клієнтів та постачальників, Вам дійсно підійде «Excel», оскільки часу достатньо для конструювання власних схем у таблиці та їх заповнень, з наступним розподілом документів по різних папках на комп'ютері: договори, постачальники, клієнти, клієнти по сусідству , клієнти у розробці, клієнти на видалення – нескінченний та захоплюючий процес створення папок у папці. А якщо інформації стає багато, чи зручно в цьому випадку вести облік бази? Звичайно, завжди є винятки, часом трапляються організації з великими оборотами, у яких дані щодо фінансів ведуться лише у «Excel». Скільки ж при цьому часу вони йдуть на обмін і об'єднання даними між відділами? Відповім: багато.

Я не уявляю, як у великій кількості документів Excel, організованих довільною системою, оперативно знайти потрібний. Наприклад, під час надання документів на вимоги від податкової. Як бухгалтер здаватиме звітність до контролюючих органів, коли інформація вся розрізнена? Бухгалтерія, звичайно, може бути на аутсорсингу і деяких власників бізнесу, на жаль, може не хвилювати які у даного фахівця можуть бути лише процеси баланси зводив. Але навіть якщо так, то як тоді організовано процес обміну документами? Наскільки швидко співробітник на стороні розбереться в імпровізованій інформаційній структурі?

Про «1С» такого сказати не можу, оскільки там уся інформація структурована та взаємопов'язана:

    Єдина база як для віддалених, так і для штатних співробітників, у якій можна працювати з усіма стандартизованими та довільними документами;
    Формування звітності до контролюючих органів відбувається на підставі даних, які вже відображені в програмі, немає необхідності відкривати безліч файлів, зводити кілька значень в одну таблицю, отримуючи підсумкові результати.
«1С», по-хорошому, – багатозадачна система, спрямовану як у типові завдання обліку, і автоматизацію всіх процесів організації залежно від сфери діяльності. Основне слово тут – система. Ніхто Вам не заважає організувати систему свого бізнесу в Excel, але навіщо винаходити велосипед, коли є рішення, які покривають практично всі потреби в оптимізації тимчасових фінансових витрат, допомагаючи систематизувати роботу?

На захист «Excel»

Напевно, Вам здалося, що проти побудови даних у «зелених» таблицях. Не. Насправді я сам частенько веду деякі справи в Excel: якщо мені потрібні довільні обчислення, якщо мені необхідно сегментувати дані по клієнтах, проводячи аналітику за тими параметрами, яких немає в 1С - так, таке буває - я йду в Excel». Простіше кажучи, в таблицях я займаюся обчисленнями, нестандартним аналізом, але систематизую все згодом все одно в «1С».

Та й потім, для перегляду вивантажених файлів з 1С все одно знадобиться Excel, так як дані в 1С зберігаються в електронних таблицях. Вам здається, що це замкнене коло? Я скажу по-іншому: «1С» та «Excel» йдуть поряд як два напарники, але у кожного з них своє призначення, вони добре доповнюють один одного, але не взаємозамінюють.

Якщо Вам потрібно систематизувати ваші справи з урахуванням законодавчої системи нашої держави, з урахуванням специфіки та спрямованості бізнесу, тим більше коли справа стосується великих обсягів інформації, то Вам потрібен «1С». Якщо Вам потрібні довільні розрахунки, побудова стратегії з нуля, візуалізація нестандартних даних з аналітики, то до послуг «Excel». Але набагато зручніше працювати з цими рішеннями одночасно.


Що в результаті - "1С" або "Excel"?

На самому старті, якщо питання саме у фінансах на автоматизацію, хоча базові програми «1С» коштують не таких вже й великих грошей, я скористався б «Excel». Величезний плюс, у тому, що дані із «зелених» таблиць без втрат можна підвантажити в «1С». Але в міру масштабування, я б радив звернути увагу на програми автоматизації бізнес-процесів. Їх багато, і не обов'язково це може бути «1С».

Перехід на «1С» можна здійснити тоді, коли Ви розумієте, що необхідно оптимізувати свої ресурси, у тому числі автоматизувати питання щодо взаємовідносин із клієнтами та постачальниками, з наглядовими органами. Загалом, налагодити свої робочі процеси, щоб підвищити ефективність бізнесу, коли обробка інформації займатиме велику кількість часу, а файли «Excel» вже не справлятимуться з обсягами даних, що вводяться.

Однак не кожна «1С» може Вам підійти, потрібно враховувати різні фактори: специфіку та сферу бізнесу, масштаби, потребу в щоденних завданнях, рутину якої необхідно звести до мінімуму. Усі індивідуально. Істина, як я вже казав, десь між "1С" та "Excel" - вона в доповненні один одного.

На цьому, мабуть, усі. Але якщо виникнуть питання, то звертайтеся, чи постараємося Вам допомогти. Успішних бізнес-процесів, колеги!

Цей спосіб простий. Його суть полягає в тому, що об'єкт ТабличнийДокументмає методи:

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

Увага!

Метод Записати () доступний як на клієнті, так і на сервері. Метод Прочитати () доступний лише на стороні сервера. Необхідно пам'ятати про це
при плануванні клієнт-серверної взаємодії.

Розглянемо приклад збереження табличного документа файл. Необхідно будь-яким способом створити та заповнити об'єкт ТабличнийДокумент, а вивантаженняу файл здійснюється лише одним рядком:

ТабДок . Записати(ШляхКФайлу, ТипФайлуТабличногоДокументу. XLSX);

Тут ТабДок- Сформований табличний документ, Шлях до файлу- Ім'я файлу для вивантаження, ТипФайлаТабличногоДокумента.XLSX- Формат створюваного файлу. Підтримуються такі формати Excel:

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

ТабДок = Новий Табличний Документ;
ТабДок . Прочитати(ШляхКФайлу, СпосібЧитанняЗначеньТабличногоДокумента.Значення);

Тут Шлях до файлу— шлях до файлу Excel, що завантажується. СпосібЧитанняЗначеньТабличногоДокумента.Значеннявизначає, як потрібно інтерпретувати дані, зчитувані з вихідного документа. Доступні варіанти:

  • значення;
  • Текст.

Обмін через OLE

Обмін через технологію OLE automation, мабуть, найпоширеніший варіант програмної роботи із файлами Excel. Він дозволяє використовувати весь функціонал, що надається Excel, але відрізняється повільною швидкістю в порівнянні з іншими способами. Для обміну через OLE потрібна установка MS Excel:

  • На комп'ютері кінцевого користувача, якщо обмін відбувається за клієнта;
  • На комп'ютері сервера 1С: Підприємство, якщо обмін відбувається за сервера.

приклад вивантаження:

// Створення COM-об'єкта
Ексель = Новий COMОб'єкт («Excel.Application»);
// Відключення виведення попереджень та питань
Ексель . DisplayAlerts = Брехня;
// Створення нової книги
Книга = Ексель. WorkBooks. Add();
// Позиціювання на першому аркуші
Аркуш = Книжка. Worksheets(1);

// Запис значення в комірку
Аркуш . Cells(НомерРядки, НомерКолонки). Value = Значення осередку;

// Збереження файлу
Книга . SaveAs(Ім'яФайлу);


Ексель . Quit();
Ексель = 0;

Приклади читання:

// -- ВАРІАНТ 1 --

// Створення COM-об'єкта
Ексель = Новий COM Об'єкт («Excel.Application»);
// Відкриття книги
Книга = Ексель. Workbooks. Open( Шлях до файлу );

Аркуш = Книжка. Worksheets(1 );

// Закриття книги
Книга . Close(0);

// Закриття Ексель та звільнення пам'яті
Ексель . Quit();
Ексель = 0;

// -- ВАРІАНТ 2 --

// Відкриття книги
Книга = ОтриматиCOMОб'єкт( Шлях до файлу );
// Позиціювання на потрібному аркуші
Аркуш = Книжка. Worksheets(1 );

// Читання значення комірки, зазвичай тут розташовується цикл обходу осередків
ЗначенняКомірки = Аркуш. Cells(НомерРядки, НомерКолонки). Value;

// Закриття книги
Книга . Application. Qui t();

Для обходувсіх заповнених рядків аркуша Excel можна використовувати такі прийоми:

// -- ВАРІАНТ 1 --
Кількість Рядок = Аркуш. Cells (1, 1). SpecialCells(11 ). Row;
Для НомерРядки = 1 По КількістьРядок Цикл
ЗначенняКомірки = Аркуш. Cells(НомерРядки, НомерКолонки). Value;
КінецьЦикл;

// -- ВАРІАНТ 2 --
НомерРядки = 0;
Поки що Істина Цикл
НомерРядки = НомерРядки + 1;
ЗначенняКомірки = Аркуш. Cells(НомерРядки, НомерКолонки). Value;
Якщо НЕ ЗначенняЗаповнено(ЗначенняКомірки) Тоді
Перервати;
КінецьЯкщо;
КінецьЦикл;

Замість послідовного обходу всіх рядків листа можна вивантажити всі дані в масивта працювати з ним. Такий підхід буде швидшим при читанні великого обсягу даних:

ВсьогоКолонок = Аркуш. Cells (1, 1). SpecialCells(11 ). Column;
УсьогоРядок = Аркуш. Cells (1, 1). SpecialCells(11 ). Row;

Область = Аркуш. Range (Лист. Cells (1, 1), Лист. Cells (Всього Рядок, Всього Колонок));
Дані = Область. Value. Вивантажити();

У таблиці нижче наведено найбільш затребувані властивості та методи для роботи з Excel через OLE:

Дія Код Коментар
Робота з додатком
Встановлення видимості вікна програми Ексель . Visible= Брехня;
Встановлення режиму виводу попереджень (виводити/не виводити) Ексель . DisplayAlerts= Брехня;
Закриття програми Ексель . Quit();
Робота з книгою
Створення нової книги Книга = Ексель. WorkBooks. Add();
Відкриття існуючої книги Книга = Ексель. WorkBooks. Open(Ім'яФайлу);
Збереження книги Книга . SaveAs(Ім'яФайлу);
Закриття книги Книга . Close(0);
Робота з листом
Встановлення поточного листа Аркуш = Книжка. WorkSheets(НомерЛіста);
Встановлення імені Аркуш . Name = Ім'я;
Встановлення захисту Аркуш . Protect();
Зняття захисту Аркуш . UnProtect();
Встановлення орієнтації сторінки Аркуш . PageSetup. Orientation = 2; 1 - книжкова, 2 - альбомна
Встановлення лівого кордону Аркуш . PageSetup. LeftMargin = Ексель. CentimetersToPoints(Сантиметри);
Встановлення верхнього кордону Аркуш . PageSetup. TopMargin = Ексель. CentimetersToPoints(Сантиметри);
Встановлення правого кордону Аркуш . PageSetup. RightMargin = Ексель. CentimetersToPoints(Сантиметри);
Встановлення нижнього кордону Аркуш . PageSetup. BottomMargin = Ексель. CentimetersToPoints(Сантиметри);
Робота з рядками, колонками, осередками
Встановлення ширини колонки Аркуш . Columns(НомерКолонки). ColumnWidth = Ширина;
Видалення рядка Аркуш . Rows(НомерРядки). Delete();
Видалення колонки Аркуш . Columns(НомерКолонки). Delete();
Видалення осередку Аркуш . Cells(НомерРядки, НомерКолонки). Delete();
Встановлення значення Аркуш . Cells(НомерРядки, НомерКолонки). Value = Значення;
Об'єднання осередків Аркуш . Range(Лист. Cells(НомерРядки, НомерКолонки), Лист. Cells(НомерРядки1, НомерКолонки1)). Merge();
Встановлення шрифту Аркуш . Cells(НомерРядки, НомерКолонки). Font. Name = Ім'яШрифту;
Встановлення розміру шрифту Аркуш . Cells(НомерРядки, НомерКолонки). Font. Size = РозмірШрифту;
Встановлення жирного шрифту Аркуш . Cells(НомерРядки, НомерКолонки). Font. Bold = 1 ; 1 - жирний шрифт, 0 - нормальний
Встановлення курсиву Аркуш . Cells(НомерРядки, НомерКолонки). Font. Italic = 1 ; 1 - курсив, 0 - нормальний
Встановлення підкресленого шрифту Аркуш . Cells(НомерРядки, НомерКолонки). Font. Underline = 2 ; 2 - підкреслений, 1 - ні

Для того, щоб дізнатися, яку властивість потрібно змінювати або який метод викликати можна скористатися макросами Excel. Якщо записати макрос з необхідними діями, то можна подивитися програмний код на VBA записаного макросу.

Використання COMSafeArray

При вивантаженні великих обсягів даних з 1С Excel для прискорення можна використовувати об'єкт COMSafeArray. Згідно з визначенням із синтакс-помічника, COMSafeArray — об'єктна оболонка над багатовимірним масивом. SafeArrayіз COM. Дозволяє створювати та використовувати SafeArray для обміну даними між COM-об'єктами. Простіше кажучи, це масив значень, який можна використовуватиме обміну між додатками за технологією OLE.

// Створення COMSafeArray
МасивКом = Новий COMSafeArray(«VT_Variant» , ВсьогоКолонок, ВсьогоСтрок);
// Заповнення COMSafeArray
Для Стор = 0 По ВсьогоСторок - 1 Цикл
Для Кол = 0 По ВсьогоКолонок - 1 Цикл
МасивКом . SetValue(Кількість, Стор, Значення);
КінецьЦикл;
КінецьЦикл;
// Присвоєння області аркуша Excel значень COMSafeArray
Аркуш . Range (Лист. Cells (1, 1), Лист. Cells (Всього Рядок, Всього Колонок)). Value = МасивКом;

Обмін через ADO

Файл Excel при обміні через ADO є базою даних, до якої можна звертатися за допомогою SQL-запитів. Установка MS Excel не потрібна, але обов'язково наявність драйвера ODBC, за допомогою якого буде доступ. Драйвер ODBC, що використовується, визначається при вказівці рядка з'єднання до файлу. Зазвичай потрібний драйвер вже інстальовано на комп'ютері.

Обмін через ADO помітно швидше обміну через OLE, але під час вивантаження немає можливості використовувати функціонал Excel для оформлення осередків, розмітки сторінок, завдання формул тощо.

приклад вивантаження:


З'єднання = Новий COMОб'єкт («ADODB.Connection»);


З'єднання . ConnectionString = «

|Data Source=» + ім'я файлу + «;
;
З'єднання . Open(); // Відкриття з'єднання

// Створення COM-об'єкта для команди
Команда = Новий COMОб'єкт («ADODB.Command»);
Команда

// Присвоєння тексту команди до створення таблиці
Команда . CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда . Execute(); // Виконання команди

// Присвоєння тексту команди додавання рядка таблиці
Команда . CommandText = «INSERT INTO [Аркуш1] (Колонка1, Колонка2, Колонка3, Колонка4) values ​​('абвгдеє', '8/11/2017', '12345', '12345,6789')»;
Команда.Execute(); // Виконання команди

// Видалення команди та закриття з'єднання
Команда = Невизначено;
З'єднання . Close();
З'єднання = Невизначено;

Для створення нового аркуша та формування його структури можна скористатися об'єктами ADOX.Catalogі ADOX.Table. У цьому випадку код набуде вигляду:

// Створення COM-об'єкта для роботи з книгою
Книга = Новий COMОб'єкт («ADOX.Catalog»);
Книга . ActiveConnection = З'єднання;

// Створення COM-об'єкта для роботи зі структурою даних на аркуші
Таблиця = Новий COMОб'єкт («ADOX.Table»);
Таблиця . Name = «Лист1»;
Таблиця . Columns. Append («Колонка1», 202);
Таблиця . Columns. Append («Колонка2», 7);
Таблиця . Columns. Append («Колонка3», 5);
Таблиця . Columns. Append («Колонка4», 5);

// Створення у книзі листа з описаною структурою
Книга . Tables. Append(Таблиця);
Таблиця = Невизначено;
Книга = Невизначено;

У наведеному прикладі у методі

Таблиця . Columns. Append(«Колонка1», 202);

у другому параметрі вказується тип колонки. Параметр необов'язковий, деякі значення типу колонки:

  • 5 - adDouble;
  • 6 - adCurrency;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

приклад читання:

// Створення COM-об'єкта для з'єднання
З'єднання = Новий COMОб'єкт («ADODB.Connection»);

// Встановлення рядка з'єднання
З'єднання . ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=» + ім'я файлу + «;
|Extended Properties=""Excel 12.0 XML;HDR=YES"";";
З'єднання . Open(); // Відкриття з'єднання

// Створення COM-об'єкта отримання вибірки
Вибірка = Новий COMОб'єкт («ADODB.Recordset»);
Текст Запиту = «SELECT * FROM [Письмо1$]»;

// Виконання запиту
Вибірка . Open(Текст Запиту, З'єднання);

// Обхід результату вибірки
Поки що НЕ Вибірка. EOF() Цикл
ЗначенняКолонки1 = Вибірка. Fields. Item(«Колонка1»). Value ; // Звернення на ім'я колонки
ЗначенняКолонки2 = Вибірка. Fields. Item(0). Value; // Звернення за індексом колонки
Вибірка . MoveNext();
КінецьЦикл;

Вибірка . Close();
Вибірка = Невизначено;
З'єднання . Close();
З'єднання = Невизначено;

У рядку з'єднання параметр HDRвизначає як сприйматиметься перший рядок на аркуші. Можливі варіанти:

  • YES - перший рядок сприймається як назви колонок. До значень можна звертатися по імені та індексу колонки.
  • NO - перший рядок сприймається як дані. До значень можна звертатись лише за індексом колонки.

У наведених прикладах розглянуто лише кілька об'єктів ADO. Об'єктна модель ADO складається з наступних об'єктів:

  • Connection;
  • Command;
  • Recordset;
  • Record;
  • Fields;
  • Stream;
  • Errors;
  • Параметри;
  • Properties.

Вивантаження без програмування

Для збереження даних з 1С Excel не завжди доцільно вдаватися до програмування. Якщо в режимі Підприємства користувач може відобразити потрібні для вивантаження дані, їх можна зберегти в Excel без програмування.

Для збереження табличного документа (наприклад, результату звіту) можна викликати команду Зберегтиабо Зберегти як…головне меню.

У вікні потрібно вибрати каталог, ім'я і формат файлу, що зберігається.

Для збереження даних динамічних списків (наприклад, списку номенклатури) необхідно:

  1. Вивести дані до табличного документа за допомогою команди Ще ⇒ Вивести список…;
  2. Зберегти табличний документ у потрібний формат.

У 1С існує два способи роботи з файлами MS Excel, через COM-об'єкт і вбудованими засобами 1С за допомогою об'єкта табличний документ. Розберемо обидва ці способи докладніше.

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

Для цього способу необхідний встановлений MS Excel, притому якщо ви працюєте з файлом на сервері, то відповідно MS Excel має бути встановлений на сервері, якщо на клієнті - на клієнтській стороні так само необхідний MS Excel.

Приклад (наприкінці статті можна подивитися у текстовому вигляді):

Слід зазначити, що це об'єкти, методи та властивості, що надаються COM-объектом "Excel.Application" - це об'єкти, методи та властивості VBA, мови програмування MS Office.

Примітка:

Буває потрібно працювати з існуючим шаблоном. Тоді перед нами виникає необхідність десь зберігати цей шаблон, щоб до нього мали доступ усі необхідні користувачі. Однак є простіше рішення, зберігаємо шаблон як двійковий макет.

2. Робота через Табличний Документ 1С.

Табличний документ 1С підтримує формат MS Excel для запису з платформи 8, а ось для відкриття тільки з платформи 8.3.6. При відкритті всі листи завантажуються в один табличний документ. Починаючи з версії 8.3.10, при завантаженні різні аркуші завантажуються, як різні області.

Приклад запису дуже простий і вимагає особливої ​​уваги:

Однак тут у нас постає проблема. При записі з 1С у книзі Excel за замовчуванням відключено відображення імен аркушів.

Цю проблему можна вирішити 2 способами, 1 - у самій книзі в налаштуваннях увімкнути відображення аркушів (не всі користувачі будуть згодні це робити), 2 - зробити це через COM-об'єкт (нам знову потрібний встановлений MS Excel).

Після цього невеликого доповнення у файлі MS Excel будуть видні ярлики аркушів.

Читання ж MS Excel не така проста задача, оскільки метод прочитати доступний тільки на сервері або товстому клієнті. Для цього нам потрібно передати файл MS Excel на сервер.

&На Клієнті

Процедура Створення документа()

Виняток

КінецьСпроби;

Книга = Ексель.WorkBooks.Add(); //Створюємо нову книгу MS Excel

Аркуш = Книга.WorkSheets.Add(); //Додаємо лист

Лист.Name = "Приклад із 1С"; //Задаємо ім'я аркуша

Лист.Cells(1,1).Value = "Давайте створимо формулу";!}

Аркуш.Cells (2,1).Value = 1;

Аркуш.Cells (2,2).Value = 2;

Аркуш.Cells (2,3).Formula = "=A2+B2";

Аркуш.Cells (3,1).Value = ПоточнаДата();

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

Книжка.Close();

КінецьПроцедури

&На сервері

Функція ОтриматиМакетСервер()

Повернення РеквізитФормиЗначення("Об'єкт").ОтриматиМакет("ШаблонНаВивантаження"); //Таким чином ми отримуємо макет зовнішньої обробки;

КінецьФункції

&На Клієнті

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

Ексель = Новий COMОб'єкт ("Excel.Application");

Виняток

Повідомити("Невдала спроба підключення компоненти Excel. Можливо, програма Excel не встановлена ​​на даному комп'ютері!");

КінецьСпроби;

Макет = ОтриматиМакетСервер();

Макет.Записати(Ім'яТимчасовогоФайлу);

У вас є питання, чи потрібна допомога консультанта?

Книга = Ексель.WorkBooks.Open (Ім'я Тимчасового Файлу);

Аркуш Шаблона = Книга. WorkSheets (1);

Аркуш Шаблона.Cells (6,1).Value = "Дата:";!}

Аркуш Шаблона.Cells (6,2).Value = ПоточнаДата();

Аркуш Шаблона.NumberFormat = "dd/mm/yy;@"; // Дамо формат дати, цей формат отримано записом макросу в MS Excel

Аркуш Шаблона.Columns("B:B").EntireColumn.AutoFit; // Розтягнемо колонку, щоб дата точно містилася

SaveAs(Ім'яФайлу);

Книжка.Close();

КінецьПроцедури

&На Клієнті

КінецьПроцедури

&На Клієнті

Процедура ЗаписатиТабличнийДокумент()

Табличний Документ = Новий Табличний Документ ();

ТабличнийДокумент.Область("R1C1").Текст = "Приклад запису в MS Excel з 1С";

ТабличнийДокумент.Записати("C:\1\Test2.xls",ТипФайлаТабличногоДокумента.XLSX);

Excel = Новий COMОб'єкт ("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()

КінецьПроцедури

ДвійковіДані = Новий ДвійковіДані("C:\1\test2.xlsx");

Адреса=ПоміститиВчаснеСховище(ДвійковіДані,ЦяФорма.УнікальнийІдентифікатор) ;

ТабличнийДокумент = ЗавантажитиНа Сервері (Адреса);

Табличний Документ. Показати ();

КінецьПроцедури

&На сервері

Функція ЗавантажитиНа Сервері(Адреса)

Ім'яТимчасовогоФайлу = ОтриматиІм'яТимчасовогоФайлу("xlsx");

ДаніФайла = ОтриматиЗ ТимчасовогоСховища(Адреса);

ДаніФайла.Записати(Ім'яТимчасовогоФайлу);

Табличний Документ = Новий Табличний Документ ();

Повернення ТабличнийДокумент;

Сподобалось? Лайкни нас на Facebook