Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Импорт данных из Excel в Регистр сведений (переодический)

Импорт данных из Excel в Регистр сведений (переодический)
Я
   skaylanz23
 
01.05.18 - 18:01
Есть такая обработка которая считывает данные из excel записывает их во временную таблицу значения и потом от туда в регистр сведений (периодический). В результате записывается только одна запись (строка) в регистр а нужно чтобы записывались все записи из временной таблицы куда помещены данные из excel.

Вопрос: как можно доработать код чтобы записывались все записи из ТЗ? Заранее спасибо!

&НаСервере
Функция ИмпортИзExcelНаСервере()
    
    Если ПустаяСтрока(ИмяФайла) Тогда
        Сообщить("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
    КонецЕсли;
    
    Попытка
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    
    Попытка
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    
    Попытка
        Excel = ExcelФайл.Sheets(1);
        xlCellTypeLastCell = 11;
        ExcelПоследняяСтрока = Excel.Cells.SpecialCells(xlCellTypeLastCell).Row;
        ExcelПоследняяКолонка = Excel.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        ExcelПриложение.Quit();
    КонецПопытки;
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Очистить();    
    ТЗ.Колонки.Добавить("Код");
    ТЗ.Колонки.Добавить("Фамилия");
    ТЗ.Колонки.Добавить("Имя");
    ТЗ.Колонки.Добавить("Страна");
    ТЗ.Колонки.Добавить("Вопрос_1");
    ТЗ.Колонки.Добавить("Он");
    ТЗ.Колонки.Добавить("Оно");
    ТЗ.Колонки.Добавить("Она");
    ТЗ.Колонки.Добавить("Другое");
        
    Для Строка = 3 По ExcelПоследняяСтрока Цикл
        
        Стр = ТЗ.Добавить();
        
        Стр.Код       = СокрЛП(Excel.Cells(Строка,1).Value);
        Стр.Фамилия   = СокрЛП(Excel.Cells(Строка,2).Value);
        Стр.Имя       = СокрЛП(Excel.Cells(Строка,3).Value);
        Стр.Страна    = СокрЛП(Excel.Cells(Строка,4).Value);        
        Стр.Вопрос_1  = СокрЛП(Excel.Cells(Строка,5).Value);                  
        Стр.Он        = СокрЛП(Excel.Cells(Строка,6).Value);    
        Стр.Оно       = СокрЛП(Excel.Cells(Строка,7).Value);    
        Стр.Она       = СокрЛП(Excel.Cells(Строка,8).Value);       
        Стр.Другое    = СокрЛП(Excel.Cells(Строка,9).Value);
        
    КонецЦикла;
    
    ExcelПриложение.Quit();
            
    Для Каждого  СтрокаТаблицы Из ТЗ Цикл
       НаборДанных = РегистрыСведений.Проба.СоздатьНаборЗаписей();    
       Проба = НаборДанных.Добавить();
       Проба.Код = СтрокаТаблицы.Код;
       Проба.Фамилия = СтрокаТаблицы.Фамилия;
      //...

       НаборДанных.Записать();   
    КонецЕсли;   
    
КонецФункции
 
 
   mexanik_96
 
1 - 01.05.18 - 18:02
НаборДанных.Записать(Ложь);
   Cyberhawk
 
2 - 01.05.18 - 18:02
Измерений что ли нет у регистра сведений?
   mexanik_96
 
3 - 01.05.18 - 18:03
без измерений вроде нельзя рс создать, так что хоть одно то есть
   Cyberhawk
 
4 - 01.05.18 - 18:03
(3) Ошибаешься
   mexanik_96
 
5 - 01.05.18 - 18:04
сорян, с ресурсами перепутал
   Cyberhawk
 
6 - 01.05.18 - 18:04
Если у регистра измерений нет, то добавь одно, пиши в него строку-идентификатор операции загрузки, УИД генери каждый раз после генерации ТЗ
   skaylanz23
 
7 - 01.05.18 - 18:05
Есть два измерения: партнер и мероприятие.
   Cyberhawk
 
8 - 01.05.18 - 18:05
К самим данным в регистре даже стеснябсь спрашивать, что там...

    ТЗ.Колонки.Добавить("Он");
    ТЗ.Колонки.Добавить("Оно");
    ТЗ.Колонки.Добавить("Она");
    ТЗ.Колонки.Добавить("Другое");
   Cyberhawk
 
9 - 01.05.18 - 18:05
(7) Ну так по комбинации период+партнер+мероприятие не может быть больше одной записи в регистре, вот и думай
   mexanik_96
 
10 - 01.05.18 - 18:07
(8) а где они?
 
 Рекламное место пустует
   mistеr
 
11 - 01.05.18 - 19:45
(0) Все записи 1С не умеет. Точнее умеет, но нам не разрешает. Чтобы не напортили чего.

Так что записывай по одной строке в цикле.
   Cyberhawk
 
12 - 01.05.18 - 22:35
(10) Хз, это у него в коде

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует