Обучающие статьи. Урок 30 — Загрузка данных из Excel
Приветствуем читателей нашего сайта. Сегодня мы поговорим о полезной функции «1С:Підприємство» — Загрузке данных из Excel и обратной выгрузке.
Достаточно часто программистам «1С:Підприємство» нужно выполнять загрузку из Excel файла, например, прайс-листа. Давайте научимся делать эту распространённую задачу.
Добавим новый реквизит «ИмяФайла» с типом Строка и неограниченной длиной.
Также добавим Табличную часть, для удобства визуализации данных и последующей работы с ними. Добавляем Табличную часть «ТабличнаяЧастьДанные» с реквизитами:
- «Отметка» с типом Булево.
- «Артикул» с типом строка и длиной 10
- «Номенклатура» с типом строка и длиной 100
- «Единица измерения» с типом строка и длиной 10
- «Вид номенклатуры» с типом строка и длиной 50
У нас получилось шесть колонок, «Отметка» поможет пользователю осуществлять контроль загружаемых элементов. Колонка «Артикул» будет связующим звеном, по ней будет происходить поиск номенклатуры в базе. Остальные три колонки со строковыми типами будут содержать данные непосредственно из файла. Эти три колонки-реквизита обязательные реквизиты при создании номенклатуры.
Теперь немного изменим форму, снимем галочку АвтоКонтекстноеМеню из палитры свойств табличной части, для того, чтобы пользователь не смог добавлять новые элементы сам. Так же установим для всех колонок, кроме «Отметка», галочку «только просмотр» в свойствах.
Так же для удобства отладки сделаем авто сохранение реквизита Имя файла, чтобы нам не приходилось заполнять его после каждого открытия обработки. Для этого установим в свойствах формы флажок «Сохранять значения», «Восстанавливать значения» и укажем наш реквизит.
Перед тем как мы начнем программировать, давайте создадим файл, из которого мы будем загружать данные. Создаем Excel файл со следующим содержимым:
Добавим кнопку выбора полю «Имя файла». Это можно сделать в палитре свойств этого поля.
Добавим обработчик «Начало выбора» для поля «Имя файла»
Мы перехватим это событие и перед началом выбора добавим свой код, чтобы мы могли открывать файлы только с расширениями *.xls, *.xlsx, а так же обработаем результат выбора, записав в наш реквизит «Имя файла» полный путь к файлу и его название. Смысл этой процедуры в том, чтобы получить диалоговое окно выбора файла windows.
Листинг 1. Загрузка через Excel. Выбор файла
- СтандартнаяОбработка = Ложь; Отказываемся от действий обработчика «1С:Підприємство» и устанавливаем наши.
- ДиалогВыбораФайла(); Нужен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога. Мы также можем задать различные свойства открытия и фильтры. Что мы и сделали, установили заголовок окна и установили фильтр на файлы с расширением Excel.
- Диалог.Выбрать() – срабатывает после нажатия кнопки «Открыть» открывшегося диалога. Если вам нужно организовать множественный выбор файлов, то нужно всего лишь запустить цикл, вместо условия «Если» и Реквизит ИмяФайла в таком случае примет тип ТаблицаЗначений.
Итак, сохраним обработку и попробуем открыть Excel файлик нашей обработкой. Запускаем «1С:Підприємство» в режиме предприятия. Если ошибок не было, вы должны увидеть:
Перейдем к обработке данных в файле. Запишем следующий код в процедуру «Загрузить из Excel»:
Листинг 2. Загрузка через Excel. Запуск приложения Excel
Листинг 3. Загрузка через Excel. Открытие книги и установка значений колонок
Листинг 4. Загрузка через Excel. Начало обработки листа
Листинг 5. Загрузка через Excel. Обработка строки
Для получения значения ячейки при переборе строк листа, нам необходимо указать ее точные координаты. Например «Артикул» был в первой колонке. Начинаем перебор со второй строки, тогда координаты артикула для первой строки с данными будут (2,1), далее (3, 1) и т.д.
После обработки строк и завершения обоих циклов, как по строчного, так и по листам, обязательно закрываем Excel
Листинг 6. Загрузка через 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 не предоставляет для этого надежного инструмента. Кроме…










