|
Пользовательские поля | ☑ | ||
---|---|---|---|---|
0
Я_Ника
18.05.15
✎
14:50
|
Для вывода данных в отчет использую пользовательские поля. Текст выражения ниже. Проблема такая: В таком варианте выводит только даты из первого выражения, там, где регистратор "Документ.ВыдачаПропускаСотруднику", а второе выражение игнорирует. Подумала, что проблема в регистре документа ПропускиТС, но нет! Убрала первое выражение, тогда данные в отчете появились из ПропускиТС. Кто-нибудь сталкивался с таким? Как исправлять?
Выбор Когда (Не Выразить(Регистратор1, "Документ.ВыдачаПропускаСотруднику") Есть Null) Тогда "с " + Формат(ДействителенС, "ДФ=дд.ММ.гггг") + " по " + Формат(ДействителенПо, "ДФ=дд.ММ.гггг") Иначе Выбор Когда (Не Выразить(Регистратор2, "Документ.ВыдачаПропускаАвтотранспорту") Есть Null) Тогда "с " + Формат(ДействуетС, "ДФ=дд.ММ.гггг") + " по " + Формат(ДействуетДо, "ДФ=дд.ММ.гггг") Конец Конец |
|||
1
Я_Ника
18.05.15
✎
14:51
|
в (0) немного не правильно написала. Так должно быть:"Убрала первое выражение, тогда данные в отчете появились из ВыдачаПропускаАвтотранспорту".
|
|||
2
Cyberhawk
18.05.15
✎
14:53
|
А теперь вместо "убрала первое выражение" сделай "убрала "не" из первого условия"
|
|||
3
Fragster
гуру
18.05.15
✎
14:54
|
Регистратор1 Ссылка Документ.ВыдачаПропускаСотруднику
|
|||
4
Basilio
18.05.15
✎
14:54
|
а почему у тебя два регистратора?
|
|||
5
KrabCore
18.05.15
✎
14:54
|
Выбор
Когда Регистратор1 Ссылка Документ.ВыдачаПропускаСотруднику Тогда Иначе Выбор Когда Регистратор2 Ссылка Документ.ВыдачаПропускаАвтотранспорту Тогда Иначе Конец Конец |
|||
6
Fuas4
18.05.15
✎
14:55
|
Логично же предположить, что раз ты никогда не попадаешь во второе условие, значит, первое всегда срабатывает
|
|||
7
Fragster
гуру
18.05.15
✎
14:56
|
(5) у выражения Выбор может быть несколько блоков "Когда Тогда"
|
|||
8
Fragster
гуру
18.05.15
✎
14:56
|
(7) и к (0) относится
|
|||
9
Я_Ника
18.05.15
✎
15:07
|
(2) Ничего не изменилось
|
|||
10
Я_Ника
18.05.15
✎
15:10
|
||||
11
Я_Ника
18.05.15
✎
15:15
|
(6) Точно! У меня вот в чем дело: в это поле должны попадать данные из нескольких регистров. Если из одного регистра, то данные считаются по одному выражению, если из другого, то по другому. Как тогда такое условие задать?
|
|||
12
sapphire
18.05.15
✎
15:19
|
(11) может в запросе и определять как должно выглядеть поле?
|
|||
13
Я_Ника
18.05.15
✎
15:21
|
есть какая-нибудь функция, которая возвращает тип регистра, что-то вроде ТИПЗНАЧЕНИЯ для документа?
|
|||
14
Cyberhawk
18.05.15
✎
15:22
|
(9) значит, твое "Выразить" никогда не Null и условие всегда идет по первой ветке, что в более общем смысле сказано в (6)
|
|||
15
mehfk
18.05.15
✎
15:23
|
(13) А что данной функции будет передаваться в качестве параметра?
|
|||
16
sapphire
18.05.15
✎
15:24
|
(13) Зачем?!
|
|||
17
sapphire
18.05.15
✎
15:24
|
(11) см (5)
|
|||
18
Я_Ника
18.05.15
✎
15:25
|
(14) Я уже поняла это
|
|||
19
Fragster
гуру
18.05.15
✎
15:25
|
а если убрать Выразить()?
|
|||
20
Fragster
гуру
18.05.15
✎
15:26
|
оставить просто "Не Регистратор1 Есть Null"
|
|||
21
Я_Ника
18.05.15
✎
15:31
|
(20) тоже самое получается
Когда (Не Регистратор1 Есть Null) Тогда "с " + Формат(ДействителенС, "ДФ=дд.ММ.гггг") + " по " + Формат(ДействителенПо, "ДФ=дд.ММ.гггг") Иначе Выбор Когда (Не Регистратор2 Есть Null) Тогда "с " + Формат(ДействуетС, "ДФ=дд.ММ.гггг") + " по " + Формат(ДействуетДо, "ДФ=дд.ММ.гггг") Конец Конец |
|||
22
Basilio
18.05.15
✎
15:33
|
а что за поля Регистратор1 и Регистратор2 ? Как то смущает меня что ты два разных поля в одном операторе ВЫБОР ипользуешь..
|
|||
23
sapphire
18.05.15
✎
15:33
|
(21) Измените запросы, это же намного проще
|
|||
24
Basilio
18.05.15
✎
15:34
|
как ты поля Регистратор1 и Регистратор2 получаешь?
|
|||
25
sapphire
18.05.15
✎
15:34
|
(22) У неё объединение скорее всего
|
|||
26
Я_Ника
18.05.15
✎
15:34
|
(22) ВЫБРАТЬ
ДанныеОПосетителяхСрезПоследних.Регистратор, ДанныеОПосетителяхСрезПоследних.ФИО, ДанныеОПосетителяхСрезПоследних.Идентификатор, ДанныеОПосетителяхСрезПоследних.С, ДанныеОПосетителяхСрезПоследних.До, ДанныеОПосетителяхСрезПоследних.Куда, ДанныеОПосетителяхСрезПоследних.Сопровождающий, ПропускиСотрудниковСрезПоследних.Регистратор КАК Регистратор1, ПропускиСотрудниковСрезПоследних.Сотрудник, ПропускиСотрудниковСрезПоследних.Идентификатор КАК Идентификатор1, ПропускиСотрудниковСрезПоследних.ДействителенС, ПропускиСотрудниковСрезПоследних.ДействителенПо, ПропускиТССрезПоследних.Регистратор КАК Регистратор2, ПропускиТССрезПоследних.Идентификатор КАК Идентификатор2, ПропускиТССрезПоследних.ДействуетС, ПропускиТССрезПоследних.ДействуетДо ИЗ РегистрСведений.ДанныеОПосетителях.СрезПоследних КАК ДанныеОПосетителяхСрезПоследних, РегистрСведений.ПропускиСотрудников.СрезПоследних КАК ПропускиСотрудниковСрезПоследних, РегистрСведений.ПропускиТС.СрезПоследних КАК ПропускиТССрезПоследних |
|||
27
Я_Ника
18.05.15
✎
15:35
|
(22) вот эти поля в сообщении выше
|
|||
28
sapphire
18.05.15
✎
15:35
|
(26) Какая Вы жестокая, однако :))))
|
|||
29
Basilio
18.05.15
✎
15:37
|
(26) а как соединяешь?
|
|||
30
sapphire
18.05.15
✎
15:37
|
(29) Неужели не увидел?!
|
|||
31
sapphire
18.05.15
✎
15:38
|
(26) Вы действительно уверены, что запрос написан правильно?!!!
|
|||
32
Я_Ника
18.05.15
✎
15:39
|
нет! я ни в чем не уверена))) У меня туго с 1с
|
|||
33
Basilio
18.05.15
✎
15:41
|
(30) что не увидел? может у нее "ПО ..." ниже где нить))
|
|||
34
sapphire
18.05.15
✎
15:41
|
(32) Вы понимаете что выводит запрос в (26) ?
количество выводимых записей будет произведение количества записей в каждой таблице! |
|||
35
sapphire
18.05.15
✎
15:42
|
(33) С Вами, месье, тоже все понятно :)
|
|||
36
Basilio
18.05.15
✎
15:44
|
(35) полегче, просто невнимательно посмотрел) теперь вижу.
|
|||
37
sapphire
18.05.15
✎
15:47
|
ВЫБРАТЬ
"Данные о посетителях" Источник, ДанныеОПосетителяхСрезПоследних.Регистратор, ДанныеОПосетителяхСрезПоследних.ФИО, ДанныеОПосетителяхСрезПоследних.Идентификатор, ДанныеОПосетителяхСрезПоследних.С, ДанныеОПосетителяхСрезПоследних.До, ДанныеОПосетителяхСрезПоследних.Куда, ДанныеОПосетителяхСрезПоследних.Сопровождающий ИЗ РегистрСведений.ДанныеОПосетителях.СрезПоследних КАК ДанныеОПосетителяхСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пропуски сотрудников" Источник, ПропускиСотрудниковСрезПоследних.Регистратор ПропускиСотрудниковСрезПоследних.Сотрудник, ПропускиСотрудниковСрезПоследних.Идентификатор, ПропускиСотрудниковСрезПоследних.ДействителенС, ПропускиСотрудниковСрезПоследних.ДействителенПо, NULL, NULL ИЗ РегистрСведений.ПропускиСотрудников.СрезПоследних КАК ПропускиСотрудниковСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Пропуски ТС" Источник, ПропускиТССрезПоследних.Регистратор, NULL ПропускиТССрезПоследних.Идентификатор, ПропускиТССрезПоследних.ДействуетС, ПропускиТССрезПоследних.ДействуетДо NULL, NULL ИЗ РегистрСведений.ПропускиТС.СрезПоследних КАК ПропускиТССрезПоследних |
|||
38
sapphire
18.05.15
✎
15:48
|
(36) Вот :)
|
|||
39
Я_Ника
18.05.15
✎
15:57
|
(37) Господи!!!! Спасибо Вам огромное))) Я бы еще долго мучилась со всем этим без Вашей помощи.
|
|||
40
sapphire
18.05.15
✎
16:00
|
(39) В последнем запросе не хватает запятой после первого NULLа
|
|||
41
sapphire
18.05.15
✎
16:02
|
(39) Не за что.
Будьте внимательны, на больших объемах данных запрос контрукции как в (26) способен остановить систему :) |
|||
42
Я_Ника
18.05.15
✎
16:08
|
(40) ага) исправила
|
|||
43
Я_Ника
18.05.15
✎
17:11
|
(41) Извините за наглость. Но у меня есть еще один вопрос по СКД. Чтоб не раздувать больше тем пишу сюда. Нужен отчет "Посетители на территории". Данные должны поступать из двух регистров 1-ДанныеОПосетителях и 2-ДанныеОПроходах. В 2 фиксируется время прохода и тип прохода (вход или выход). Как сделать так, чтоб в отчете были посетители, у которых сегодня был зафиксирован вход, но не был зафиксирован выход?
ВЫБРАТЬ ДанныеОПроходах.ИдентификаторПосетителя, ДанныеОПроходах.ВремяПрохода, ДанныеОПроходах.ВходВыход, ДанныеОПосетителяхСрезПоследних.Идентификатор, ДанныеОПосетителяхСрезПоследних.ФИО ИЗ РегистрСведений.ДанныеОПосетителях.СрезПоследних КАК ДанныеОПосетителяхСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОПроходах КАК ДанныеОПроходах ПО ДанныеОПосетителяхСрезПоследних.Идентификатор = ДанныеОПроходах.ИдентификаторПосетителя |
|||
44
Креатив
18.05.15
✎
20:58
|
(43)Нужно левое соединение приходов за сегодня с отходами, а потом внутренне к ним и ходоков приклеить, чтобы они были в приходах и не было в уходах.
А что, много у вас народу теряется в день? |
|||
45
Креатив
18.05.15
✎
21:31
|
(44)+ Если по-человечески, то как-то так. Но без гарантии.
Комментарии стоит прочитать внимательно и заменить некоторые значения. ВЫБРАТЬ Приходы.ИД1, Приходы.ВремяВхода, Посетители.ФИО ИЗ (ВЫБРАТЬ ДанныеОПроходах.ИдентификаторПосетителя КАК ИД1, ДанныеОПроходах.ВремяПрохода КАК ВремяВхода ИЗ РегистрСведений.ДанныеОПроходах КАК ДанныеОПроходах ГДЕ ДанныеОПроходах.ВходВыход = ПРИХОД //или какого он там типа? ) КАК Проходы ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЕстьNull(ДанныеОПроходах.ИдентификаторПосетителя, 0) КАК ИД2 //на всякий случай ИЗ РегистрСведений.ДанныеОПроходах КАК ДанныеОПроходах ГДЕ ДанныеОПроходах.ВходВыход = УХОД//или какого он там типа? ) КАК Уходы ПО Приходы.ИД1 = Уходы.Ид2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОПосетителях.СрезПоследних КАК Посетители ПО (Посетители.Идентификатор = Приходы.ИД1) И (Посетители.Идентификатор <> Уходы.ИД2)//или ид2=0 |
|||
46
Креатив
18.05.15
✎
21:33
|
(45)+ ну и условия на то, что это сегодня добавить куда надо.
|
|||
47
Я_Ника
19.05.15
✎
11:34
|
(45) проверила. Запрос выводит и события входа и выхода. Т. е. не отсекаются те, кто не вышел
|
|||
48
Креатив
19.05.15
✎
12:10
|
(47)Так-то он должен выводить тех, кто сегодня вошёл и не вышел.
Покажи тот запрос, который у тебя получился. |
|||
49
Я_Ника
19.05.15
✎
12:17
|
(48) ой, я не тот отчет смотрела. Вообщем, это не выводит ничего.
ВЫБРАТЬ Приходы.ИД1, Приходы.ВремяВхода, Посетители.ФИО ИЗ (ВЫБРАТЬ ДанныеОПроходах.ИдентификаторПосетителя КАК ИД1, ДанныеОПроходах.ВремяПрохода КАК ВремяВхода ИЗ РегистрСведений.ДанныеОПроходах КАК ДанныеОПроходах ГДЕ ДанныеОПроходах.ВходВыход.Ссылка = Значение(Перечисление.ТипыПроходов.Вход)//или какого он там типа? ) КАК Приходы ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЕстьNull(ДанныеОПроходах.ИдентификаторПосетителя, 0) КАК ИД2//на всякий случай ИЗ РегистрСведений.ДанныеОПроходах КАК ДанныеОПроходах ГДЕ ДанныеОПроходах.ВходВыход.Ссылка = Значение(Перечисление.ТипыПроходов.Выход)//или какого он там типа? ) КАК Уходы ПО Приходы.ИД1 = Уходы.Ид2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОПосетителях.СрезПоследних КАК Посетители ПО (Посетители.Идентификатор = Приходы.ИД1) И (Посетители.Идентификатор <> Уходы.ИД2)//или ид2=0 |
|||
50
Креатив
19.05.15
✎
12:29
|
(49)Тогда возникает вопрос:"Что содержат идентификаторы в каждом из регистров?". И почему ты не добавила условия на дату событий?
|
|||
51
Я_Ника
19.05.15
✎
12:34
|
(50) Идентификатор это номер пропуска (Измерение). А условия на дату не добавила еще пока так ничего не выводит, за все время
|
|||
52
Креатив
19.05.15
✎
12:48
|
(51)Идентификаторы посетителей в твоих регистрах одинаковые для одного посетителя?
Попробуй без внутреннего соединения внизу и Фио верху. А тут условия на дату обязательно, а то система вздрогнет. Кстати, есть подозрение, что данный путь выявит одну неприятную ситуацию. Тебе придётся в корне менять подход. Но пока можешь "добить" этот вариант. |
|||
53
Я_Ника
19.05.15
✎
13:05
|
(52) А если я Идентификатор ресурсом сделаю, тогда не выводит поле идентификатор. Чтоб выводил каким запрос должен быть?
|
|||
54
Basilio
19.05.15
✎
13:07
|
(49) сделай вместо внутреннего полное соединение и посмотри какие данные выводятся. Сравни с условием соединения
|
|||
55
Креатив
19.05.15
✎
13:11
|
(53) Описание регистров в студию. Измерения и ресурсы с типами.
|
|||
56
Я_Ника
19.05.15
✎
13:37
|
Изменить регистры хочу потомучто, если пытаюсь записать еще одно событие входа или выхода для посетителя, то выскакивает сообщение "Запись с такими ключевыми полями существует"
ДанныеОПроходах: Измерения: ФИО: Строка Идентификатор: Число Ресурсы: ВремяПрохода: Дата ТипПрохода: ПеречислениеСсылка.ТипыПроходов |
|||
57
Я_Ника
19.05.15
✎
13:38
|
(56) Переодичность: с позиции регистратора
|
|||
58
Креатив
19.05.15
✎
13:48
|
(56)А данныеопосетителях?
|
|||
59
Я_Ника
19.05.15
✎
13:51
|
(58) Измерения те же, а ресурсы, которые там есть для этого отчета не используются
|
|||
60
Я_Ника
19.05.15
✎
13:54
|
А с регистром ДанныОПроходах дела так обстоят: в табличную часть не могу записать еще один проход. Пишет: запись с такими ключевами полями существует. А если создаю новый документ с теми же ресурсами и записываю туда новый проход, то не ругается. Но в отчет выводит и запись из этого документа даже если там был выход
|
|||
61
Я_Ника
19.05.15
✎
14:00
|
И еще, у меня в ДанныеОПроходах записи из нескольких документов, т. е. не только проходы посетителей, но и проходы сотрудников. Т. е. еще условие нужно, чтобы идентификатор был из документа ВыдачаПропускаСотруднику
|
|||
62
sapphire
19.05.15
✎
14:06
|
(56) ПеречислениеСсылка.ТипыПроходов
Вход,Выход,Насквозь? :) |
|||
63
Я_Ника
19.05.15
✎
14:16
|
нет, только вход и выход
|
|||
64
Креатив
19.05.15
✎
14:16
|
(59)Какой-то ужас. Если есть регистр ДанныеОПосетителях(почему не справочник), то в ДанныхОПроходах не должно быть ФИО,а только идентификотор посетителя.
(60)При периодичности регистратор двух записей с одинаковыми измерениями быть не может. |
|||
65
Креатив
19.05.15
✎
14:17
|
(64)Сделай периодичность в пределах секунды.
|
|||
66
sapphire
19.05.15
✎
14:20
|
(64) Судя по всему, пилит какой-то свой СКУД:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |