Имя: Пароль:
1C
1С v8
v8: Как загрузить с Excel поля с нулями?
0 Artyom ZK
 
12.04.12
10:10
День добрый!

В екселе есть столбец с номером, присутствуют нули - "0000111", при загрузке в 1ску, нули отбрасываются и попадают в обработку уже как "111", Подскажите пожалуйста каким образом это исправить?

Спасибо.
1 butterbean
 
12.04.12
10:11
код покажи
2 Artyom ZK
 
12.04.12
10:13
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Данные.Очистить();
   Попытка
       Ексель=Новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Неудалось открыть Excel, возможно он не установлен на компьюторе"
       + Символы.ПС + ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   
   ЕксельКники = Ексель.WorkBooks;
   
   Попытка
       ЗагружаемыйФайл = ЕксельКники.Open(ПутьКФайлу);
   Исключение
       Сообщить("Открываемый файл не найден" + Символы.ПС + ОписаниеОшибки());
       Ексель.Application.Quit();
       Возврат;
   КонецПопытки;
   
   Лист = ЗагружаемыйФайл.Sheets(НомерЛиста);
   
   
   Для ИндексСтроки=6 по 3000 Цикл
       
       Сообщить("Строка номер "+ Строка(ИндексСтроки));
       
       Контрагент = Лист.Cells(ИндексСтроки, 5);
       
       Если ЗначениеЗаполнено(Контрагент.Value) Тогда
       
           Номер = Лист.Cells(ИндексСтроки, 1);
           Дата = Лист.Cells(ИндексСтроки, 3);
           Контрагент = Лист.Cells(ИндексСтроки, 5);
           КонтрагентДата = Лист.Cells(ИндексСтроки, 9);
           НомерДоговора = Лист.Cells(ИндексСтроки, 8);
           РНН = Лист.Cells(ИндексСтроки, 7);
           Услуга = Лист.Cells(ИндексСтроки, 10);
           Количество = Лист.Cells(ИндексСтроки, 11);
           Всего = Лист.Cells(ИндексСтроки, 12);
           Сумма = Лист.Cells(ИндексСтроки, 13);
           СуммаНДС = Лист.Cells(ИндексСтроки, 14);
                       
           стр=Данные.Добавить();
           
           стр.РНН=СтрЗаменить(РНН.Value,Символы.НПП,"");
           
           Если СтрДлина(стр.РНН)<12 Тогда
               стр.РНН="0"+стр.РНН;
           КонецЕсли;

           
           спрКонт=Справочники.Контрагенты.НайтиПоРеквизиту("РНН", стр.РНН);
             
           если не ЗначениеЗаполнено(спрКонт) тогда
               
               спрКонт=Справочники.Контрагенты.СоздатьЭлемент();
               спрКонт.Наименование=Контрагент.Value;
               спрКонт.РНН=стр.РНН;
               спрКонт.Записать();        
           
               
           КонецЕсли;
           
           стр.Контрагент=спрКонт.Ссылка;        
           стр.Услуга=Справочники.Номенклатура.НайтиПоНаименованию(Услуга.Value);
           стр.Количество=Количество.Value;
           стр.дата=дата.value;
                 
           стр.ДатаДоговора=Дата(Сред(КонтрагентДата.Value,7,4)+Сред(КонтрагентДата.Value,4,2)+Лев(КонтрагентДата.Value,2));
           стр.НомерДоговора=НомерДоговора.Value;
           стр.Сумма=Сумма.value;
           стр.СуммаНДС=СуммаНДС.Value;
           стр.Всего=Всего.value;
           стр.Номер=Номер.value;
           
           
           
       КонецЕсли;
       
   КонецЦикла;
   
   ЗагружаемыйФайл.Application.Quit();
КонецПроцедуры
3 Zmich
 
12.04.12
10:13
(0). Используй не .Value, а .Text
4 dk
 
12.04.12
10:13
.Value заменить на .Text
мульен раз тут обсуждалось
5 Artyom ZK
 
12.04.12
10:14
ок спасибо.ща попробую.
6 Artyom ZK
 
12.04.12
10:17
Все работает!!! Спасибо еще раз!
7 Андрюха
 
12.04.12
10:22
Иногда бывают формульные косяки в Excel. Не забывайте делать проверочку:
СтрЗнач = ?(Ячейка.Text = "#ЗНАЧ!", "0", Ячейка.Text);
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший