Имя: Пароль:
1C
1С v8
Динамический список и произвольный запрос
,
0 новичок12345
 
19.01.15
14:12
День добрый!
Столкнулся с проблемой, не знаю как решить, поэтому обращаюсь сюда.
Есть форма списка (управляемые формы). Платформа 8.2.19.90. На форме динамический список с произвольным запросом. В запросе указана основная таблица и стоит в истине динамическое считывание данных.
Запрос выбирает все поля из справочника (полей очень много, порядка 100) и есть одно вычисляемое поле, которое считает количество недель между двумя датами.
Собственно сам запрос ( в запросе представлены только несколько полей, так как методом тестирование было вычислено что проблема как раз в этом вычисляемом поле):

ВЫБРАТЬ
    СправочникИТ_ПланированиеРабот.Ссылка,
    СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств,
    ВЫБОР
        КОГДА СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств <> ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА ВЫБОР
                    КОГДА РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ) = 0
                        ТОГДА 0
                    ИНАЧЕ РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ)/7
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК Неделя,
ИЗ
    Справочник.ИТ_ПланированиеРабот КАК СправочникИТ_ПланированиеРабот


Проблема: после некоторой строки (у каждой роли она своя) вниз список не листается, как будто там ничего нет. Если нажать END?, то список пролистывается до конца , но теперь обрезается вверху. Строка по которой обрезается может быть разной.
Если убрать деление на 7 , то все выводит.
Вопрос: Можно ли как то переписать запрос по вычислению этого поля или есть другие идеи как выполнить эту задачу, но другим способом? и вообще интересно, что за ерунда происходит?
1 Maxus43
 
19.01.15
14:15
КОГДА РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ) = 0
                        ТОГДА 0
                    ИНАЧЕ РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ)/7

нафиг когда тогда? просто
РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ)/7

ибо результат один. 0/7 = 0. Ваш Кэп
2 новичок12345
 
19.01.15
14:17
(1) Ну по поводу запроса - это уже не знаю какой вариант написания одного и того же
РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ) далеко не всегда дает 0 . Если убрать деление  на 7, то все замечательно считается
3 Rie
 
19.01.15
14:18
А то, что при делении дробная часть возникает, это ничего?
4 новичок12345
 
19.01.15
14:19
(3) Ничего. Некую порцию данных то выводит, и тоже замечательно считает.
5 Maxus43
 
19.01.15
14:20
(2) я про то что ты делаешь проверку на ноль, а она не нужна.

Пробуй так
    ВЫБОР
        КОГДА СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств <> ДАТАВРЕМЯ(1, 1, 1) Тогда

Выразить(РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ)/7 КАК ЧИСЛО(15,2)

вместо 15,2 - сколько там тебе надо ставь
6 Vadimugatu
 
19.01.15
14:22
А если в делать РазностьДат(Дата1, Дата2, НЕДЕЛЯ)?
7 новичок12345
 
19.01.15
14:24
(5) сейчас попробую. через выразить.
Самое интересное что если написать
РАЗНОСТЬДАТ(&ТекДата, СправочникИТ_ПланированиеРабот.ДатаИсполненияОбязательств, ДЕНЬ)*7 , то тоже все работает.
8 новичок12345
 
19.01.15
14:25
(6) а разве НЕДЕЛЯ есть такой тип?
9 AaNnDdRrEeYy
 
19.01.15
14:25
как в (6) сделай, деление зло.
10 ДенисЧ
 
19.01.15
14:26
(8) а не продать ли тебе СП с двойной скидкой?
11 AaNnDdRrEeYy
 
19.01.15
14:28
а ведь НЕДЕЛЯ то нет, проверил говорит "Неверные параметры"
12 ДенисЧ
 
19.01.15
14:29
Хм... И действительно, в разностьДат() недели нет.... Пойду посуплю что-нибудь чем-нибудь....
13 новичок12345
 
19.01.15
14:29
(10) а думаешь я такой не глядя начал спрашивать. Наверно сначала проверил все.
14 Maxus43
 
19.01.15
14:30
(10) Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД.
(с) СП

Обнови СП, нефиг старьё продавать с опечатками
15 ДенисЧ
 
19.01.15
14:31
(14) Предлагаю прекратить похмеляться тормозной жидкостью. См (12)
16 Vadimugatu
 
19.01.15
14:32
Извиняюсь за (6), всегда думал, что есть, но никогда не пользовался.
17 новичок12345
 
19.01.15
14:32
(5) Спасибо через Выразить заработало! Всем спасибо кто поучаствовал! Теперь только непонятно почему до этого дин список не хавал что это число. Хотя вроде в списке реквизитов написано что в этом поле число хранится
18 AaNnDdRrEeYy
 
19.01.15
14:33
(17) там NULL иногда наверно проскакивает.
19 Maxus43
 
19.01.15
14:34
(17) например 5/7 = 0,7142857142857143
у тебя тип не такой, иль ещё что, тупить может на таких числах
20 vde69
 
19.01.15
14:35
кстати РАЗНОСТЬДАТ - очень медлено работает....
21 новичок12345
 
19.01.15
14:36
(19) ясно, буду знать. Очень выручили. Спасибо!
22 новичок12345
 
19.01.15
14:36
(20) чем заменить предлагаете?
23 vde69
 
19.01.15
14:38
(22)я менял на соеденение с произдодственным календарем...

хотя конечно на маленьких таблицах пофигу...
24 DrZombi
 
гуру
19.01.15
15:10
(23) Как медленно, по "Разность"? О_о...
Это же катастрофа :(
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший