среда, 20 мая 2009 г.

1С: Поймал глюк

Не так давно написал отчет который сравнивал маржу за два периода, на первый взгляд показалось что все работает нормально. Вот именно что показалось.
Вот шаблон таблицы (чтобы было понятно о чем речь):

Базовый период
Товар Разница
Сравниваемый период
Сумма
Рентабельность
Наценка
Рентабельность
Наценка
Сумма
Рентабельность
Наценка
Алгоритм я выбрал самый не затейлевый, в таблицу сначала заносятся продажи по первому периоду, а затем заносятся данные по второму периоду.
Вот тут я и поймал глюк: когда делается второй запрос в этом отчете, если не было продаж по этому товару, то данные во втором запросе копируются из первого.
К примеру, некий товар "Снеки" продавался в первом периоде, но не продавался во втором: отчет покажет что он продавался в обоих периодах и с одними и теми же суммой, наценкой, рентабельностью. Что не есть правильно.
Предполагаю что 1С не обнуляет sql результат, пробовал перед выполнением второго запроса:

Запрос = 0; //Тупо обнулить запросЗапрос.Выгрузить(ТЗ); //сначала выгрузить в Таблицу Значений, а затем обработать
ничего не помогло.
Пришлось делать через регистры

Запрос2 = СоздатьОбъект("Регистр.Наценка");//Устанавливаем фильтр по клиенту/продавцуЗапрос2.УстановитьФильтр(?(ВыбКлиент.Выбран() = 1,ВыбКлиент,""),?(ВыбПродавец.Выбран() = 1,ВыбПродавец,""));Запрос2.ВыбратьДвижения(НачСрав,КонСрав);//ну а дальше заносим данные в таблицу

2 комментария:

  1. Серёг, только правильнее писать "маржа"... И табличка к сожалению в формат странички не влезла, срезалась в конце.

    ОтветитьУдалить
  2. в табличке и так шрифт -3 выставил, все равно не влазит, за маржу спасибо, поправлю :)

    ОтветитьУдалить