x 

Загрузка в 1С из Excel и DBF

1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00
Рейтинг:   / 0
ПлохоОтлично 

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

Загрузка из Excel и DBF

Сегодня мы рассмотрим достаточно распространенную задачу «Загрузка из Эксель» и загрузка из DBF, которая часто взаимосвязана с работой клиент-банков в 1С

Пример создан в конфигурации "Управление торговлей для Украины", редакция 2.3. 

Начнем с создания Внешней Обработки. 

Для этого открываем 1С в режиме Конфигуратора и в нем открываем контекстное меню файл-новый-внешняя обработка.

Так выглядит наша еще пустая обработка:

Загрузка из Excel и DBF

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

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

Добавляем Табличную часть «ТабличнаяЧастьДанные» с реквизитами:

  • «Отметка» с типом Булево. Так мы позволим пользователю управлять загрузкой.
  • «Номенклатура» с типом строка и длиной 100
  • «ЕдиницаИзмерения» с типом строка и длиной 10

Загрузка из Excel и DBF

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

Тип формы – Обычная.

Загрузка из Excel и DBF

Отметим галочками элементы для размещения и нажимаем Готово.

Загрузка из Excel и DBF

Вот такая форма у нас получилась.

Загрузка из Excel и DBF

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

Загрузка из Excel и DBF

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

Загрузка из Excel и DBF

Ну что же, форму мы создали, теперь добавим немного кода.

Начнем с обработчика НачалоВыбора и нашей процедуры ИмяФайлаНачалоВыбора.

Смысл этой процедуры в том, чтобы получить диалоговое окно выбора файла windows.

Листинг 1. Окно выбора файла

Загрузка из Excel и DBF

Рассмотрим этот код 

СтандартнаяОбработка = Ложь; Отказываемся от действий обработчика 1С и устанавливаем свои.

ДиалогВыбораФайла()Общий объект встроенного языка 1С. Предназначен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога. Здесь мы можем задать различные свойства открытия и фильтры. Что мы и сделали, установили заголовок окна и установили фильтр на файлы с расширением "xls, xlsx".

Диалог.Выбрать() – срабатывает после нажатия кнопки «Открыть» открывшегося диалога. Отметим, что если вам нужно организовать множественный выбор файлов, то нужно всего лишь запустить цикл, вместо условия «Если» и Реквизит ИмяФайла в таком случае примет тип ТаблицаЗначений (или любую другую удобную для вас форму списка).

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

Загрузка из Excel и DBF

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

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

Возвращаемся в конфигуратор и перейдем в процедуру обработки кнопки «Выполнить»

Добавим немного кода в процедуру:

Листинг 2

Загрузка из Excel и DBF

Обилие комментариев не должно оставить вопросов. 

В итоге наша табличная часть должна заполниться данными из Эксель.

Теперь осталось добавить загрузку непосредственно в базу. Создадим новую кнопку «Загрузить в базу», а кнопку «Выполнить» переименуем в «Загрузить из Exel». Добавим картинок к этим кнопкам, чтобы пользователям было легче ориентироваться в назначении.
 

Добавим код в процедуру новой кнопки:

Листинг 3.

Загрузка из Excel и DBF

Перебираем строки таблицы, если номенклатура в базе не найдена, тогда создадим новую, так же и с единицами измерения. Стоит отметить, что поиск при загрузке по наименованию не самый оптимальный способ. Зачастую пользователи видоизменяют название, добавляя пробелы в начало или в конец строки названия, таким образом, номенклатуру по наименованию достаточно сложно будет найти. Мы рекомендуем использовать поле Артикул, оно всегда уникально. 

В завершении добавим строчки в процедуры ПриОткритии и ПриЗакрытии. Чтобы программа запоминала путь к файлу

Листинг 4.

Загрузка из Excel и DBF

Не забудьте назначить их в соответствующие обработчики формы.

Загрузка платежей из «клиент-банка» в 1С.

Ввыше мы рассмотрели создание обработки для чтения Excel файла. Этих базовых понятий нам достаточно чтобы приступить к более сложной задаче - Загрузка платежей из «клиент-банка» в 1С.

На текущий момент большинство банков, для обмена данными с 1С, используют промежуточные файлы с различной структурой полей и типов. Файлики с форматами CSV, DBF и прочими разделителями. В данном примере рассмотрим работу с DBF форматом.

Как создавать внешние обработки мы уже рассматривали выше, не будем на этом останавливаться подробно, база для разработки Бухгалтерия для Украины, редакция 1.2. 
Опишем общую структуру обработки:

Реквизиты:

  • ИмяФайла – Строка, неограниченная длина;
  • ДатаЗагрузки – Дата, состав дата;
  • НашСчет – СправочникСсылка. БанковскиеСчета;
  • Организация - СправочникСсылка.Организации;
  • Табличная часть с реквизитами:
    • Отметка – Булево;
    • ВидДокумента – строка, длина 50;
    • СчетКонтрагента– строка, длина 20;
    • Контрагент – строка, длина 100;
    • ДоговорКонтрагента – строка, длина 100;
    • Приход – число, длина 15, точность 2;
    • Расход – число, длина 15, точность 2;
    • НазначениеПлатежа – строка, неограниченная длина;
    • МФОБанкаКонтрагента – строка, длина 9;
    • ОКПОКонтрагента – строка, длина 12;
    • НомерПлатежа – число, длина 10, точность 0;

Поле «имя файла» так же будет служить нам для открытия нужного файла. Код в этой процедуре будет такой же, как и в загрузке Экселя, но, с другим фильтром:

Листинг 5.

Загрузка из Excel и DBF

Кнопку выполнить переименуем в «Загрузить из DBF» и сразу добавим еще одну «Загрузить в базу».

Добавим код в процедуру кнопки «Загрузить из DBF»:

Листинг 6.

Загрузка из Excel и DBF

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

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

Создадим так же две дополнительные функции для создания договора и создания нового банка.

Перейдем к процедуре загрузки:

Листинг 7.

Загрузка из Excel и DBF

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

Готовые примеры обработок из этой темы доступны для загрузки по ссылкам ниже:

Если вам интересны подобные темы, и вам интересно заниматься программированием, наша компания также, проводит курсы программирования 1С.

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

С другими полезными темами вы можете ознакомиться в нашей базе знаний

Все Услуги 1С компании FinSoft вы можете посмотреть перейдя по ссылке

Так же Вы можете ознакомиться с нашими разработками 1С

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:

(057) 780-70-70

(095) 090-70-20

(068) 090-70-20