Имя: Пароль:
1C
1C 7.7
v7: УстановитьФильтр() в ИТЗ
0 botman4
 
01.06.17
17:22
Есть вот такая ИТЗ

Пусть выбГод = 1999

Тут года выпуста Авто, вношу год авто и мне покажут модели которые выпускались в этом интервале лет.

хочу получить строки в которых сработает условие:
    выбГод >= ГодНач и выбГод <= ГодКон


    БД.НоваяКолонка("ГодНач");
    БД.НоваяКолонка("ГодКон");
    БД.ДобавитьИндекс("Год", "ГодНач, ГодКон");

        спГодМин = СоздатьОбъект("СписокЗначений");
        спГодМин.ДобавитьЗначение(0); // ГодНач
        спГодМин.ДобавитьЗначение(выбГод); // ГодКон
        
        спГодМакс = СоздатьОбъект("СписокЗначений");
        спГодМакс.ДобавитьЗначение(выбГод); // ГодНач
        спГодМакс.ДобавитьЗначение(ДатаГод(ТекущаяДата())); /// ГодКон
    

        БД.УстановитьФильтр(спГодМин, спГодМакс, "Год");
        БД.Выгрузить(ТзМодели, "Год");

По ГодНач срабатывает, а по ГодКон нет, подскажите пож в чем может быть затык ?
1 Ёпрст
 
гуру
01.06.17
17:33
ДатаГод ?

Ясен пень, что не срабатывает
2 Ёпрст
 
гуру
01.06.17
17:33
там же число будет, типа 17.
3 Ёпрст
 
гуру
01.06.17
17:33
ну и 0 пихать заместо пустой даты, тоже, сомнительно
4 botman4
 
01.06.17
18:34
Если делаю Индекс по одной колонке, по ГодКон        БД.ДобавитьИндекс("Год", "ГодКон");        БД.УстановитьФильтр(выбГод, ДатаГод(ТекущаяДата()), "Год");

все отрабатывает нормально, а по двум колонкам не получается пока 8(

пробовал писать не 0, а 1000 и не ДатаГод(ТекущаяДата()), а 2017, все равно.
5 Ёпрст
 
гуру
02.06.17
09:26
(4) У тебя в значениях индекса - дата, а ты её числом года пытаешься фильтровать. Не находишь ли противоречия ?
6 botman4
 
06.06.17
12:12
Типы данных я как только не менял, и приводил оба столбца к дате. Пробовал приводил оба к числу. Проверял в каждой строке типы. нифига не получилось... буксанул где-то и все 8( обошел костылем - сделал через два фильтра, поочередно делал - все отрабатывает как положено, а сразу оба - нифига. Вопрос закрыл, возвращаться пока не хочу. Спасибо за помощь.