|
Запрос: условие | ☑ | ||
---|---|---|---|---|
0
Adgjj
13.08.12
✎
10:50
|
Скажите, пжл, как написать в условии проверку, что текущий документ (ЭтотОбъект) ремонт или не ремонт?
&Ремонт = ""1"" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ //ездки | ВыработкаТС_Лес.ПутЛист КАК Док, | ВыработкаТС_Лес.ДатаВыезда КАК ДатаНач, | ВыработкаТС_Лес.ДатаВозвращения КАК ДатаКон |ИЗ | РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес |ГДЕ | (&ДатаНачТек МЕЖДУ ВыработкаТС_Лес.ДатаВыезда И ВыработкаТС_Лес.ДатаВозвращения | ИЛИ &ДатаОкТек МЕЖДУ ВыработкаТС_Лес.ДатаВыезда И ВыработкаТС_Лес.ДатаВозвращения | ИЛИ ВыработкаТС_Лес.ДатаВыезда МЕЖДУ &ДатаНачТек И &ДатаОкТек | ИЛИ ВыработкаТС_Лес.ДатаВозвращения МЕЖДУ &ДатаНачТек И &ДатаОкТек) //ищем док-ты, дата/время к-рых пересекается с дата/время текущего док. | И ВыработкаТС_Лес.ТС = &АвтоИзЭтогоДок И ВыработкаТС_Лес.Активность И ВыработкаТС_Лес.Организация = &Организация | |ОБЪЕДИНИТЬ | | ВЫБРАТЬ //ремонты | ПростоиТС.Регистратор, | ПростоиТС.ДатаНачала, | ПростоиТС.ДатаОкончания |ИЗ | РегистрНакопления.ПростоиТС КАК ПростоиТС |ГДЕ | (&ДатаНачТек МЕЖДУ ПростоиТС.ДатаНачала И ПростоиТС.ДатаОкончания | ИЛИ &ДатаОкТек МЕЖДУ ПростоиТС.ДатаНачала И ПростоиТС.ДатаОкончания | ИЛИ ПростоиТС.ДатаНачала МЕЖДУ &ДатаНачТек И &ДатаОкТек | ИЛИ ПростоиТС.ДатаОкончания МЕЖДУ &ДатаНачТек И &ДатаОкТек) //в ремонте ДатаНачала=ДатаОкончания; зато время разное: в 1С8 дата это дата+время. | И ПростоиТС.ТС = &АвтоИзЭтогоДок И ПростоиТС.Активность И ПростоиТС.Организация = &Организация | //| И ((ПростоиТС.Регистратор ссылка Документ.уатРемонтныйЛист и ПростоиТС.ДатаНачала <> &ДатаНачТек) //| или не (ПростоиТС.Регистратор ссылка Документ.уатРемонтныйЛист)) //если есть еще 1-2 ремонта по этому же авто на ту же дату - не ошибка, просто ремонтируют 2-3 водителя //| //если ТекущийДокумент = ремонт | //если есть еще неск. ремонтов по этому же авто на ту же дату - не ошибка, просто ремонтируют 1-4 водителя | И ((&Ремонт = ""1"" и ПростоиТС.ДатаНачала <> &ДатаНачТек) или &Ремонт = ""0"") | |УПОРЯДОЧИТЬ ПО | ДатаКон |"; Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация); Запрос.УстановитьПараметр("ДатаНачТек", ЭтотОбъект.ДатаНачала); //ДатаНачала с формы ремонта или ДатаВыезда для ездки Запрос.УстановитьПараметр("ДатаОкТек", ЭтотОбъект.ДатаОкончания); Запрос.УстановитьПараметр("АвтоИзЭтогоДок", ЭтотОбъект.ТС); если ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.уатРемонтныйЛист") тогда Запрос.УстановитьПараметр("Ремонт","1"); иначе Запрос.УстановитьПараметр("Ремонт","0"); конецесли; ТЗ = Запрос.Выполнить().Выгрузить(); |
|||
1
ДенисЧ
13.08.12
✎
10:51
|
ССЫЛКА Документ.Ремонт
|
|||
2
Adgjj
13.08.12
✎
10:52
|
сейчас ошибку не выдает, но и не работает:
в ТЗ попадают строки ремонтов на ту же дату |
|||
3
Adgjj
13.08.12
✎
11:08
|
проблема в том, что в 1С8 дата - это дата + время: поэтому ПростоиТС.ДатаНачала <> &ДатаНачТек не работает
с помощью | ПОДСТРОКА(ПростоиТС.ДатаНачала, 1, 8) тоже не получается |ОБЪЕДИНИТЬ | | ВЫБРАТЬ //ремонты | ПростоиТС.Регистратор, | ПростоиТС.ДатаНачала, | ПростоиТС.ДатаОкончания, | ПОДСТРОКА(ПростоиТС.ДатаНачала, 1, 8) |ИЗ | РегистрНакопления.ПростоиТС КАК ПростоиТС |ГДЕ | (&ДатаНачТек МЕЖДУ ПростоиТС.ДатаНачала И ПростоиТС.ДатаОкончания | ИЛИ &ДатаОкТек МЕЖДУ ПростоиТС.ДатаНачала И ПростоиТС.ДатаОкончания | ИЛИ ПростоиТС.ДатаНачала МЕЖДУ &ДатаНачТек И &ДатаОкТек | ИЛИ ПростоиТС.ДатаОкончания МЕЖДУ &ДатаНачТек И &ДатаОкТек) //в ремонте ДатаНачала=ДатаОкончания; зато время разное: в 1С8 дата это дата+время. | И ПростоиТС.ТС = &АвтоИзЭтогоДок И ПростоиТС.Активность И ПростоиТС.Организация = &Организация | //| И ((ПростоиТС.Регистратор ссылка Документ.уатРемонтныйЛист и ПростоиТС.ДатаНачала <> &ДатаНачТек) //| или не (ПростоиТС.Регистратор ссылка Документ.уатРемонтныйЛист)) //если есть еще 1-2 ремонта по этому же авто на ту же дату - не ошибка, просто ремонтируют 2-3 водителя //| //если ТекущийДокумент = ремонт |"; Если ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.уатРемонтныйЛист") Тогда Запрос.Текст = Запрос.Текст + " | И ПростоиТС.ДатаНачала <> &ДатаНачТек"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | |УПОРЯДОЧИТЬ ПО | ДатаКон |"; |
|||
4
Adgjj
13.08.12
✎
11:11
|
И НАЧАЛОПЕРИОДА(ПростоиТС.ДатаНачала, День) <> НАЧАЛОПЕРИОДА(&ДатаНачТек, День)";
так вроде бы получилось |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |