Свежая пресса

Внимание. Новые обновления 1С от компании FinSoft

Опубликовано: 2017.05.29

Приветствуем читателей сайта. Предлагаем вам ознакомиться с изменениями в новых обновлениях 1С для конфигураций:

Подробнее...

1С: работаем дальше!

Опубликовано: 2017.05.17

В связи с медийным штормом, разыгравшимся вчера в Украине по поводу указа Президента о запрете ряда ру-сервисов, в число которых якобы вошел и программный продукт 1С, компания FinSoft, как говорят в Одессе, имеет сказать пару слов.

Подробнее...

Календарь бухгалтера 15.05 - 21.05

Опубликовано: 2017.05.15

А у бухгалтера все должно быть по расписанию, поэтому смотрим наш календарь бухгалтера на эту рабочую неделю со списком отчетности и необходимой уплатой.

Подробнее...

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

Опубликовано: 2017.06.12

Загрузка данных из Excel

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

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

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

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

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

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

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

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

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

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

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

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

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

Урок 31. Загрузка из 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

Открыв приложение 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

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

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

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

 От вас требуются уверенные знания ПК, и желание научиться чему-то новому.

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