|
Импорт данных из Excel в Регистр сведений (переодический) | ☑ | ||
---|---|---|---|---|
0
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(); Для Каждого СтрокаТаблицы Из ТЗ Цикл НаборДанных = РегистрыСведений.Проба.СоздатьНаборЗаписей(); Проба = НаборДанных.Добавить(); Проба.Код = СтрокаТаблицы.Код; Проба.Фамилия = СтрокаТаблицы.Фамилия; //... НаборДанных.Записать(); КонецЕсли; КонецФункции |
|||
1
mexanik_96
01.05.18
✎
18:02
|
НаборДанных.Записать(Ложь);
|
|||
2
Cyberhawk
01.05.18
✎
18:02
|
Измерений что ли нет у регистра сведений?
|
|||
3
mexanik_96
01.05.18
✎
18:03
|
без измерений вроде нельзя рс создать, так что хоть одно то есть
|
|||
4
Cyberhawk
01.05.18
✎
18:03
|
(3) Ошибаешься
|
|||
5
mexanik_96
01.05.18
✎
18:04
|
сорян, с ресурсами перепутал
|
|||
6
Cyberhawk
01.05.18
✎
18:04
|
Если у регистра измерений нет, то добавь одно, пиши в него строку-идентификатор операции загрузки, УИД генери каждый раз после генерации ТЗ
|
|||
7
skaylanz23
01.05.18
✎
18:05
|
Есть два измерения: партнер и мероприятие.
|
|||
8
Cyberhawk
01.05.18
✎
18:05
|
К самим данным в регистре даже стеснябсь спрашивать, что там...
ТЗ.Колонки.Добавить("Он"); ТЗ.Колонки.Добавить("Оно"); ТЗ.Колонки.Добавить("Она"); ТЗ.Колонки.Добавить("Другое"); |
|||
9
Cyberhawk
01.05.18
✎
18:05
|
(7) Ну так по комбинации период+партнер+мероприятие не может быть больше одной записи в регистре, вот и думай
|
|||
10
mexanik_96
01.05.18
✎
18:07
|
(8) а где они?
|
|||
11
mistеr
01.05.18
✎
19:45
|
(0) Все записи 1С не умеет. Точнее умеет, но нам не разрешает. Чтобы не напортили чего.
Так что записывай по одной строке в цикле. |
|||
12
Cyberhawk
01.05.18
✎
22:35
|
(10) Хз, это у него в коде
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |