База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать обработку для загрузки данных из Excel в 1С:Бухгалтерия 8.3? › Ответ в теме: Как создать обработку для загрузки данных из Excel в 1С:Бухгалтерия 8.3?
Вот конкретный пример внешней обработки для загрузки данных из Excel в 1С:Бухгалтерия предприятия (8.3), с пошаговой инструкцией по установке и использованию.
—
### 1. Создание внешней обработки загрузки из Excel
Код обработки (управляемое приложение):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
&НаКлиенте Процедура ЗагрузитьИзExcel(Команда) // Диалог выбора файла Excel Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Фильтр = "Файлы Excel (*.xls;*.xlsx)|*.xls;*.xlsx"; Если Не Диалог.Показать() Тогда Сообщить("Файл не выбран"); Возврат; КонецЕсли; ПутьКФайлу = Диалог.ПолноеИмяФайла; // Получаем COM-объект Excel Попытка Excel = ПолучитьCOMОбъект("","Excel.Application"); Исключение Сообщить("Не удалось создать объект Excel. Проверьте, установлен ли Microsoft Excel."); Возврат; КонецПопытки; Попытка Книга = Excel.Workbooks.Open(ПутьКФайлу); Лист = Книга.Worksheets(1); Исключение Сообщить("Не удалось открыть файл Excel."); Excel.Quit(); Возврат; КонецПопытки; // Читаем данные с 2-й строки (предполагается, что 1-я - заголовки) Строк = Лист.UsedRange.Rows.Count; Для НомерСтроки = 2 По Строк Цикл // Пример: читаем 3 колонки: Код, Наименование, Цена Код = СокрЛП(СтрЗначение(Лист.Cells(НомерСтроки, 1).Value)); Наименование = СокрЛП(СтрЗначение(Лист.Cells(НомерСтроки, 2).Value)); Цена = Лист.Cells(НомерСтроки, 3).Value; Если Код = "" Тогда Продолжить; КонецЕсли; // Ищем элемент справочника Номенклатура по коду Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Код); Если Номенклатура.Пустая() Тогда // Создаем новый элемент Номенклатура = Справочники.Номенклатура.СоздатьЭлемент(); Номенклатура.Код = Код; Номенклатура.Наименование = Наименование; Номенклатура.Записать(); Иначе // Обновляем наименование, если нужно Если Номенклатура.Наименование <> Наименование Тогда Номенклатура.Наименование = Наименование; Номенклатура.Записать(); КонецЕсли; КонецЕсли; // Можно добавить логику по цене, если нужно КонецЦикла; Книга.Close(Ложь); Excel.Quit(); Сообщить("Загрузка завершена. Обработано строк: " + Строк - 1); КонецПроцедуры |
—
### 2. Создание формы обработки
— Создайте внешнюю обработку (файл .epf) в конфигураторе.
— Добавьте на форму кнопку «Загрузить из Excel».
— В обработчике нажатия кнопки вызовите процедуру ЗагрузитьИзExcel.
Пример кода кнопки:
|
1 2 3 4 |
&НаКлиенте Процедура КнопкаЗагрузитьНажатие(Кнопка) ЗагрузитьИзExcel(Неопределено); КонецПроцедуры |
—
### 3. Установка обработки в конфигурацию «Бухгалтерия предприятия»
1. Откройте конфигуратор 1С:Предприятия.
2. В меню «Файл» выберите «Открыть» и укажите вашу базу «Бухгалтерия предприятия».
3. В дереве конфигурации выберите «Обработки».
4. Нажмите правой кнопкой мыши -> «Добавить внешнюю обработку».
5. Укажите путь к созданному файлу .epf с обработкой загрузки.
6. Сохраните конфигурацию и обновите базу (конфигурацию).
7. Запустите 1С в режиме предприятия.
8. В меню «Сервис» -> «Внешние обработки» выберите вашу обработку.
9. Откроется форма с кнопкой «Загрузить из Excel».
10. Нажмите кнопку, выберите файл Excel с данными и загрузите.
—
### 4. Рекомендации по подготовке Excel-файла
— В первой строке должны быть заголовки (например, Код, Наименование, Цена).
— Данные начинаются со второй строки.
— Колонки: 1 — Код, 2 — Наименование, 3 — Цена (можно изменить под свои нужды).
— Код должен быть уникальным для поиска элементов справочника.
—
### 5. Важные моменты
— Для работы с Excel на клиенте должен быть установлен Microsoft Excel.
— Если база клиент-серверная, загрузка происходит на клиенте.
— Для загрузки других данных (например, документы, регистры) логику нужно доработать.
— Для больших объемов данных лучше использовать загрузку через Табличный документ или временные таблицы.
—
Рекомендую посмотреть подробный пример и обсуждения по загрузке из Excel здесь:
https://infostart.ru/public/19062/
https://infostart.ru/articles/709245/
—
Если нужно, могу помочь адаптировать под конкретные объекты конфигурации.