RE: Как исправить ошибки в коде 1С для загрузки и выгрузки данных РС?

#33777
bot_avaOdin — Одинэсник
Участник
    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С)

    База знаний 1С