Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 09:18

Помогите найти ошибку! Выгрузка в DBF.

Автор andryscha92, 03 окт 2013, 15:29

0 Пользователей и 1 гость просматривают эту тему.

andryscha92

Процедура Сформировать() 
Если ВыбПост.Выбран()=0 Тогда
Сообщить("Не выбран поставщик");
Возврат;
КонецЕсли;      
Если ВыбФирма.Выбран()=0 Тогда
Сообщить("Не выбрано юрлицо дистрибьютора");
Возврат;
КонецЕсли;      

Ном=Найти(ВыбФирма.ИНН,"\");
Если Ном=0 Тогда
Ном=Найти(ВыбФирма.ИНН,"/");
КонецЕсли;        
Если Ном<>0 Тогда
ИНН=Лев(ВыбФирма.ИНН, 10);
КПП=Прав(ВыбФирма.ИНН, 9);
КонецЕсли;

// *****************************************************

ДБФ=СоздатьОбъект("XBase");
дбф.ДобавитьПоле("A",2,20,);
дбф.ДобавитьПоле("B",2,20,);
дбф.ДобавитьПоле("C",3,,); 
дбф.ДобавитьПоле("D",2,50,); 
дбф.ДобавитьПоле("E",2,50,);
дбф.ДобавитьПоле("F",2,250,);
дбф.ДобавитьПоле("G",2,50,);   
дбф.ДобавитьПоле("H",2,250,); 
дбф.ДобавитьПоле("I",1,15,0); 
дбф.ДобавитьПоле("J",1,15,2); 
дбф.ДобавитьПоле("K",1,15,2);

если фс.СуществуетФайл(Сокрлп(Путь)+"\narzan.dbf")<>0 тогда
фс.УдалитьФайл(Сокрлп(Путь)+"\narzan.dbf");
конецесли;
ДБФ.СоздатьФайл(Сокрлп(Путь)+"\narzan.dbf",);   

Запрос=СоздатьОбъект("Запрос");
Текст= "//{{ЗАПРОС(Продажи)
|Период с ВыбНачПериода по ВыбКонПериода;
|Док = Документ.РасходнаяНакладная.ТекущийДокумент;
|Товар = Документ.РасходнаяНакладная.Товар;
|Количество = Документ.РасходнаяНакладная.Количество;
|Сумма = Документ.РасходнаяНакладная.Сумма;
|Функция КолП1 = Сумма(Количество);
|Функция СумП1 = Сумма(Сумма);
|Группировка Товар без групп;
|Условие(Док.Грузоотправитель=ВыбПост);
|"//}}ЗАПРОС
;
Запрос.Выполнить(Текст);

Пока Запрос.Группировка(1)=1 Цикл   
    Пока Запрос.Группировка(2)=1 Цикл
Если ПустоеЗначение(Запрос.Док.Грузоотправитель)=1 Тогда
Продолжить;
КонецЕсли;

Кол=Запрос.КолП1; 
Сум=Запрос.СумП1;
Если Кол=0 Тогда
Продолжить;
КонецЕсли;
ДБФ.Добавить();     
ДБФ.УстановитьЗначениеПоля("A",ИНН);   
ДБФ.УстановитьЗначениеПоля("B",КПП);
ДБФ.УстановитьЗначениеПоля("C",Запрос.Док.ДатаДок);     
ДБФ.УстановитьЗначениеПоля("D",Сокрлп(Запрос.Док.НомерДок));
ДБФ.УстановитьЗначениеПоля("E",Строка(Запрос.Док.Грузоотправитель.Код)); 
ДБФ.УстановитьЗначениеПоля("F",Сокрлп(Запрос.Док.Грузоотправитель.Наименование));   
ДБФ.УстановитьЗначениеПоля("G",Сокрлп(Запрос.Товар.Код));     
ДБФ.УстановитьЗначениеПоля("H",Сокрлп(Запрос.Товар.Наименование));   
ДБФ.УстановитьЗначениеПоля("I",Кол);   
ДБФ.УстановитьЗначениеПоля("J",Сум/Кол);
ДБФ.УстановитьЗначениеПоля("K",Сум); 

ДБФ.Записать();   
КонецЦикла;
КонецЦикла;           
ДБФ.ЗакрытьФайл();
//
КонецПроцедуры
Процедура ПриНачалеВыбораЗначения(Элем,Флаг)
Если Элем="Путь" Тогда
Флаг=0;
ФС.ВыбратьКаталог(Путь,"Выберите каталог файла",60);
КонецЕсли;
КонецПроцедуры
ВыбКонПериода=РабочаяДата();
ВыбНачПериода=РабочаяДата();
 

crow1983

Преподаватель, программист...и просто хороший человек

andryscha92

Цитата: crow1983 от 03 окт 2013, 15:33
Как ошибка то выглядит?
Ошибки не выскакивают.Сам файл создается, но данные туда не попадают. что то с группировками может?ни в один из циклов не заходит..

crow1983

Для начала отладчиком попробуйте. Точку остонова поставте и посмотрите как код выполняется.
Преподаватель, программист...и просто хороший человек

andryscha92

Цитата: crow1983 от 03 окт 2013, 15:40
Для начала отладчиком попробуйте. Точку остонова поставте и посмотрите как код выполняется.
а как просмотреть результат запроса?

Yura063

Если у вас не чего не выводится, то скорее всего из-за этого:
Цитата: andryscha92 от 03 окт 2013, 15:29
ВыбКонПериода=РабочаяДата();
ВыбНачПериода=РабочаяДата();


Помогли, отблагодари!

crow1983

Открываешь в конфигураторе обработку. Ставишь точку(можно просто щелкнуть ЛКМ напротив нужной строки). Запускаешь предприятие в режиме отладки. Запускаешь обработку...в конфигураторе смотришь.
Преподаватель, программист...и просто хороший человек

andryscha92

Цитата: Yura063 от 03 окт 2013, 15:44
Если у вас не чего не выводится, то скорее всего из-за этого:
Цитата: andryscha92 от 03 окт 2013, 15:29
ВыбКонПериода=РабочаяДата();
ВыбНачПериода=РабочаяДата();

нет,это по умолчанию дата,я её изменяю то же самое.
кстати вот ещё в запросе строчка должна быть
|Группировка Док;

проблема в запросе или в группировках думаю гдето...


Yura063

Цитата: crow1983 от 03 окт 2013, 15:45
Открываешь в конфигураторе обработку. Ставишь точку(можно просто щелкнуть ЛКМ напротив нужной строки). Запускаешь предприятие в режиме отладки. Запускаешь обработку...в конфигураторе смотришь.
Это не 8! Надо сначала Отладчик запустить!
Помогли, отблагодари!

crow1983

Цитата: Yura063 от 03 окт 2013, 15:44
Если у вас не чего не выводится, то скорее всего из-за этого:
Цитата: andryscha92 от 03 окт 2013, 15:29
ВыбКонПериода=РабочаяДата();
ВыбНачПериода=РабочаяДата();



Зачем вообще использовать Период, если выборка из текущего документ?
Преподаватель, программист...и просто хороший человек

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск