|
Загрузка из эксель. 🠗 (Волшебник 16.07.2018 16:10) | ☑ | ||
---|---|---|---|---|
0
progaoff
16.07.18
✎
14:30
|
Добрый день, пытаюсь загрузить из экселя список документов, получаю ошибку поле номер не уникально.
ксель = Новый COMОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ИмяФайла); Лист = Книга.WorkSheets(1); ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; МассивДанных = Новый Массив; ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Для Сч = 2 по ВсегоСтрок Цикл //Создаем структуру для текущей строки Строка = Новый Структура; Для Сч2 = 1 по ВсегоКолонок Цикл Строка.Вставить("Колонка"+Строка(Сч2),Лист.Cells(Сч,Сч2).Value); КонецЦикла; МассивДанных.Добавить(Строка); КонецЦикла; Номер = СокрЛП(Лист.Cells(Сч2, 2).Value); ДатаДок = СокрЛП(Лист.Cells(Сч2, 3).Value); Сумма = СокрЛП(Лист.Cells(Сч2, 4).Value); Организация = СокрЛП(Лист.Cells(Сч2, 9).Value); КассаККМ = СокрЛП(Лист.Cells(Сч2, 5).Value); RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Истина; //Игнорировать регистр RegExp.Global = Истина; //Поиск всех вхождений шаблона RegExp.MultiLine = Истина; //Многострочный режим RegExp.Pattern = "[^0-9]"; // отбор только чисел ДатаДокументаИсправленная = RegExp.Replace(ДатаДок,""); Год = Прав(ДатаДокументаИсправленная,4); Месяц = Сред(ДатаДокументаИсправленная,3,2); День = Лев(ДатаДокументаИсправленная,2); ДатаВерная = Год+Месяц+День; ДатаДокумента = Дата(ДатаВерная); Для Каждого Элемент Из МассивДанных Цикл ПКО=Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); ПКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ; ПКО.Номер = Элемент.Колонка2; ПКО.Дата = ДатаДокумента; ПКО.Касса = Справочники.Кассы.НайтиПоНаименованию(КассаККМ); ПКО.КассаККМ = Справочники.КассыККМ.НайтиПоНаименованию(КассаККМ); ПКО.Организация = Справочники.Организации.НайтиПоНаименованию(Организация); ПКО.СуммаДокумента = Сумма; ПКО.Записать(); КонецЦикла; Вот код, не пойму что не правильно, ведь должен обходить все элементы. |
|||
1
Волшебник
16.07.18
✎
14:31
|
Такой номер уже есть в базе.
|
|||
2
Волшебник
16.07.18
✎
14:32
|
или вызывай ОбновитьНумерациюОбъектов()
|
|||
3
Timon1405
16.07.18
✎
14:33
|
(2) СП: Данный метод разрешено вызывать только администратору системы.
|
|||
4
progaoff
16.07.18
✎
14:37
|
(1) такое впечатление, что пытается записать один и тот же элемент.
|
|||
5
progaoff
16.07.18
✎
14:38
|
(1) текст ошибки понятен, только документов нет ни единого
|
|||
6
1Сергей
16.07.18
✎
14:41
|
(5) смотри дубли в файле
|
|||
7
progaoff
16.07.18
✎
14:42
|
(6) нет там дублей, проверил уже
|
|||
8
1Сергей
16.07.18
✎
14:44
|
(7) тогда пользуйся отладкой
|
|||
9
butterbean
16.07.18
✎
14:47
|
(0) зачем эта возня с COMОбъект? Давно уже ТабличныйДокумент умеет открывать и читать Excel, даже на разных листах
|
|||
10
Timon1405
16.07.18
✎
14:51
|
Дикая дичь. код явно копипаста откуда-от
//ДатаВерная = Год+Месяц+День; - полный бред ДатаДокумента = Дата(Год,День,Месяц); вызывать регэксп в цикле тоже не нужно |
|||
11
progaoff
16.07.18
✎
15:00
|
(10) Он не в цикле как раз.
|
|||
12
Ювелир
16.07.18
✎
15:07
|
(0) и хде у тебя " Для Сч = 2 по ВсегоСтрок Цикл" Закрвается этот цикл?
|
|||
13
Ювелир
16.07.18
✎
15:08
|
(0) а номер и прочие реквизиты без цикла и один раз рассчитываются? Ну круто, че.
|
|||
14
Ювелир
16.07.18
✎
15:16
|
(0) а нет, тут чудесатее номер не номер,
" Строка = Новый Структура; Для Сч2 = 1 по ВсегоКолонок Цикл Строка.Вставить("Колонка"+Строка(Сч2),Лист.Cells(Сч,Сч2).Value); КонецЦикла; " д.б. Строка.Вставить("Колонка"+Сч2,Лист.Cells(Сч,Сч2).Value); А то у тебя нет колонка2 |
|||
15
Ювелир
16.07.18
✎
15:20
|
(0) фраза в цикле не правильная, "Колонка" + Сч2, а не "Колонка" + Строка(сч2)
|
|||
16
progaoff
16.07.18
✎
15:37
|
(13) Да уже допер)
|
|||
17
Ювелир
16.07.18
✎
15:51
|
Мои поздравления ! ;)))
|
|||
18
progaoff
16.07.18
✎
16:08
|
(17) Спасибо))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |