Навчальні статті. Урок - Завантаження даних з Excel

Зміст
  1. Лістинг 1. Завантаження через Excel. Вибір файлу
  2. Лістинг 2. Завантаження через Excel. Запуск програми Excel
  3. Лістинг 3. Завантаження через Excel. Відкриття книги і установка значень колонок
  4. Лістинг 4. Завантаження через Excel. Початок обробки листа
  5. Лістинг 5. Завантаження через Excel. Обробка рядки
  6. Лістинг 6. Завантаження через Excel. Закриття програми
  7. Лістинг 7. Завантаження через Excel. Початок процедури обробки рядків табличної частини
  8. Лістинг 8. Завантаження через Excel. Пошук по артикулу
  9. Лістинг 9. Завантаження через Excel. Пошук по найменуванню
  10. Лістинг 9.1. Завантаження через Excel. Перевірка, чи є в базі два ключових реквізита
  11. Лістинг 9.2. Завантаження через Excel. Перевірка, чи є в базі два ключових реквізита
  12. Лістинг 9.3. Завантаження через Excel. Створення елемента
  13. Лістинг 10. Завантаження через Excel. Запис елемента
  14. Лістинг 11. Завантаження через Excel. Створення додаткових одиниць звітів

Вітаємо читачів нашого сайту. Сьогодні ми поговоримо про корисної функції BAS - Завантаженні даних з Excel і зворотного вивантаження.

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

Створимо зовнішню обробку, для зручності налагодження.

Додамо новий реквізит «ИмяФайла» з типом Рядок і необмеженою довжиною.

Також додамо Табличну частину, для зручності візуалізації даних і подальшої роботи з ними. Додаємо Табличну частина «ТабличнаяЧастьДанные» з реквізитами:

  • «Отметка» з типом Булево.
  • «Артикул» з типом рядок і довжиною 10
  • «Номенклатура» з типом рядок і довжиною 100
  • «Единица измерения» з типом рядок і довжиною 10
  • «Вид номенклатури» з типом рядок і довжиною 50

У нас вийшло шість колонок, «Отметка» допоможе користувачеві здійснювати контроль завантажуються елементів. Колонка «Артикул» буде сполучною ланкою, по ній буде відбуватися пошук номенклатури в базі. Решта три колонки із строковими типами міститимуть дані безпосередньо з файлу. Ці три колонки-реквізиту обов'язкові реквізити при створенні номенклатури.

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

Урок 31. Загрузка из Excel

Тепер трохи змінимо форму, знімемо галочку АвтоКонтекстноеМеню з палітри властивостей табличній частині, для того, щоб користувач не зміг додавати нові елементи сам. Так само встановимо для всіх колонок, крім «Отметка», галочку «Только просмотр» у властивостях.

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

Урок 31. Загрузка из Excel

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

Урок 31. Загрузка из Excel

Відмінно, перейдемо до програмування.

Додамо кнопку вибору поля «ИмяФайла». Це можна зробити в палітрі властивостей цього поля.

Урок 31. Загрузка из Excel

Додамо обробник «НачалоВыбора» для поля «ИмяФайла»

Урок 31. Загрузка из Excel

Ми перехопимо ця подія і перед початком вибору додамо свій код, щоб ми могли відкривати файли тільки з розширеннями * .xls, * .xlsx, а так само опрацюємо результат вибору, записавши в наш реквізит «ИмяФайла» повний шлях до файлу і його назву . Сенс цієї процедури в тому, щоб отримати діалогове вікно вибору файлу windows.

Лістинг 1. Завантаження через Excel. Вибір файлу

Урок 31. Загрузка из Excel

Розглянемо цей код:

  • СтандартнаяОбработка = Ложь; Відмовляємося від дій обробника BAS і встановлюємо наші.
  • ДиалогВыбораФайла(); Потрібен для роботи з діалогом спеціального виду для відкриття файлу або декількох файлів, збереження файлу або вибору каталогу. Ми також можемо поставити різні властивості відкриття і фільтри. Що ми і зробили, встановили заголовок вікна і встановили фільтр на файли з розширенням Excel.
  • Диалог.Выбрать() – спрацьовує після натискання кнопки «Открыть» відкрився діалогу. Якщо вам потрібно організувати множинний вибір файлів, то потрібно всього лише запустити цикл, замість умови «Если» і Реквізит Имяфайла в такому випадку прийме тип ТаблицаЗначений.

    Отже, збережемо обробку і спробуємо відкрити Excel файлик нашої обробкою. Запускаємо BAS в режимі підприємства. Якщо помилок не було, ви повинні побачити:

Урок 31. Загрузка из Excel

Перейдемо до обробки даних у файлі. Запишемо наступний код в процедуру «Загрузить из Excel»:

Лістинг 2. Завантаження через Excel. Запуск програми ExcelУрок 31. Загрузка из Excel

Лістинг 3. Завантаження через Excel. Відкриття книги і установка значень колонок

Урок 31. Загрузка из Excel

Лістинг 4. Завантаження через Excel. Початок обробки листа

Урок 31. Загрузка из Excel

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

Лістинг 5. Завантаження через Excel. Обробка рядки

Урок 31. Загрузка из Excel

Для отримання значення комірки при переборі рядків листа, нам необхідно вказати її точні координати. Наприклад «Артикул» був в першій колонці. Починаємо перебір з другого рядка, тоді координати артикулу для першого рядка з даними будуть (2,1), далі (3, 1) і т.д.

Після обробки рядків і завершення обох циклів, як по рядкового, так і по листам, обов'язково закриваємо Excel

Лістинг 6. Завантаження через Excel. Закриття програми

Урок 31. Загрузка из Excel

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

Лістинг 7. Завантаження через Excel. Початок процедури обробки рядків табличної частини

Урок 31. Загрузка из Excel

Лістинг 8. Завантаження через Excel. Пошук по артикулу

Урок 31. Загрузка из Excel

Лістинг 9. Завантаження через Excel. Пошук по найменуванню

Урок 31. Загрузка из Excel

Лістинг 9.1. Завантаження через Excel. Перевірка, чи є в базі два ключових реквізита

Урок 31. Загрузка из Excel

Лістинг 9.2. Завантаження через Excel. Перевірка, чи є в базі два ключових реквізита

Урок 31. Загрузка из Excel

Лістинг 9.3. Завантаження через Excel. Створення елемента

Урок 31. Загрузка из Excel

Тепер попередньо запишемо нашу нову номенклатуру, щоб вона створила посилання на себе в базі. Посилання нам потрібна для додаткових реквізитів «ЕдиницаХраненияОстатков» і «ЕдиницаДляОтчетов», оскільки їх власник довідник номенклатура.

Лістинг 10. Завантаження через Excel. Запис елемента

Урок 31. Загрузка из Excel

Лістинг 11. Завантаження через Excel. Створення додаткових одиниць звітів

Урок 31. Загрузка из Excel

От і все. Обробка завершена.

Також, наша компанія проводить навчання за курсами:

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

Якщо у вас залишилися питання, Ви завжди можете звернутися до наших аналітиків за телефонами:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

( 5 )
Коментарі
tyyze
22.07.2021
Excel.Sheets(1).select(); работает только так а не как у вас
Но в целом спасибо
tyyze
22.07.2021
Нашел несколько ошибкок(недописки в коде) пропустили "записать" ,не указали что доп реквизиты нужно в цикл вкинуть -для начинающих тяжело будет понять
Написати коментар

Зв'яжіться з нами

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

(073) 090-70-20 (095) 090-70-20 (068) 090-70-20 info@finsoft.ua