Имя: Пароль:
1C
1С v8
При выгрузке из 1с в дбф уменьшить разрядность числа после запятой
0 sergqwert
 
08.10.19
00:24
Как при выгрузке из 1с в дбф уменьшить разрядность числа после запятой:

Если Не ЗначениеЗаполнено(Дата) Тогда
        Дата = ТекущаяДата();
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА ЗакупкиОбороты.НДСОборот = 0
    |            ТОГДА 0
    |        ИНАЧЕ 20
    |    КОНЕЦ КАК СтавкаНДС,
    |    ЗначенияСвойствОбъектов.Значение КАК Код,
    |    СУММА((ЗакупкиОбороты.СтоимостьОборот + ЗакупкиОбороты.НДСОборот) / ЗакупкиОбороты.КоличествоОборот) КАК Цена,
    |    СУММА(ВЫБОР
    |            КОГДА ЗакупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |                ТОГДА 1
    |            ИНАЧЕ -1
    |        КОНЕЦ * ЗакупкиОбороты.КоличествоОборот) КАК Количество,
    |    ЗакупкиОбороты.Регистратор.Номер КАК НомерДок,
    |    ЗакупкиОбороты.Регистратор.Дата КАК Дата,
    |    2 КАК Статус
    |ИЗ
    |    РегистрНакопления.Закупки.Обороты(&НачалоПериода, &Дата, Регистратор, Номенклатура В (&МасСплат)) КАК ЗакупкиОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |        ПО ЗакупкиОбороты.Номенклатура = ЗначенияСвойствОбъектов.Объект
    |            И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗакупкиОбороты.Регистратор.Дата,
    |    ЗакупкиОбороты.Регистратор.Номер,
    |    ВЫБОР
    |        КОГДА ЗакупкиОбороты.НДСОборот = 0
    |            ТОГДА 0
    |        ИНАЧЕ 20
    |    КОНЕЦ,
    |    ЗначенияСвойствОбъектов.Значение"
    ;
    
    Запрос.УстановитьПараметр("Дата",КонецДня(Дата));
    Если Не ЗначениеЗаполнено(НачалоПериода) Тогда
        НачалоПериода = Дата-3600*24*45; // 45 днейй
    КонецЕсли;
    Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);
    Контрагент = Справочники.Контрагенты.НайтиПоКоду("000004764");// СЛ Дистрибьюшн  ТОВ
    Запрос.УстановитьПараметр("Контрагент",Контрагент);
    Запрос.УстановитьПараметр("Контрагент2",Справочники.Контрагенты.НайтиПоКоду("000003826"));
    ВнешнийКод = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00117    "); // артикул внешний
    Запрос.УстановитьПараметр("Свойство",ВнешнийКод);
    МасСплат = ПолучитьМасСплат();//массив номенклатуры сплат. думаю, что так будет быстрее, чем связывать в запросе
    Запрос.УстановитьПараметр("МасСплат",МасСплат);
    
    
    КВФ= КаталогВременныхФайлов();
    Макет = ПолучитьМакет("SALIND");
    ИмяФайла = "SALIND.dbf";
    Путь1 = КВФ+ИмяФайла;
    Макет.Записать(Путь1);
    ДБФ = Новый XBase;
    ДБФ.ОткрытьФайл(Путь1,,Ложь);
    ДБФ.ОчиститьФайл();  
                        
    Рез = Запрос.Выполнить();
    Выборка = Рез.Выбрать();
    ДатаВыгрузки = Формат(ТекущаяДата(),"ДФ='yyyyMMdd ЧЧ:ММ'");
    Пока Выборка.Следующий() Цикл
        ДБФ.Добавить();
        ДБФ.VAT = Выборка.СтавкаНДС; //
        ДБФ.Code = Выборка.Код; //
        ДБФ.Price = СокрЛП(Формат(Выборка.Цена),"ЧДЦ =2; ЧГ =0")); //
        ДБФ.Qty = СокрЛП(Формат(Выборка.Количество),"ЧЦ=15; ЧДЦ=0; ЧГ =0")); //
        ДБФ.Invoice_No = Выборка.НомерДок; //
        ДБФ.Lot_id = Выборка.НомерДок; // номер партии      
        ДБФ.DTLM =  ДатаВыгрузки;
        ДБФ.Status =  Выборка.Статус;
        
        ДБФ.Записать();
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    
     Если ЗначениеЗаполнено(Путь) Тогда
         ПереместитьФайл(Путь1,Путь+"\"+ИмяФайла);
         ЗагрузитьНаФТП(Путь+"\"+ИмяФайла,ИмяФайла);
     Иначе
         ЗагрузитьНаФТП(Путь1,ИмяФайла);
     КонецЕсли;

Так не получается.
1 Chameleon1980
 
08.10.19
02:43
Где твоя попытка?
Решение:
создать поля нужного типа