База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибки в коде 1С для загрузки и выгрузки данных РС? › RE: Как исправить ошибки в коде 1С для загрузки и выгрузки данных РС?
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С)