Имя: Пароль:
1C
1С v8
Оприходование товара загрузка из xls
0 1C2SS
 
29.04.13
15:38
1C 8.2 Розница 2.0
Пытаюсь загрузить остатки товара из xls посредством оприходования.
Вот что есть:
   Попытка
       Эксель = новый COMОбъект("Excel.Application");
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат;
   КонецПопытки;
                                                               
   Книга = Эксель.WorkBooks.Open("c:\3.xls");  
   Лист = Книга.WorkSheets(1);  
   
       до = Документы.ОприходованиеТоваров.НайтиПоНомеру("000000001",'20130429').ПолучитьОбъект();
   тч = до.Товары;
   сн = Справочники.Номенклатура;
   Для ф = 1 по 500 Цикл
       н = тч.Добавить();
               н.Номенклатура = сн.НайтиПоРеквизиту("Артикул",СокрЛП(Лист.Cells(ф, 2).Value));
       н.Цена = Число(СокрЛП(Лист.Cells(ф, 3).Value));
       н.Количество = Число(СокрЛП(Лист.Cells(ф, 4).Value));
       н.Сумма = н.Количество*н.Цена;
   КонецЦикла;        
   до.Записать(РежимЗаписиДокумента.Проведение);
Все нормально кроме того, что Количество не сохраняется. В отладчике видно что оно записывается. В чем может быть косяк ?
1 Bumer
 
29.04.13
15:43
Попробуй добавить...
до.КоличествоУпаковок = Число(СокрЛП(Лист.Cells(ф, 4).Value));
2 Maniac
 
29.04.13
15:43
формат количества не тот.
Например запятая точка.
3 Bumer
 
29.04.13
15:43
н.КоличествоУпаковок = Число(СокрЛП(Лист.Cells(ф, 4).Value));
4 AaNnDdRrEeYy
 
29.04.13
15:44
Ты количество на форме просто не видишь? или в таблице БД пусто?
5 Maniac
 
29.04.13
15:44
еще 1С может не считывать количество с триадами. такое тоже бывает.
6 Maniac
 
29.04.13
15:45
(3) это значения не имеет. тк когда назначается в тип число - автоматичсеки форматирование происходит
7 1C2SS
 
29.04.13
15:46
(4) Только на форме не видно. В БД сохраняется.
8 Maniac
 
29.04.13
15:46
в числе не должно быть дефисов (бывает)
И 1С неправильно также форматирует если есть запятая в триаде и точка в дроби.
9 Масянька
 
29.04.13
15:47
Я писала для 7.7

// количество
мКолВо    = Лист.Cells(НомерСтроки, 4).Value;
       
// сумма
мСумма    = Лист.Cells(НомерСтроки, 5).Value;


В Excel - тип ячейки с кол-вом - "Общий".
Экспериментировала - долго :) (именно с кол-вом).
Сейчас - работает :))
10 Ёпрст
 
29.04.13
15:48
(0) единица измерения мест не заполнена
11 1C2SS
 
29.04.13
15:48
Там везде шт. в ячейках натуральные числа без точек и запятых.
12 Масянька
 
29.04.13
15:50
Как вариант - считай и выведи значение т тип значения ячейки с кол-вом.
13 Мыш
 
29.04.13
15:51
Ну что за архаизм. КомСейфАррэй наше всё )
14 1C2SS
 
29.04.13
15:52
Помогло вот это:
н.КоличествоУпаковок = Число(СокрЛП(Лист.Cells(ф, 4).Value));
15 Масянька
 
29.04.13
15:52
Кстати, если там (в кол-ве) число, зачем преобразуешь?
16 1C2SS
 
29.04.13
15:52
(13) что это ?
17 1C2SS
 
29.04.13
15:52
(15) для надежности )
18 AaNnDdRrEeYy
 
29.04.13
15:53
(7) Значит колонка "Количество" не просто выводится а рассчитывается, на что ссылается элемент формы?
19 Мыш
 
29.04.13
15:58
(16) Ускоритель чтения и записи )

Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.Workbooks.Open(ИмяФайла);
Лист = Книга.Sheets(ИмяИлиНомерЛиста);
// Вот он, ComSafeArray
МассивКом = Лист.Range("A1", "S500").Value;
// Закроем Excel
Книга.Close();
Эксель.Quit();
// Далее работаем с массивом, можно в цикле
НекотороеЗначение = МассивКом.GetValue(1, 1);
// Не забываем округлять числа
НекотороеЗначение = Окр(НекотороеЗначение, 2);
20 Bumer
 
29.04.13
20:13
(6) Да не про это я... там надо...
И упаковки и количество... логика программы такая...
21 Aprobator
 
29.04.13
20:28
(7) значит на форму оно не выводится. Смотри свойства формы.
22 Aprobator
 
29.04.13
20:29
А именно колонки с заголовком шапки Количество.