Бухоблік інфо. Бухоблік інфо Завантаження файлу з excel в 1с

Конфігурація: 1с Бухгалтерія

Версія конфігурації: 3.0.44.177

Дата публікації: 20.01.2017

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

Завантаження з Excel 1С: Бухгалтерія 8.3 ред. 3.0

Наприклад ми маємо такий табличний документ Excel для завантаження списку номенклатури і ціни (роздрібної та закупівельної).

Заходь у .

У верхній частині натискаємо Номенклатура та Ціни - Завантажити. Саме в цьому заховано завантаження та вивантаження з табличних документів.

Завантаження підтримує формати xls(старий формат Excel 97-2003) та xlsx(новий формат), а також mxl та ods формати. Тепер вибираємо наш файл з номенклатурою та чекаємо на завантаження.

Завантажився табличний документ у тому вигляді, як ми його бачили в Excel, тепер призначимо колонки і видалимо зайве.

Натискаємо на Вкажіть реквізитта вибираємо потрібний пункт зі списку.

Виділяємо рядок, у якому є непотрібні записи, а саме шапка таблиці та натискаємо Видалити рядок.

Тепер видаляємо стовпець із закупівельною ціною, зверніть увагу, що обробка вміє за 1н разів заповнювати тільки 1н вид ціни!!!Потім ви можете зробити цю операцію знову і завантажити 2-й вид ціни, за 1-ю завантаження Роздрібну за 2-ю закупівельну.

Заповнюємо не заповнені дані, Тип ціни, Встановити ціни. Кнопки Всі, Знайдені, Нові, Дублі значно полегшать пошук і допоможуть порівняти номенклатуру. Заповнюємо та натискаємо Завантажитипісля чого дані будуть завантажені в 1С: Бухгалтерія.

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

Як бачите, завантаження створило 2 документи встановлення цін номенклатури, для Закупівельної ціни та для Роздрібної. Відмінність цієї обробки за Завантаження з Excel в 1С:Бухгалтерія 8.3,в тому, що це штатна обробка і вона працює без збоїв та враховуючи всі особливості заповнення документа.

Вивантаження в Excel із 1С:Бухгалтерія 8.3 ред. 3.0

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

Все там же у довіднику Номенклатура - Номенклатура та Ціни - Вивантажити.

У пункті Колонки, вибираємо ті колонки, які треба побудувати в документі Excel. Відбірслужить для відбору номенклатури за групами, властивостями, назвами ... ітд.

Для вивантаження в excel ми додаватимемо нову колонку, а саме ставку ПДВ, начебто не дуже треба, але ми практикуємося.

  • При виконанні обміном інформацією між контрагентами (прайс-листи, акти звіряння тощо);
  • Для полегшення роботи операторів у випадках, коли основний облік ведеться до 1С, а деяка його частина виконується у таблицях Excel;
  • При первинному наповненні бази даних.

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

Універсальний механізм

На дисках ІТС, а також на порталі 1С, зайшовши в меню "Технологічна підтримка" -> "Універсальні звіти та обробки", у папці "Завантаження даних з табличного документа" знаходиться відповідна обробка.

При її запуску відкривається форма (Рис.1):

Як видно з форми, вона дозволяє виконувати перенесення інформації до наступних об'єктів конфігурації:

  1. Довідник;
  2. Табличну частину документа чи довідника;
  3. Регістр відомостей.

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

Таблична форма обробки заповнюється при відкритті файлу, що завантажується.

Типова обробка підтримує вивантаження з:

  • Розробленого фахівцями фірми 1С, файлів форматуmxl;
  • Листаxls, збереженого у форматіExcel 97-2003;
  • Текстовий файлtxt;
  • Таблиціdbf.

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

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

Тепер перейдемо до закладки «Налаштування» (Рис.2):

Рис.2

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

Після вибору об'єкта метаданих, на який буде здійснюватися запис інформації, таблична частина закладки «Налаштування» буде автоматично заповнена іменами реквізитів, описом їх типів та іншою важливою інформацією. Розгляду колонок табличної частини закладки «Налаштування» слід присвятити окремий розділ.

Колонки «Налаштування»

Позначка – встановленням чи зняттям прапорця у рядку визначається, чи заповнюватиметься відповідний реквізит.

Подання реквізиту – тут прописується синонім (найменування) реквізиту метаданих, як його в конфігураторі.

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

Опис типів – відображає тип даних, який має той чи інший реквізит метаданих.

Режим завантаження – пропонує три варіанти на вибір (Рис.3):

Рис.3

  • Шукати – здійснюватиметься пошук відповідного елемента, у разі його відсутності може бути створено новий;
  • Встановлювати - підпорядкованим чином встановлюється певне значення;
  • Обчислювати – у цьому випадку в полі створюваного елемента буде встановлений результат обчислення виразу, вказаного в колонці «Умова зв'язку/Вираз значення».

У разі, активація поля Вираз викликає відкриття форми (Рис.4).

Рис.4

Номер колонки - поле, яке використовується для вказівки, з якої колонки еселівської таблиці необхідно брати дані для заповнення.

Значення за замовчуванням - досить часто виникає ситуація, коли в файлі, що завантажується, містяться не всі необхідні для запису елемента дані, в цьому випадку для заповнення буде проставлена ​​інформація, що міститься в даному полі.

Умова зв'язку/Вираз значення – частково ми вже торкнулися цього поля, коли розглядали поля, додатково в ньому можна вказати умову, відповідно до якої будуть синхронізовані вихідні дані.

Ось, в принципі, і вся інформація, яка доступна на закладці «Налаштування».

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

Перевірити коректність даних можна натисканням на кнопку «Контроль заповнення» (Рис.1). Після цього можна запускати процес завантаження. Про успішне виконання процедури або нестандартні ситуації Ви будете оповіщені окремо.

Існує ще один механізм для завантаження даних з Екселя в інформаційних базах «Управління та торгівля». Він менш універсальний, ніж наведений вище спосіб, проте не вимагає підписки ІТС і міститься у типовій поставці.

Цю обробку можна знайти на закладці «Закупівлі», в меню «Сервіс», вона має назву «Завантаження цін постачальника з файлів» (Мал.5)

Рис.5

Форма обробки містить:

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

Цю форму можна побачити на Рис.6

Рис.6

Пояснення у верхній частині форми пояснює, як користуватись першою закладкою форми.

Після вибору контрагента (залежно від того, чи виступає він постачальником, комісіонером чи продавцем) у таблиці стануть доступні додаткові колонки для кожного типу цін.

При роботі через веб-інтерфейс, в деяких браузерах може знадобитися встановлення браузерного доповнення (Мал.7). Нам потрібно натиснути кнопку «Почати встановлення» та перезапустити наше підключення.

Рис.7

Після цього ми, використовуючи буфер обміну, зможемо переносити інформацію з однієї таблиці до іншої. Коли необхідні колонки («Артикул», «Найменування», «Ціна») будуть заповнені, ми натискаємо кнопку «Далі» і переходимо на другу сторінку (Рис.8)

Рис.8

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

  • Реєструвати все поспіль;
  • Реєструвати тільки ті, що змінилися порівняно з наявними в базі.

У текстовому полі можна внести коментар, записаний у документі (Рис.9):

Рис.9

Після виконання обробки:

  • У довіднику "Номенклатура постачальника" буде створено відповідний елемент (якщо його не було);
  • Йому буде зіставлено елемент довідника «Номенклатура»;
  • Буде створено та проведено документ «Встановлення цін номенклатури» із зазначенням: постачальника, типу цін та дати фіксації даних.

Аналогічно працює обробка «Завантаження товарів із зовнішніх файлів».

Варіанти обробки перенесення своїми руками

Головна проблема у висмикуванні даних з екселівського файлу полягає в тому, що 1С не має вбудованого однозначного механізму його відкриття. Існує кілька варіантів підключення Excel до 1С:

  • Через Microsoft ADODB - досить швидкий спосіб, який, як правило, застосовується і для файлового і клієнт-серверного варіанту зберігання бази;
  • Через використання Microsoft Office - метод, який іноді збоїть при роботі з SQL базами, як правило, працює дещо повільніше першого способу, до того ж потрібний встановлений Office;
  • Через Libre Office - на відміну від попереднього методу безкоштовний, крім xls і xlsx форматів підтримує ще й власні таблиці, але вимагає встановленого пакета LibreOffice і деякої підготовки файлу, що завантажується (перший рядок таблиці повинен містити імена колонок).

Розглянемо докладніше різні способи та варіанти.

Через ADODB.Connection

Взагалі, ADO розшифровується як ActiveX Data Object і служить для програмного доступу до різних баз даних. Найбільша проблема при створенні будь-якого підключення до стороннього файлу (у тому числі й до еселівського) – грамотно скласти рядок підключення.

Для файлів Excel тут можливі три варіанти:

Параметри рядка підключення:

  • Provider – тут визначається драйвер;
  • Data Source – визначає ім'я файлу, який ми відкриватимемо;
  • Extended Properties – тут можна вказати: чи потрібний рядок-заголовок для таблиці (HDR = YES говорить про те, що дані будуть зчитуватися з першого рядка, HDR = NO – що з другого), чи відкривається файл тільки для читання (ReadOnly) та деякі Інші додаткові параметри.

Створивши рядок підключення, ми можемо з'єднатися із файлом, що завантажується (Рис.13)

Рис.13

Тепер ми можемо за допомогою простого запиту (Рис.14) запустити вибірку інформації із файлу, що завантажується.

В даному випадку параметр «Аркуш» визначає, з яким листом з екселівської книги нам доведеться працювати.

Набір записів, що зберігаються на аркуші, можна прочитати за допомогою об'єкта Recordset. При цьому перший запис листа можна отримати параметром BOF (початок файлу), а останній EOF (кінець файлу).

Через Excel додаток

Головна відмінність від попереднього способу – крім драйверів роботи з базами даних, на комп'ютері, де виконується з'єднання, має бути встановлений Excel. Тільки в цьому випадку ми можемо ініціалізувати програму для читання даних з таблиці (Рис 16).

Цей COM об'єкт має кілька дочірніх параметрів, але головним нам, за поточних умов завдання, є параметр WorkBooks (Рис.17).

Після ініціалізації книги необхідно визначити аркуш, з якого зчитуватимуться дані (Рис.18).

Після цього можна перебирати всередині циклів рядки і колонки таблиці файлу, що відкривається.

Декілька слів про можливі помилки

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

Що стосується роботи через ADO (Рис.19);

Рис.19

  • У разі роботи з додатком (Мал. 20).

Мал. 20.

Підключення та процедуру завершення роботи з даними найкраще організовувати всередині конструкції Спроба-Виключення-КінецьСпроби, викликаючи у винятковій ситуації опис помилки. Хоча це іноді й уповільнює роботу, але значно спрощує визначення причини виникнення помилки і, зрештою, способів її усунення.

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

Виробляти перенесення даних з Excel в 1С потрібно як на початковому періоді роботи з цією програмою. Іноді настає необхідність подібного, коли під час діяльності потрібно занести якісь списки, що зберігаються у книзі табличного процесора. Наприклад, якщо потрібно перенести прайс-листи або замовлення онлайн-магазину. У випадку, коли списки невеликі, їх можна вбити і вручну, але що робити, якщо вони містять сотні найменувань? Для того, щоб прискорити процедуру, можна вдатися до деяких додаткових можливостей.

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

  • Список номенклатури;
  • Список контрагентів;
  • Список прайсів;
  • Перелік замовлень;
  • Інформація про купівлю або продаж тощо.

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

Підготовка данних

Нам потрібно буде підготувати дані у самій таблиці Excel.


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

Підключення зовнішнього завантажувача

Підключити зовнішній завантажувач із розширенням epfдо додатку 1С можна як до підготовки файлу Ексель, так і після. Головне, щоб до початку процесу виконання завантаження обидва ці підготовчі моменти були вирішені.

Існує кілька зовнішніх завантажувачів таблиць Ексель для 1С, які створені різними розробниками. Розглядатимемо ми приклад із використанням інструменту для обробки інформації «Завантаження даних із табличного документа»для версії 1С 8.3.


Однією з основних баз даних, із якими працює 1C, є список номенклатури товарів та послуг. Тому для опису процедури завантаження з Excel зупинимося на прикладі перенесення цього типу даних.

  1. Повертаємось до вікна обробки. Так як ми завантажуватимемо номенклатуру товарів, то в параметрі перемикач повинен стояти в позиції «Довідник». Втім, його так встановлено за умовчанням. Перемикати його слід лише тоді, коли ви зібралися переносити інший тип даних: табличну частину або регістр відомостей. Далі у полі «Вигляд довідника»клацаємо по кнопці, на якій зображено крапку. Відкривається список, що випадає. У ньому нам слід вибрати пункт "Номенклатура".
  2. Після цього обробник автоматично розставляє поля, які програма використовує у цьому виді довідника. Потрібно відразу зазначити, що не обов'язково заповнювати всі поля.
  3. Тепер знову відкриваємо документ Excel, що переноситься. Якщо найменування його колонок відрізняється від найменування полів довідника 1С, які містять відповідні, потрібно перейменувати ці стовпці в Екселі так, щоб назви повністю збігалися. Якщо таблиці є стовпці, котрим у довіднику немає аналогів, їх слід видалити. У нашому випадку такими стовпцями є «Кількість»і «Ціна». Також слід додати, що порядок розміщення стовпців у документі має суворо збігатися з тим, який представлений у обробці. Якщо для деяких стовпців, які відображаються в завантажувачі, у вас немає даних, то ці колонки можна залишати порожніми, але нумерація стовпців, де є дані, повинна збігатися. Для зручності та швидкості редагування можна застосовувати спеціальну можливість Ексель для швидкого переміщення колонок місцями.

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

  4. Повертаємось у вікно обробки 1С. Тиснемо на кнопку «Відкрити»яка зображена у вигляді папки жовтого кольору.
  5. Відкриється вікно відкриття файлу. Переходимо до директорії, де розташований документ Ексель, який нам потрібен. Перемикач відображення файлів за замовчуванням встановлений для розширення mxl. Щоб показати потрібний нам файл, його потрібно переставити в позицію «Аркуш Excel». Після цього виділяємо документ, що переноситься, і тиснемо на кнопку «Відкрити».
  6. Після цього вміст відкривається в обробнику. Щоб перевірити коректність заповнення даними, тиснемо на кнопку «Контроль заповнення».
  7. Як бачимо, інструмент контролю заповнення повідомляє нам, що помилок не знайдено.
  8. Тепер переміщуємось у вкладку "Налаштування". У «Поле пошуку»ставимо галочку в тому рядку, який у всіх найменувань, що заносяться до довідника номенклатури, буде унікальним. Найчастіше для цього використовують поля «Артикул»або «Найменування». Це потрібно робити для того, щоб при додаванні нових позицій до списку дані не подвійні.
  9. Після того, як усі дані внесені та налаштування виконані, можна переходити до безпосереднього завантаження інформації до довідника. Для цього клацаємо по напису "Завантажити дані".
  10. Виконується процес завантаження. Після її завершення можна перейти до довідника номенклатури та переконатися, що всі потрібні дані туди додані.

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

У 1С 8.3 є можливість масово завантажити список із табличного документа, наприклад, із файлу Excel.

Для завантаження ми використовуємо зовнішню обробку ЗавантаженняДанихІзТабличногоДокумента.epfдля керованих форм (8.2 та 8.3), яку можна завантажити . Вона універсальна і повинна підходити для будь-якої конфігурації, написаної під керовану програму.

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

Щоб запустити зовнішню обробку, потрібно зайти в меню Файл, далі Відкрити і вибрати цю обробку з каталогу, в якому вона була збережена:

Обробка Завантаження даних з табличного документа 1С 8.3 (керовані форми)

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

Я хочу навести приклад на довіднику”. Я створив файл з даними у форматі xls.

Обробка вміє завантажувати також файли формату:

  • будь-який інший формат, звідки можна скопіювати дані.

Ось так виглядає файл Excel з вихідними даними, який ми завантажуватимемо у довідник «Номенклатура»:

Отримайте 267 відеоуроків з 1С безкоштовно:

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

Даних позицій поки що немає в інформаційній базі 1С, і ми зараз їх завантажимо.

Натискаємо на значок «Відкрити» (на малюнку позначений як «Вибір джерела») та вибираємо файл із даними. Можна використовувати просте копіювання інформації. Мій файл з прикладом можна завантажити. Дані завантажаться в обробку автоматично. Тепер перевіримо, чи ми заповнили наші дані правильно. Для цього натискаємо кнопку "Контроль заповнення".

Як бачимо, у нас з'явилися помилки! Будемо усувати. Заходимо на закладку «Налаштування»:

Перш ніж виправляти помилки, хочу звернути увагу на одну важливу деталь. Програма спочатку не знає, яким полем їй шукати елемент довідника на випадок, якщо він там вже є. Тому їй треба його вказати. Я волію шукати за кодом, тому що він, як правило, унікальний. У стовпчику «Поле пошуку» у рядку «Код» ставимо галочку. Тепер, якщо запис з таким кодом буде знайдено, його буде замінено, в іншому випадку — створено.

Важливо! Якщо не вказати поле пошуку, можуть з'явитися дублі номенклатури. Особливо після другого завантаження схожого файлу!

Тепер подивимося, чому лається на полі «Одиниця». Справа в тому, що одиниці виміру в 1С 8.3 зберігаються в окремому довіднику, і стандартна обробка шукає цю одиницю за найменуванням. А насправді словом одиниця прописана у полі «Повне найменування».

На жаль, обробка може вести пошук лише за «Найменуванням» та «Кодом» (для програміста можливості ширші). Якщо зверніть увагу на малюнки вище, побачите, що в колонці «Одиниця» у мене стоїть код. І в обробці слід зазначити, що пошук потрібно вести за кодом. Клацаємо двічі по колонці «Умова зв'язку» навпроти «Одиниці» та міняємо на «Код».

Тепер дивимося, що нам щось там про «Послугу» говорять у списку помилок. Ще одне важливе зауваження. Колонки у файлі повинні розташовуватися строго у тому порядку, як і рядки полів довідника.А у нас « » знаходиться в самому низу, а у файлі після колонки «Коментар».

Щоб підняти рядок «Вид номенклатури» вгору, існують сині стрілочки вгорі форми. За допомогою стрілки "Вгору" піднімаємо потрібний рядок і ставимо під "Коментарем".

Тиснемо «Завантажити дані», і цього разу все проходить без помилок:

Відеоурок із завантаження товарів у 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. Зберегти табличний документ у потрібний формат.