|
Как сделать условие по регистрам в СКД | ☑ | ||
---|---|---|---|---|
0
Oleg102
03.08.13
✎
10:10
|
Всем привет! подскажите как сделать условие в СКД по регистрам.
Если есть Докмент 1 то тогда документ 1 иначе документ 2. Как все это оформить правильно. Понимаю что нужно а как правильно сделать незнаю. По инету ищу и ничего не мог найти. Помогите. ВЫБРАТЬ УчетПроживающихОстаткиИОбороты.Проживающий КАК Проживающий, УчетПроживающихОстаткиИОбороты.Проживающий.Подразделение КАК Подразделение, УчетПроживающихОстаткиИОбороты.Проживающий.Должность КАК Должность, УчетПроживающихОстаткиИОбороты.Проживающий.Организация КАК Организация, УчетПроживающихОстаткиИОбороты.Категория, УчетПроживающихОстаткиИОбороты.КойкоМесто КАК КойкоМесто, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель КАК Вагон, ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель ЕСТЬ НЕ NULL ТОГДА "Зав. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ЗаводскойНомер + "]" + " " + "Инд. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ИндНомер + "]" ИНАЧЕ 0 КОНЕЦ КАК НомерВагона, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.Родитель КАК Общежитие, СУММА(УчетПроживающихОстаткиИОбороты.КоличествоМестПриход) КАК КоличествоПроживающих, МАКСИМУМ(ВЫБОР КОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаНачала, ДЕНЬ) <= &ДатаНачала ТОГДА &ДатаНачала ИНАЧЕ НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаНачала, ДЕНЬ) КОНЕЦ) КАК ДатаЗаселения, МАКСИМУМ(ВЫБОР КОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаОкончания, ДЕНЬ) <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаОкончания, ДЕНЬ) ИНАЧЕ &КонецПериода КОНЕЦ) КАК ДатаВыселения, СУММА(СведенияОДоговорахСрезПоследних.СуммаЗаСутки) КАК СуммаЗаСутки, ВЫБОР КОГДА ПаспортныеДанныеФизЛиц.ФизЛицо ЕСТЬ НЕ NULL ТОГДА ПаспортныеДанныеФизЛиц.ДокументСерия + " " + ПаспортныеДанныеФизЛиц.ДокументНомер ИНАЧЕ 0 КОНЕЦ КАК ПаспортныеДанные, СведенияОДоговорахСрезПоследних.СостояниеДоговора ПОМЕСТИТЬ ВТ_Данные {ВЫБРАТЬ Проживающий.*, КойкоМесто.*, Общежитие.*, КоличествоПроживающих} ИЗ РегистрНакопления.УчетПроживающих.ОстаткиИОбороты КАК УчетПроживающихОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних ПО (СведенияОДоговорахСрезПоследних.Договор = УчетПроживающихОстаткиИОбороты.Договор) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц ПО (ПаспортныеДанныеФизЛиц.ФизЛицо = УчетПроживающихОстаткиИОбороты.Проживающий) ГДЕ УчетПроживающихОстаткиИОбороты.СуммаПриход <> 0 СГРУППИРОВАТЬ ПО УчетПроживающихОстаткиИОбороты.Проживающий, УчетПроживающихОстаткиИОбороты.КойкоМесто, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.Родитель, УчетПроживающихОстаткиИОбороты.Проживающий.Подразделение, УчетПроживающихОстаткиИОбороты.Проживающий.Должность, УчетПроживающихОстаткиИОбороты.Проживающий.Организация, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель, ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель ЕСТЬ НЕ NULL ТОГДА "Зав. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ЗаводскойНомер + "]" + " " + "Инд. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ИндНомер + "]" ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА ПаспортныеДанныеФизЛиц.ФизЛицо ЕСТЬ НЕ NULL ТОГДА ПаспортныеДанныеФизЛиц.ДокументСерия + " " + ПаспортныеДанныеФизЛиц.ДокументНомер ИНАЧЕ 0 КОНЕЦ, УчетПроживающихОстаткиИОбороты.Категория, СведенияОДоговорахСрезПоследних.СостояниеДоговора ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Данные.Проживающий, ВТ_Данные.Подразделение, ВТ_Данные.Должность, ВТ_Данные.Организация, ВТ_Данные.Категория, ВТ_Данные.КойкоМесто, ВТ_Данные.Вагон, ВТ_Данные.НомерВагона, ВТ_Данные.Общежитие, ВТ_Данные.КоличествоПроживающих, ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ВТ_Данные.СуммаЗаСутки, ВТ_Данные.ПаспортныеДанные, ВТ_Данные.СостояниеДоговора, РАЗНОСТЬДАТ(ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ДЕНЬ) + 1 КАК КоличествоДней, (РАЗНОСТЬДАТ(ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ДЕНЬ) + 1) * ВТ_Данные.СуммаЗаСутки КАК СуммаЗаПроживание ИЗ ВТ_Данные КАК ВТ_Данные |
|||
1
vicof
03.08.13
✎
10:24
|
[Всем привет! подскажите как сделать условие в СКД по регистрам.
Если есть Докмент 1 то тогда документ 1 иначе документ 2] чего-чего? |
|||
2
Нуф-Нуф
03.08.13
✎
10:45
|
Ужаснах
|
|||
3
Нуф-Нуф
03.08.13
✎
10:45
|
ССЫЛКА
|
|||
4
Oleg102
05.08.13
✎
08:38
|
Чего ужасного то? Я описал пример, что хочу сделать, а как сделать правильно не понимаю. Посмотрели бы код и увидели, что данные собираются из вертуальной таблицы регистра накопления и регистратора нужных мне документов нет по которым нужно отфильтровать отчет. Так вот я и создал тему, так как ничего не могу найти в инете, как это сделать. Прошу помощи вашей.
|
|||
5
Ёпрст
05.08.13
✎
08:45
|
(4) в параметры ВТ воткни периодичность, до регистратора, хотя бы, и дальше ВЫБОР с ССЫЛКА .. усё.
|
|||
6
Oleg102
05.08.13
✎
08:48
|
(5) спасибо попробую
|
|||
7
Oleg102
05.08.13
✎
10:15
|
Сделал переодинчость по регистраторам. Все появилось что мне нужно. Поставил условие
ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеПроживающего ТОГДА УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеПроживающего ИНАЧЕ УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПервичныйДоговорНайма КОНЕЦ но почему то не работает |
|||
8
Нуф-Нуф
05.08.13
✎
10:19
|
(7) а что не работает то?
|
|||
9
Ёпрст
05.08.13
✎
10:25
|
на вот, наслаждайся
ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеПроживающего ТОГДА ""Вася"" ИНАЧЕ ""Федя"" КОНЕЦ как ВАСЯФЕДЯ |
|||
10
Oleg102
05.08.13
✎
10:27
|
Должно выводится движение по документам. У меня есть документ "ПеремещениеПроживающего" где происходит движение перемещения человека в общежитие, переселение с комнаты в другую комнату и "первичныйДоговор" где происходит заселение когда человек только приезжает в общежитие жить. И когда существует документ "перемещение Проживающего" то в мой отчет выводится еще такая же строка дублирующая, только комнаты заселения разные. т.е. берется регистраторы первичного договора и перемещение проживаюещего. Вот поэтому я хочу отфильтровать это все.
|
|||
11
Сти
05.08.13
✎
10:32
|
(9) Как я понял, не это ему надо. А надо ему, при запросе, который выдает:
1 строка: Имя - Вася, Регистратор - договор найма 2 строка: Имя - Петя, Регистартор - договор найма 3 строка: Имя - Вася, Регистратор - ПеремещениеПроживающего 1-ю строку выбросить нафиг, Потому что есть перемещение Васи, и оно последнее. Но оставить строки и вывести договора, если позже не было перемещений. Но, по-моему, без капитальной переделки запроса тут не обойтись. |
|||
12
Oleg102
05.08.13
✎
10:34
|
(11) ДААААА
|
|||
13
Oleg102
05.08.13
✎
10:34
|
поэтому и попросил помощи
|
|||
14
Oleg102
05.08.13
✎
10:41
|
Я думал просто как то поставить условие, а нет видно.
|
|||
15
Сти
05.08.13
✎
10:41
|
(10) А если проживающего несколько раз переселили? Тут надо вообще последнюю строку по дате брать. Для этого запрос рисовать что-то вроде: выбрать что нужно, оттуда выбрать ключевые поля и макс.дату, потом это объединить с исходным запросом по всем ключ.полям и дате:
Извиняюсь, если какие-то ошибки, прямо тут набросал |
|||
16
Oleg102
05.08.13
✎
10:43
|
хорошо. понял мысль. буду пробовать спасибо
|
|||
17
Oleg102
06.08.13
✎
08:25
|
Ребята пробовал делать, как описал процесс "Сти". Ничего не получается как выводило в отчет 2 надписи так и выводит. Отбор никак не хочет работать. Уже что только не делал и запрос новые делал, соединял, ставил условия. и все равно такая же фигня. Начинают нервы сдавать. Вроде должно быть просто, но ни как не выходит. Ставлю условие выводить конкретный документ, отчет выводит. Но когда ставлю отбор ВЫБОР...КОГДА. ничего не выходит он не работает. Не могу понять почему он не работает. Уже сижу столько времени с этой фигней.((((
|
|||
18
Oleg102
06.08.13
✎
09:22
|
ДААА я все таки сделал. О БОЖЕ. =)
|
|||
19
Oleg102
06.08.13
✎
09:32
|
ВЫБРАТЬ
МАКСИМУМ(УчетПроживающихОстаткиИОбороты.Период) КАК МаксДАТА, УчетПроживающихОстаткиИОбороты.Регистратор, УчетПроживающихОстаткиИОбороты.Проживающий КАК Проживающий ПОМЕСТИТЬ ВТ_Регистратор {ВЫБРАТЬ Проживающий.*, МаксДАТА} ИЗ РегистрНакопления.УчетПроживающих.ОстаткиИОбороты(, , Регистратор, , ) КАК УчетПроживающихОстаткиИОбороты ГДЕ ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеПроживающего ТОГДА УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеПроживающего ИНАЧЕ УчетПроживающихОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПервичныйДоговорНайма КОНЕЦ СГРУППИРОВАТЬ ПО УчетПроживающихОстаткиИОбороты.Проживающий, УчетПроживающихОстаткиИОбороты.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ УчетПроживающихОстаткиИОбороты.Проживающий КАК Проживающий, УчетПроживающихОстаткиИОбороты.Проживающий.Подразделение КАК Подразделение, УчетПроживающихОстаткиИОбороты.Проживающий.Должность КАК Должность, УчетПроживающихОстаткиИОбороты.Проживающий.Организация КАК Организация, УчетПроживающихОстаткиИОбороты.Категория, УчетПроживающихОстаткиИОбороты.КойкоМесто КАК КойкоМесто, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель КАК Вагон, ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель ЕСТЬ НЕ NULL ТОГДА "Зав. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ЗаводскойНомер + "]" + " " + "Инд. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ИндНомер + "]" ИНАЧЕ 0 КОНЕЦ КАК НомерВагона, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.Родитель КАК Общежитие, СУММА(УчетПроживающихОстаткиИОбороты.КоличествоМестПриход) КАК КоличествоПроживающих, МАКСИМУМ(ВЫБОР КОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаНачала, ДЕНЬ) <= &ДатаНачала ТОГДА &ДатаНачала ИНАЧЕ НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаНачала, ДЕНЬ) КОНЕЦ) КАК ДатаЗаселения, МАКСИМУМ(ВЫБОР КОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаОкончания, ДЕНЬ) <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА НАЧАЛОПЕРИОДА(СведенияОДоговорахСрезПоследних.ДатаОкончания, ДЕНЬ) ИНАЧЕ &КонецПериода КОНЕЦ) КАК ДатаВыселения, СУММА(СведенияОДоговорахСрезПоследних.СуммаЗаСутки) КАК СуммаЗаСутки, ВЫБОР КОГДА ПаспортныеДанныеФизЛиц.ФизЛицо ЕСТЬ НЕ NULL ТОГДА ПаспортныеДанныеФизЛиц.ДокументСерия + " " + ПаспортныеДанныеФизЛиц.ДокументНомер ИНАЧЕ 0 КОНЕЦ КАК ПаспортныеДанные, СведенияОДоговорахСрезПоследних.СостояниеДоговора, МАКСИМУМ(УчетПроживающихОстаткиИОбороты.Период) КАК Период, УчетПроживающихОстаткиИОбороты.Регистратор КАК Регистратор ПОМЕСТИТЬ ВТ_Данные {ВЫБРАТЬ Проживающий.*, КойкоМесто.*, Общежитие.*, КоличествоПроживающих} ИЗ РегистрНакопления.УчетПроживающих.ОстаткиИОбороты(, , Регистратор, , ) КАК УчетПроживающихОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних ПО (СведенияОДоговорахСрезПоследних.Договор = УчетПроживающихОстаткиИОбороты.Договор) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц ПО (ПаспортныеДанныеФизЛиц.ФизЛицо = УчетПроживающихОстаткиИОбороты.Проживающий) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Регистратор КАК ВТ_Регистратор ПО УчетПроживающихОстаткиИОбороты.Период = ВТ_Регистратор.МаксДАТА И УчетПроживающихОстаткиИОбороты.Проживающий = ВТ_Регистратор.Проживающий ГДЕ УчетПроживающихОстаткиИОбороты.СуммаПриход <> 0 СГРУППИРОВАТЬ ПО УчетПроживающихОстаткиИОбороты.Проживающий, УчетПроживающихОстаткиИОбороты.КойкоМесто, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.Родитель, УчетПроживающихОстаткиИОбороты.Проживающий.Подразделение, УчетПроживающихОстаткиИОбороты.Проживающий.Должность, УчетПроживающихОстаткиИОбороты.Проживающий.Организация, УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель, ВЫБОР КОГДА УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель ЕСТЬ НЕ NULL ТОГДА "Зав. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ЗаводскойНомер + "]" + " " + "Инд. №" + " " + "[" + УчетПроживающихОстаткиИОбороты.КойкоМесто.Родитель.ИндНомер + "]" ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА ПаспортныеДанныеФизЛиц.ФизЛицо ЕСТЬ НЕ NULL ТОГДА ПаспортныеДанныеФизЛиц.ДокументСерия + " " + ПаспортныеДанныеФизЛиц.ДокументНомер ИНАЧЕ 0 КОНЕЦ, УчетПроживающихОстаткиИОбороты.Категория, СведенияОДоговорахСрезПоследних.СостояниеДоговора, УчетПроживающихОстаткиИОбороты.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Данные.Проживающий, ВТ_Данные.Подразделение, ВТ_Данные.Должность, ВТ_Данные.Организация, ВТ_Данные.Категория, ВТ_Данные.КойкоМесто, ВТ_Данные.Вагон, ВТ_Данные.НомерВагона, ВТ_Данные.Общежитие, ВТ_Данные.КоличествоПроживающих, ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ВТ_Данные.СуммаЗаСутки, ВТ_Данные.ПаспортныеДанные, ВТ_Данные.СостояниеДоговора, РАЗНОСТЬДАТ(ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ДЕНЬ) + 1 КАК КоличествоДней, (РАЗНОСТЬДАТ(ВТ_Данные.ДатаЗаселения, ВТ_Данные.ДатаВыселения, ДЕНЬ) + 1) * ВТ_Данные.СуммаЗаСутки КАК СуммаЗаПроживание ИЗ ВТ_Данные КАК ВТ_Данные |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |