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,ИмяФайла);
КонецЕсли;
Так не получается.
|
|