База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибки в коде 1С для загрузки и выгрузки данных РС? › RE: Как исправить ошибки в коде 1С для загрузки и выгрузки данных РС?
|
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
1C // Внешняя обработка для выгрузки/загрузки данных РС Перем ПутьКФайлуОшибок; Перем ПутьКФайлуКодов; &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Инициализация таблицы результатов ИнициализироватьТаблицуРезультатов(); КонецПроцедуры &НаКлиенте Процедура ВыполнитьОбработку(Команда) // Запускаем выбор первого файла через общий модуль РаботаСExcelКлиент.ОбработатьНачалоВыбораФайлаExcel(РежимДиалогаВыбораФайла.Открытие, "ВыборФайлаОшибок"); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ВыборФайлаОшибок" Тогда Если Параметр = Неопределено Тогда Сообщить("Выбор файла с ошибками отменен"); Возврат; КонецЕсли; // Сохраняем путь к файлу ошибок и запускаем выбор второго файла ПутьКФайлуОшибок = Параметр; РаботаСExcelКлиент.ОбработатьНачалоВыбораФайлаExcel(РежимДиалогаВыбораФайла.Открытие, "ВыборФайлаКодов"); ИначеЕсли ИмяСобытия = "ВыборФайлаКодов" Тогда Если Параметр = Неопределено Тогда Сообщить("Выбор файла с кодами отменен"); Возврат; КонецЕсли; // Сохраняем путь к файлу кодов и запускаем обработку ПутьКФайлуКодов = Параметр; // Выполняем обработку на сервере ВыполнитьОбработкуНаСервере(ПутьКФайлуОшибок, ПутьКФайлуКодов); КонецЕсли; КонецПроцедуры &НаСервере Функция ПрочитатьФайлОшибок(Путь) Результат = Новый Массив; Попытка // Здесь должен быть код чтения Excel файла с ошибками // Например, через COMОбъект Excel или через сторонние библиотеки // Для примера возвращаем пустой массив Исключение Сообщить("Ошибка при чтении файла ошибок: " + ОписаниеОшибки()); Возврат Новый Массив; КонецПопытки; Возврат Результат; КонецФункции &НаСервере Функция ПрочитатьФайлКодов(Путь) Результат = Новый Массив; Попытка // Аналогично чтение файла с кодами Исключение Сообщить("Ошибка при чтении файла кодов: " + ОписаниеОшибки()); Возврат Новый Массив; КонецПопытки; Возврат Результат; КонецФункции &НаСервере Функция ВыполнитьЗапросы(ДанныеОшибок, КодыРД) Результат = Новый ТаблицаЗначений; // Здесь логика обработки данных, например, запросы к базе // Заполнить Результат по результатам обработки Возврат Результат; КонецФункции &НаСервере Процедура ИнициализироватьТаблицуРезультатов() // Инициализация таблицы результатов, например, создание структуры КонецПроцедуры &НаСервере Процедура ЗаполнитьТаблицуРезультатов(Данные) // Заполнение таблицы результатов данными из Данные КонецПроцедуры |
**Комментарии и исправления:**
1. В исходном коде отсутствовали определения функций ПрочитатьФайлОшибок, ПрочитатьФайлКодов, ВыполнитьЗапросы, ИнициализироватьТаблицуРезультатов и ЗаполнитьТаблицуРезультатов. Я добавил шаблоны этих функций с комментариями, где нужно реализовать логику.
2. В процедуре ОбработкаОповещения добавлена обработка отмены выбора файла (проверка на Неопределено).
3. Вызов процедуры ВыполнитьОбработкуНаСервере сделан с передачей параметров.
4. Добавлены комментарии, где необходимо реализовать чтение Excel файлов (через COM или сторонние библиотеки).
5. Все процедуры и функции разделены по контексту выполнения (&НаКлиенте и &НаСервере).
6. В коде отсутствует обработка ошибок при чтении файлов — добавлена базовая обработка через Попытка…Исключение.
7. Рекомендую реализовать чтение Excel через COMОбъект Excel или использовать внешние библиотеки для работы с Excel (например, V8Excel).
—
Если нужно, могу помочь с примером чтения Excel через COM или с реализацией конкретных запросов.
Рекомендую посмотреть здесь: https://infostart.ru/public/291939/ (пример работы с файлами Excel в 1С)