Имя: Пароль:
1C
1С v8
при выгрузке из 1с в Excel 2013 в ячейке вместо 1300 - 1я300
,
0 Печкин
 
03.12.13
12:19
Добрый день! Выгружаю данные и формирую файл .csv. По отладчику количество 1300 а в выгрузку попадает 1я300. Если 300 то 300. Т.е. если больше 3-х цифр excel добавляет свои знаки чтоли? Никто не сталкивался с этим?
1 shuhard
 
03.12.13
12:21
(0) все сталкивались
2 Fragster
 
модератор
03.12.13
12:22
я думаю, что дело в том, как автор "формирует файл .csv". Ведь не через ADO же...
3 Печкин
 
03.12.13
12:22
И как решался вопрос?
4 Печкин
 
03.12.13
12:22
могу код скинуть
5 ДенисЧ
 
03.12.13
12:23
(3) А формат применить?
И вообще - глазками глянуть в этот файлик?
6 Печкин
 
03.12.13
12:24
фрагмент кода:
Для каждого СтрТоваров Из ДокСтрока.ДокуметОтгрузки.Товары Цикл
            
            КодТовара     = ПеревестиКирилицуВЛатиницу(СокрЛП(СтрТоваров.Номенклатура.Код));
            КоличествоМест = СтрТоваров.КоличествоМест;
            Коэффициент       = СтрТоваров.ЕдиницаИзмеренияМест.Коэффициент;
            ДатаИзготовления=Формат(СтрТоваров.СерияНоменклатуры.ДатаИзготовления,"ДФ=yyyyMMdd");
            Если СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "блок" Тогда
                Если Цел(КоличествоМест) = КоличествоМест Тогда
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоМест+";"+"Box"+";"+";"+Символы.ПС;  //";"+";" добавил
                ИначеЕсли Цел(КоличествоМест) = 0 Тогда
                    КоличествоШт  = Окр(КоличествоМест * Коэффициент);
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоШт+";"+"PC"+";"+";"+Символы.ПС;
                Иначе    
                    КоличествоМестЦел = Цел(СтрТоваров.КоличествоМест);
                    КоличествоШт  = Окр((КоличествоМест - КоличествоМестЦел) * Коэффициент);                  
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоМестЦел+";"+"Box"+";"+";"+Символы.ПС;
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоШт+";"+"PC"+";"+";"+Символы.ПС;
                КонецЕсли;
            ИначеЕсли СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "упак" или СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "короб" Тогда
                Если Цел(КоличествоМест) = КоличествоМест Тогда
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоМест+";"+"UPAK"+";"+";"+ДатаИзготовления+Символы.ПС;
                ИначеЕсли Цел(КоличествоМест) = 0 Тогда
                    КоличествоШт  = Окр(КоличествоМест * Коэффициент);
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоШт+";"+"PC"+";"+";"+Символы.ПС;
                Иначе
                    КоличествоМестЦел = Цел(СтрТоваров.КоличествоМест);
                    КоличествоШт  = Окр((КоличествоМест - КоличествоМестЦел) * Коэффициент);            
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоМестЦел+";"+"UPAK"+";"+";"+Символы.ПС;
                    СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоШт+";"+"PC"+";"+";"+Символы.ПС;
                КонецЕсли;    
            ИначеЕсли СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "шт" Тогда
                КоличествоШт  = Окр(КоличествоМест * Коэффициент);
                СтрокаСТоварами = СтрокаСТоварами+"I;"+НомерДок+";"+КодТовара+";"+КоличествоШт+";"+"PC"+";"+";"+Символы.ПС;
            Иначе
                Сообщить("Строка "+СтрТоваров.НомерСтроки+" док: "+ДокументыОтгрузки+" НЕ ВЫГРУЖЕНА");
            КонецЕсли;
        КонецЦикла;
        СтрокаЗаголовока = "H;"+КодФирмы+";"+КодКлиента+";"+НаименованиеКонтрагента+";"+НомерДок+";"+ДатаОтгрузки;
        
        ИмяФайла = ФайлВыгрузки+"\order_in"+СокрЛП(НомерДок)+".CSV";
        Если Склад = Справочники.Склады.НайтиПоКоду("000000045") Тогда
            Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.Системная);
        Иначе
            Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.OEM);
        КонецЕсли;        
        Текст.ЗаписатьСтроку(СтрокаЗаголовока+Символы.ПС+СтрокаСТоварами);
        Текст.Закрыть();
    КонецЦикла;
7 shuhard
 
03.12.13
12:25
(3) форматом, ясен пень
8 Печкин
 
03.12.13
12:27
вот так получается:
        
I    E000024967    C0005518    673    UPAK    
I    E000024967    C0005519    674    UPAK    
I    E000024967    C0005517    1я300    UPAK
9 Мимохожий Однако
 
03.12.13
12:28
традиционно: Отладчиком смотрел?
10 Печкин
 
03.12.13
12:29
(9) Смотрел, там 1300
11 ДенисЧ
 
03.12.13
12:30
(10) Черепашка.
12 goleaff2006
 
03.12.13
12:39
Адназначно формат и укажи в нем группировку.
13 Печкин
 
03.12.13
12:49
Всем спасибо. Формат. Получилось.
14 Fragster
 
модератор
03.12.13
12:55
НаименованиеКонтрагента = "Привет;Мир" добавит веселья...
15 Fragster
 
модератор
03.12.13
12:56
Ну и вот это:

        Если Склад = Справочники.Склады.НайтиПоКоду("000000045") Тогда
            Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.Системная);
        Иначе
            Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.OEM);
        КонецЕсли;

я бы заменил на вкряживание ДопСвойства со значениями "Системная" и "OEM" и знчаением по умолчанию
16 Fragster
 
модератор
03.12.13
12:58
с всякими  СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "упак" или СокрЛП(СтрТоваров.ЕдиницаИзмеренияМест.Наименование) = "короб"
- пока непонятно, но наверное лучше хардкоденые значения вывести в соответствие в одно место, чем размазывать по ЕСЛИ
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.