1с Как Программно Создавать Листы в Excel • Пример кода 1с

Содержание

Обучающие статьи. Урок 30 — Загрузка данных из Excel

Приветствуем читателей нашего сайта. Сегодня мы поговорим о полезной функции «1С:Підприємство» — Загрузке данных из Excel и обратной выгрузке.

Достаточно часто программистам «1С:Підприємство» нужно выполнять загрузку из Excel файла, например, прайс-листа. Давайте научимся делать эту распространённую задачу.

Добавим новый реквизит «ИмяФайла» с типом Строка и неограниченной длиной.

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

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

У нас получилось шесть колонок, «Отметка» поможет пользователю осуществлять контроль загружаемых элементов. Колонка «Артикул» будет связующим звеном, по ней будет происходить поиск номенклатуры в базе. Остальные три колонки со строковыми типами будут содержать данные непосредственно из файла. Эти три колонки-реквизита обязательные реквизиты при создании номенклатуры.

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

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

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

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

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

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

Добавим кнопку выбора полю «Имя файла». Это можно сделать в палитре свойств этого поля.

Добавим обработчик «Начало выбора» для поля «Имя файла»

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

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

Листинг 1. Загрузка через Excel. Выбор файла

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

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

Итак, сохраним обработку и попробуем открыть Excel файлик нашей обработкой. Запускаем «1С:Підприємство» в режиме предприятия. Если ошибок не было, вы должны увидеть:

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

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

Листинг 2. Загрузка через Excel. Запуск приложения Excel

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

Листинг 3. Загрузка через Excel. Открытие книги и установка значений колонок

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

Листинг 4. Загрузка через Excel. Начало обработки листа

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

Листинг 5. Загрузка через Excel. Обработка строки

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

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

После обработки строк и завершения обоих циклов, как по строчного, так и по листам, обязательно закрываем Excel

Листинг 6. Загрузка через Excel. Закрытие приложения

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

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

Листинг 7. Загрузка через Excel. Начало процедуры обработки строк табличной части

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

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

Листинг 9.1. Загрузка через Excel. Проверка, есть ли в базе два ключевых реквизита

Листинг 9.2. Загрузка через Excel. Проверка, есть ли в базе два ключевых реквизита

Листинг 9.3. Загрузка через Excel. Создание элемента

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

Листинг 10. Загрузка через Excel. Запись элемента

Листинг 11. Загрузка через Excel. Создание дополнительных единиц отчетов

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

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

[expert_bq id=»1570″]Если нажать на кнопку повторно, то Excel выдаст ошибку, что подобные листы уже используется, надо учитывать этот момент, просто удалите дубли, в этом примере я не буду делать повторную проверку или добавление каких-то случайных значений к имени листов. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Если нажать на кнопку повторно, то Excel выдаст ошибку, что подобные листы уже используется, надо учитывать этот момент, просто удалите дубли, в этом примере я не буду делать повторную проверку или добавление каких-то случайных значений к имени листов.

Листы в Excel из списка по шаблону

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

Как объединить строки в Excel без потери данных? Примеры и советы. — Объединение строк в Excel — одна из самых распространенных задач, которые нам нужно выполнять время от времени. Проблема в том, что Microsoft Excel не предоставляет для этого надежного инструмента. Кроме…

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: