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

Загрузка данные из excel в ТЗ

Автор maxxi, 05 авг 2024, 20:31

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

maxxi

При загрузке данных из файла получаю ошибку:

antoneus

А что должно получиться в итоге вот этого вот ПутьКФайлам.Выгрузить? Что вы хотите подставить в запрос?

maxxi

antoneus, 4 поля с данными ну типа ТЗ.

maxxi


antoneus

А ПутьКФайлам - это что?

maxxi

antoneus, Строка, Да можете написать что у Строки нет метода Выгрузить, но в старой обработке работал без проблем через временной хранилище, но в этом не хочет работать.

maxxi

antoneus, вот запрос:
    |ВЫБРАТЬ
        |    ТЧ.Категория КАК Категория,
        |    ТЧ.Plan1 КАК Plan1,
        |    ТЧ.Plan2 КАК Plan2,
        |    ТЧ.BonusSumma КАК BonusSumma
        |ПОМЕСТИТЬ вт_Excel
        |ИЗ
        |    &ТЧ КАК ТЧ
        |;

тут я положил временное хранилище:
&НаКлиенте
Процедура ПрочитатьФайлы(Команда)
   
    тзБонусы.Очистить();
   
    Если ФорматФайла="XLSX" Тогда
       
        ПрочитатьФайл_XLS();
       
    КонецЕсли;
   
КонецПроцедуры

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

        СтрокаДанных.Plan2=ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+3).ТекущаяОбласть.Текст;
       
        СтрокаДанных.BonusSumma=ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки,"ЧГ=0") + "C"+4).ТекущаяОбласть.Текст;
   
    КонецЦикла;   
           
КонецПроцедуры


&НаКлиенте
Процедура ПрочитатьФайл_XLS()
   
    ДанныеФайла= Новый ДвоичныеДанные(ПутьКФайлам);
   
    АдресДанных=ПоместитьВоВременноеХранилище(ДанныеФайла,УникальныйИдентификатор);
   
    ПрочитатьФайл_XLS_НаСервере(АдресДанных);   
   
КонецПроцедуры

тут параметры запроса:

    Запрос.УстановитьПараметр("Нач", Нач);
    Запрос.УстановитьПараметр("Кон", КонецДня(Кон));
    Запрос.УстановитьПараметр("Отдел",Отдел);
    Запрос.УстановитьПараметр("Филиал",Филиал);
    Запрос.УстановитьПараметр("ТЧ", ПутьКФайлам.Выгрузить);
    Запрос.УстановитьПараметр("Товар", Товар);
    ///////////////////////////////////////////////////////////////////////
   
    ПолученноеЗначение = ЗначениеИзФайла(ПутьКФайлам);
   
    Если ТипЗнч(ПолученноеЗначение) = Тип("ТаблицаЗначений") Тогда
       
        //не знаю что дальше
    КонецЕсли;   
   
    ///////////////////////////////////////////////////////////////////////
   
    РезультатЗапроса = Запрос.Выполнить();
   
    Выборка= РезультатЗапроса.Выбрать();
   
    тзБонусы.Очистить();
   
    Пока Выборка.Следующий() Цикл
       
        ТабЗнач=тзБонусы.Добавить();
       
        ТабЗнач.BonusSumma=Выборка.BonuSumma;

        ТабЗнач.Plan1=Выборка.Plan1;
     
        ТабЗнач.Plan2=Выборка.Plan2;
     
        ТабЗнач.Категория=Выборка.Категория;


вот сам файл:

antoneus

Если ТипЗнч(ПолученноеЗначение) = Тип("ТаблицаЗначений") Тогда
       
    //не знаю что дальше
    //а вот то самое

    Запрос.УстановитьПараметр("ТЧ", ПолученноеЗначение)
   
КонецЕсли;

maxxi

antoneus,
переписал так: Фото1

получаю исключение:Фото2

Максим75

maxxi, смотрите, Вы же в тзБонусы добавляете строки из файла.
выгрузите из тзБонусы в таблицу значений и передайте эту таблицу значений в качестве параметра ТЧ в запрос, главное с типами разберитесь, чтобы запрос скушал.
у Вас же тзБонусы - скорее всего на форме табличная часть или что-то в этом роде.

Теги:

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

Рейтинг@Mail.ru

Поиск