Ситуация следующая: Возникла необходимость получения времени отработки поручения.
В списке (1С 8.2 управляемые формы) документа есть 2 даты дата создания документа и дата его закрытия надо выводить в список разность между датами в формате (дн. час. мин.)
Думал все просто и банально, но не тут то было это все норм делается если у тебя 8.1 например. А здесь (8.2) динамический список который строится из запроса.
Вообще помучался я и решил править запрос…. Понял что всё гораздо хуже чем я это себе представлял и не найдя другого выхода / решения данной проблемы на просторах интернета, я сделал ЭТО: РазностьДатВЗапросе.epf (Хотел выложить код, но надо покупать обработку "разукрашку", вообщем кому надо будет пишите в личку я обязательно вышлю!)
PS: строго не судите первая публикация
PSS: о пользе данного запроса сужу по сообщениям в интернете … были люди которым это реально было нужно, но им давали глупые ответы… типо РАЗНОСТЬДАТ(,,Час) и т.д.
ВОТ ЭТО ПРАВИЛЬНЫЙ КОД (ОТ i132) ОБРАБОТКУ ИСПРАВИЛ!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РАЗНОСТЬДАТ(&ДатаН, &ДатаК, СЕКУНДА) КАК СекундыВсе,
| РАЗНОСТЬДАТ(&ДатаН, &ДатаК, МИНУТА) КАК МинутыВсе,
| РАЗНОСТЬДАТ(&ДатаН, &ДатаК, ЧАС) КАК ЧасыВсе,
| РАЗНОСТЬДАТ(&ДатаН, &ДатаК, ДЕНЬ) КАК ДниВсе
|ПОМЕСТИТЬ ВремяВсе
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДОБАВИТЬКДАТЕ(&ДатаН, ДЕНЬ, ВремяВсе.ДниВсе) > &ДатаК
| ТОГДА ВремяВсе.ДниВсе - 1
| ИНАЧЕ ВремяВсе.ДниВсе
| КОНЕЦ КАК ДниВсе,
| ВЫБОР
| КОГДА ДОБАВИТЬКДАТЕ(&ДатаН, ЧАС, ВремяВсе.ЧасыВсе) > &ДатаК
| ТОГДА ВремяВсе.ЧасыВсе - 1
| ИНАЧЕ ВремяВсе.ЧасыВсе
| КОНЕЦ КАК ЧасыВсе,
| ВЫБОР
| КОГДА ДОБАВИТЬКДАТЕ(&ДатаН, МИНУТА, ВремяВсе.МинутыВсе) > &ДатаК
| ТОГДА ВремяВсе.МинутыВсе - 1
| ИНАЧЕ ВремяВсе.МинутыВсе
| КОНЕЦ КАК МинутыВсе,
| ВремяВсе.СекундыВсе
|ПОМЕСТИТЬ ВремяКор
|ИЗ
| ВремяВсе КАК ВремяВсе
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВремяКор.ДниВсе КАК Дни,
| ВремяКор.ЧасыВсе - ВремяКор.ДниВсе * 24 КАК Часы,
| ВремяКор.МинутыВсе - ВремяКор.ЧасыВсе * 60 КАК Минуты,
| ВремяКор.СекундыВсе - ВремяКор.МинутыВсе * 60 КАК Секунды
|ИЗ
| ВремяКор КАК ВремяКор";
Запрос.УстановитьПараметр("ДатаН",Объект.ДатаН);
Запрос.УстановитьПараметр("ДатаК",Объект.ДатаК);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() тогда
Сообщить(""+ВыборкаДетальныеЗаписи.Дни+" "+ВыборкаДетальныеЗаписи.Часы+" "+ВыборкаДетальныеЗаписи.Минуты+" "+ВыборкаДетальныеЗаписи.Секунды+" ");
КонецЕсли;;