Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:03

Ошибка "нарушение прав доступа" при импорте из файла excel

Автор maxxi, 21 фев 2023, 10:02

0 Пользователей и 1 гость просматривают эту тему.

maxxi

Есть Справочник "НормативныйДень"

Тип=ТаблицаЗначении и Колонки "Товары" (Тип=СправочникСсылкаТовары ) и "Нормативный День" (Тип="Строка").

Хочу импортировать данные из excel в Справочник "НормативныйДень" через внешнюю обработку:

В файле 2 колонки "Товары" и "Нормативный День".

Код обработки:

&НаКлиенте
Процедура ПрочитатьФайл_XLS()
   
    ПутьКФайлам="C:\Users\User\Documents\Normativniy_Den.xls";
   
    ДанныеФайла= Новый ДвоичныеДанные(ПутьКФайлам);
   
    АдресДанных=ПоместитьВоВременноеХранилище(ДанныеФайла);
   
    ПрочитатьФайл_XLS_НаСервере(АдресДанных);
   
КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайл_XLS_НаСервере(АдресДанных)

    ТабДок= Новый ТабличныйДокумент;
   
    Данные= ПолучитьИзВременногоХранилища(АдресДанных);
   
    ПутьКФайлуНаСервере=ПолучитьИмяВременногоФайла("xls");
   
    Данные.Записать(ПутьКФайлуНаСервере);
   
    Попытка
       
        ТабДок.Прочитать(ПутьКФайлуНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Значение);
   
    Исключение
       
        Сообщение= Новый СообщениеПользователю;
       
        Сообщение.Текст="Файл не найден" + ОписаниеОшибки();
       
        Сообщение.Сообщить();
       
        Возврат;
       
    КонецПопытки;
   
    КоличествоСтрок= ТабДок.ВысотаТаблицы;
   
    Реквизит1.Очистить();
   
    Для НомерСтроки=1 По КоличествоСтрок Цикл
       
        Выборка=Справочники.НормативныйДень.Выбрать();
       
               
        Пока Выборка.Следующий() Цикл
           
             
            Выборка.Товары=ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+1).ТекущаяОбласть.Текст;
       
            Выборка.НормативныйДень=ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+2).ТекущаяОбласть.Текст;
           
       
КонецЦикла;
       
    КонецЦикла;   

КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
   
    ПрочитатьФайл_XLS();

КонецПроцедуры


Но получаю ошибку "Нарушение прав доступа".

Подскажите пожалуйста, где допустил ошибку.

Спасибо.

antoneus

Ошибка-то на какой строке возникает? Пройдитесь отладчиком или выставьте остановку по ошибке. Скорее всего, нет прав на чтение справочника.

И вот это

Выборка.Товары=ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+1).ТекущаяОбласть.Текст;
работать не будет, надо сначала объект получить (или создать), и тип реквизита - СправочникСсылка.Товары, а вы туда пихаете строку.

В общем, все переделать.

maxxi

antoneus, 1. Ошибка после строки:
Выборка=Выборка=Справочники.НормативныйДень.Выбрать().ПолучитьОбъект();

antoneus

Нет, обратно не то)
"Хочу импортировать данные из excel в справочник" подразумевает, что в справочнике этих данных еще нет, так? Значит, их надо создать. А метод Выбрать() выбирает элементы, уже существующие в справочнике.

maxxi

Да, справочник такого вида.

maxxi

antoneus,
Выборка=Выборка=Справочники.НормативныйДень.СоздатьЭлемент();

SGIRG

maxxi, Этим кодом вы выполняете сравнение переменной с функцией и результат сравнения помещаете в ту же самую переменную

НовыйЭлемент = Справочники.НормативныйДень.СоздатьЭлемент();

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск