Шаг 1: Создаем новую обработку
-
В конфигураторе откройте свою базу данных.
-
В дереве конфигурации найдите папку "Обработки".
-
Щелкните правой кнопкой мыши -> Добавить -> Обработка.
-
Дайте ей понятное имя, например, "ЗагрузкаНоменклатурыИзExcel".
Шаг 2: Проектируем интерфейс (Форму)
Нам понадобятся элементы управления на форме, чтобы пользователь мог:
-
Выбрать файл Excel.
-
Запустить процесс загрузки.
-
Увидеть результат (что было загружено или какие ошибки возникли).
Создаем форму и добавляем элементы:
-
Откройте созданную обработку и перейдите на вкладку "Формы". Создайте основную форму.
-
В дизайнере формы добавьте следующие элементы:
-
Поле ввода (
ПолеФайла). Для него установите свойствоВид = ПолеВыбораФайла. -
Кнопка (
КнопкаЗагрузить). Подпишите ее "Загрузить данные". -
Табличный документ (
ТабличныйДокумент1). В него мы будем выводить лог выполнения.
-
Ваша форма может выглядеть примерно так:
text[ Поле для выбора файла Excel... ] [Обзор] [ Кнопка "Загрузить данные" ] [ Область для лога (табличный документ) ]
Шаг 3: Пишем код в модуле формы
Теперь "оживим" нашу форму. Весь код будет писаться в модуле формы обработки.
1. Обработчик нажатия на кнопку "Загрузить данные"
bsl&НаКлиенте Процедура КнопкаЗагрузить_ПриНажатии(Кнопка) // Проверяем, выбран ли файл Если ПустаяСтрока(ПолеФайла.Value) Тогда Сообщить("Выберите файл Excel!", СтатусСообщения.Внимание); Возврат; КонецЕсли; // Запускаем загрузку на сервере ЗагрузитьДанныеНаСервере(ПолеФайла.Value); КонецПроцедуры
2. Основная серверная процедура загрузки
bsl&НаСервере Процедура ЗагрузитьДанныеНаСервере(ПутьКФайлу) // 1. Подключаемся к Excel Попытка ПриложениеExcel = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Не удалось запустить Excel. Убедитесь, что он установлен!"); Возврат; КонецПопытки; // 2. Открываем книгу и лист КнигаExcel = ПриложениеExcel.Workbooks.Open(ПутьКФайлу); ЛистExcel = КнигаExcel.ActiveSheet; // 3. Определяем последнюю заполненную строку ТекСтрока = 2; // Предполагаем, что в строке 1 - заголовки Пока ЛистExcel.Cells(ТекСтрока, 1).Value <> Неопределено Цикл // 4. Читаем данные из ячеек Наименование = ЛистExcel.Cells(ТекСтрока, 1).Value; // Столбец A Артикул = СокрЛП(ЛистExcel.Cells(ТекСтрока, 2).Value); // Столбец B ПолноеНаименование = СокрЛП(ЛистExcel.Cells(ТекСтрока, 3).Value); // Столбец C // 5. Создаем новый элемент справочника "Номенклатура" Попытка НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); НовыйЭлемент.Наименование = Наименование; НовыйЭлемент.Артикул = Артикул; НовыйЭлемент.ПолноеНаименование = ПолноеНаименование; // 6. Записываем элемент НовыйЭлемент.Записать(); // 7. Выводим сообщение об успехе в лог ВывестиСообщениеВЛог("Успешно: " + Наименование); Исключение // 8. Если ошибка (например, дублирование), выводим в лог ВывестиСообщениеВЛог("ОШИБКА для '" + Наименование + "': " + ОписаниеОшибки()); КонецПопытки; ТекСтрока = ТекСтрока + 1; КонецЦикла; // 9. Закрываем Excel КнигаExcel.Close(0); ПриложениеExcel.Quit(); Сообщить("Загрузка завершена!"); КонецПроцедуры
3. Вспомогательная процедура для вывода лога
bsl&НаСервере Процедура ВывестиСообщениеВЛог(ТекстСообщения) // Добавляем строку в табличный документ на форме НовыйЛог = Элементы.ТабличныйДокумент1.Область(); НовыйЛог.Текст = ТекстСообщения; Элементы.ТабличныйДокумент1.Вывести(НовыйЛог); КонецПроцедуры
Шаг 4: Подготовка Excel-файла
Создайте в Excel файл со следующими данными (заголовки в первой строке):
| Наименование | Артикул | ПолноеНаименование |
|---|---|---|
| Стол офисный | SO-001 | Стол офисный деревянный, черный |
| Стул | SC-005 | Стул компьютерный с мягким сиденьем |
| Монитор 24" | M24-DELL | Монитор Dell 24 дюйма, IPS |
Шаг 5: Тестирование
-
Запустите 1С в режиме предприятия.
-
Найдите в меню "Файл" -> "Открыть" и выберите вашу обработку.
-
Укажите созданный Excel-файл.
-
Нажмите кнопку "Загрузить данные".
-
Смотрите результат в логе и проверяйте созданные элементы в справочнике "Номенклатура".
Важные замечания для новичков:
-
COM-объекты: Этот способ работает только если на компьютере установлен Microsoft Excel.
-
Безопасность: Использование COM-объектов требует определенных прав и может быть заблокировано на серверных версиях.
-
Альтернативы: Для более сложных и надежных задач используются другие методы (встроенный
ТабличныйДокумент.Прочитать(), использование запросов через ADO), но COM — самый простой для старта. -
Обработка ошибок: Код содержит базовую обработку ошибок, но в реальной задаче ее нужно делать более детальной.
Поздравляем! Вы только что создали свою первую полезную обработку, которая ощутимо экономит время. Это основа, которую вы сможете дорабатывать под любые свои нужды.
