Имя: Пароль:
1C
1С v8
Проблема с запросом
,
0 Droning1C
 
19.02.19
10:17
Делаю отчет на СКД. Столкнулся с тем, что поле ИтогоПростой не заполнено полностью. В консоли запросов в результате тоже пусто, хотя в документах этот реквизит везде заполнен.
Наставьте на путь истинный, пожалуйста



ВЫБРАТЬ
    ПростойОборудования.Дата,
    ОборудованиеСправочник.Код КАК ИнвентарныйНомер,
    ОборудованиеСправочник.Наименование КАК НаименованиеОборудования,
    ОборудованиеСправочник.ПризнакОборудованияЛН,
    ПростойОборудования.ВремяНачалаПростоя,
    ПростойОборудования.ВремяВызоваСпециалиста,
    ПростойОборудования.ВремяНачалаРабот,
    ПростойОборудования.ВремяУстраненияНеисправности,
    ШифрыНеисправностейОборудования.Наименование КАК Шифр,
    ПростойОборудования.ИтогоПростой,
    ПростойОборудования.Оператор,
    ПростойОборудования.Ответственный,
    ПростойОборудования.Участок
ИЗ
    Документ.ПростойОборудования КАК ПростойОборудования
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Оборудование КАК ОборудованиеСправочник
        ПО ПростойОборудования.Оборудование.Ссылка = ОборудованиеСправочник.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШифрыНеисправностейОборудования КАК ШифрыНеисправностейОборудования
        ПО ПростойОборудования.ШифрНеисправности = ШифрыНеисправностейОборудования.Ссылка
ГДЕ
    ПростойОборудования.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ПростойОборудования.Участок = &Участок
1 Droning1C
 
19.02.19
10:20
ИтогоПростой - это число, длина 10
2 JeHer
 
19.02.19
10:27
Данные-то есть?
3 RomanYS
 
19.02.19
10:28
(0) Значит то, что ты видишь в документе не есть "ИтогоПростой". Открывай форму документа и смотри.

Запрос здесь ни причем.
4 JeHer
 
19.02.19
10:28
Попробуй поменять ГДЕ на И
5 Droning1C
 
19.02.19
10:28
(3) нашел ошибку. Вот так заполняется Итого простой

Если ЗначениеЗаполнено(ВремяНачалаПростоя) И ЗначениеЗаполнено(ВремяУстраненияНеисправности) Тогда
        ЭлементыФормы.ПростойВМинутах.Значение = РассчитатьПростойВМинутах(ВремяНачалаПростоя, ВремяУстраненияНеисправности);
    КонецЕсли;


Через элементы формы нет записи в реквизит, оттуда и проблема
6 Droning1C
 
19.02.19
10:29
Связать по типу в свойствах реквизита простой поможет?
7 OldCondom
 
19.02.19
10:32
Поможет с чем? Все работает. Перепиши запрос на расчет простоя в минутах.
8 RomanYS
 
19.02.19
10:34
(6) Поможет, но в любом случае за конструкцию "ЭлементыФормы.ПростойВМинутах.Значение = ..." автору надо в руки нас..ть, это если без членовредительства
9 pasha_d
 
19.02.19
10:37
ПростойВМинутах - реквизит объекта? Тогда
ПростойВМинутах = РассчитатьПростойВМинутах(ВремяНачалаПростоя, ВремяУстраненияНеисправности);
10 OldCondom
 
19.02.19
10:38
Так потом еще писать обработку по расчету простоя и перезаписи документов. Да ну. Работает жеж, добавь пару костылей, смажь говном и в продакшн!
11 Droning1C
 
19.02.19
10:50
(9) простой был реквизитом формы. переделал, чтобы был реквизитом документа. Теперь обработкой буду значения проставлять. Всем огромное спасибо!
12 RomanYS
 
19.02.19
10:53
(11) даже для реквизитов формы не используй никогда "ЭлементыФормы.ПростойВМинутах.Значение"
13 OldCondom
 
19.02.19
11:16
А через месяц захотят видеть простой в часах. Что делать будешь? Снова все документы перезаписывать?
14 Droning1C
 
19.02.19
11:23
(13) И как же лцчше в таком случае обработать эту ситуацию?
15 OldCondom
 
19.02.19
11:27
(14) Переписать запрос. Все данные в системе есть.
16 OldCondom
 
19.02.19
11:28
Функция РАЗНОСТЬДАТ
Функция предназначена для получения разницы между двумя датами.

Первый параметр — вычитаемая дата, выражение типа ДАТА;

Второй параметр — исходная дата, выражение типа ДАТА;

Третий параметр – тип разности, одно из: СЕКУНДА, МИНУТа, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД.

Примеры:
ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), ДЕНЬ)
17 dezss
 
19.02.19
11:29
(13) и че? так сложно разделить на 60?
Хранится в минутах, а на форму вывести значения в нужных единицах измерения...рассчитывая их
18 dezss
 
19.02.19
11:30
ну или в секундах хранить
19 OldCondom
 
19.02.19
11:40
(17) А то, что это УЖЕ реализовано. Это раз. Два - зачем хранить в системе излишние данные, да еще тратить на это время? Зачем перезаписывать данные БД? А если там еще дата запрета стоит?
20 OldCondom
 
19.02.19
11:41
Реквизит документа вызывает столько прений. Будто других задач нет.
21 dezss
 
19.02.19
12:48
(19) (20) с этим не спорю, но реквизит-то он уже создал)))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn