|
загрузка данных из эксель в справочник | ☑ | ||
---|---|---|---|---|
0
fdgd98
12.03.15
✎
14:24
|
всем привет! пытаюсь написать обработку которая будет записывать из эксель в документ и справочник, столкнулся с проблемой..
есть документ "приходная-накладная" у нее есть тч с "наименование" с типом справочникссылка на справочник "номенклатура". Записываю данные из ячейки в справочник "номенклатура" если их там нет....записываем(записывается хорошо). потом пытаюсь записать данные из ячейки в тч документа...не записывает....в тч остаюстся вместо содержимых ячеек пустые поля...подскажите куда копать? Ex = Новый COMObject("Excel.Application"); Ex.Workbooks.Open(Объект.ИмяФайла); Ex.Visible = 1; ТекЛист=Ex.WorkSheets(1); Для Ячейка = 12 по 300 цикл Если НЕ ТекЛист.Cells(Ячейка,1).Value = Неопределено тогда Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию((Формат((ТекЛист.Cells(Ячейка,1).Value),"ЧГ=0")), ИСТИНА); Если Номенклатура.Пустая() или Номенклатура.ПометкаУдаления = Истина тогда Номенклатура = Справочники.Номенклатура.СоздатьЭлемент(); Номенклатура.Наименование = Формат((ТекЛист.Cells(Ячейка,1).Value),"ЧГ=0"); Номенклатура.Родитель =Справочники.Номенклатура.НайтиПоНаименованию(объект.СправочникНоменклатура); Номенклатура.Записать(); ДокументПриходная = Объект.ТабилчнаяЧасть.ПолучитьОбъект(); НовСтрока = ДокументПриходная.Приходная.Добавить(); НовСтрока.Наименование = Номенклатура; ДокументПриходная.Записать(); иначе конецесли; конецесли; конеццикла; |
|||
1
fisher
12.03.15
✎
14:26
|
НовСтрока.Наименование = Номенклатура.Ссылка;
|
|||
2
Garykom
гуру
12.03.15
✎
14:27
|
(0) когда то писал для 7-ки? и вот это что то помню...что то слышал пытаемся в 8-ку?
|
|||
3
Управление торговлей
12.03.15
✎
14:28
|
"ТабилчнаяЧасть"
как у тебя вообще работает что-то? |
|||
4
Garykom
гуру
12.03.15
✎
14:29
|
(1) не прокатит там грамматические ошибки в коде
не считая программных и алгоритмических... ЗЫ ищем номенклатуру по наименованию затем если нету или пометка удаления создаем новую (с тем же наименованием если пометка удаления?) а если нашли и пометки нету ничего писать не надо да? |
|||
5
fisher
12.03.15
✎
14:30
|
Всё когда-нибудь происходит впервые. И редко сразу хорошо :)
Читать данные из Excel, кстати, в разы проще и быстрее через ADO. Если xlsx то вообще напрямую парсить можно. Будет кроссплатформенно. |
|||
6
gorakh
12.03.15
✎
14:33
|
(0) Обратись на инфостарт, там таких обработок куча на любые вкусы.
|
|||
7
fdgd98
12.03.15
✎
14:35
|
(6) сам хочу написать
|
|||
8
fdgd98
12.03.15
✎
16:13
|
написал обработку, но проблема второй столбец из эксель записывается в документ снизу от первого....почему так ?
на скрине понятнее https://cloud.mail.ru/public/b555b32bc4be/парсер.jpg |
|||
9
fdgd98
12.03.15
✎
16:13
|
Функция Получаем()
ДокументПриходная = Объект.ТабличнаяЧасть.ПолучитьОбъект(); Ex = Новый COMObject("Excel.Application"); Ex.Workbooks.Open(Объект.ИмяФайла); Ex.Visible = 1; ТекЛист=Ex.WorkSheets(1); Для Ячейка = 11 по 5000 цикл Если НЕ ТекЛист.Cells(Ячейка,1).Value = Неопределено тогда Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию((Формат((ТекЛист.Cells(Ячейка,1).Value),"ЧГ=0")), ИСТИНА); Если Номенклатура.Пустая() или Номенклатура.ПометкаУдаления = Истина тогда НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент(); НоменклатураОбъект .Наименование = Формат((ТекЛист.Cells(Ячейка,1).Value),"ЧГ=0"); НоменклатураОбъект .Родитель =Справочники.Номенклатура.НайтиПоНаименованию(объект.СправочникНоменклатура); НоменклатураОбъект .Записать(); //ДокументПриходная = Объект.ТабличнаяЧасть.ПолучитьОбъект(); НовСтрока = ДокументПриходная.Приходная.Добавить(); НовСтрока.Наименование = НоменклатураОбъект.Ссылка; //ДокументПриходная.Записать(); иначе НоменклатураОбъект1 = Номенклатура.Ссылка.ПолучитьОбъект(); //ДокументПриходная = Объект.ТабличнаяЧасть.ПолучитьОбъект(); НовСтрока = ДокументПриходная.Приходная.Добавить(); НовСтрока.Наименование = НоменклатураОбъект1.Ссылка; //ДокументПриходная.Записать(); конецесли; //ДокументПриходная.Записать(); конецесли; конеццикла; Для Ячейка = 11 по 5000 цикл Если НЕ ТекЛист.Cells(Ячейка,8).Value = Неопределено тогда НовСтрока = ДокументПриходная.Приходная.Добавить(); НовСтрока.Количество = ТекЛист.Cells(Ячейка,8).Value; //ДокументПриходная.Записать(); конецесли; конеццикла; ДокументПриходная.Записать(); возврат истина; КонецФункции |
|||
10
Ligor
12.03.15
✎
16:15
|
Объедени все в 1 цикл
|
|||
11
fdgd98
12.03.15
✎
16:24
|
(10) щас попробую
|
|||
12
fdgd98
12.03.15
✎
16:31
|
(10) объединил щас даже количество не записывается...
|
|||
13
anatoly
12.03.15
✎
16:33
|
(1) номенклатура у него итак ссылка.
а вот какого типа наименование в строке - это вопрос... |
|||
14
fdgd98
12.03.15
✎
16:35
|
(13) справочникссылка
|
|||
15
fdgd98
12.03.15
✎
16:38
|
блин
два раза потому что строку в тч добавлял для разных ячеек |
|||
16
fdgd98
12.03.15
✎
16:49
|
проблема решена
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |