Имя: Пароль:
1C
 
помогите придумать алгоритм выборки
0 rchervak
 
29.04.15
21:20
всем добрый вечер.

никак не могу сделать следующее:

есть два одинаковых по структуре документа:
график дежурств и изменение графика дежурств.

график дежурств обязательный к заполнению.
изменение графика нет. если создается изменение - то в него записываются все записи из графика + изменения.

оба пишут в регистр сведений записи:

сотрудник, дата дежурства итд.

задача выбрать записи по сл. принципу:
если в месяце есть документ Изменение графика - то выбрать записи только его, если изменений не было - то записи из Графика дежурст.

В выборке получается надо в параметрах регистра сведений указать этот отбор.

если сделать вот так:

регистр ссылка Документ.ИзменениеГрафика

то выберутся только записи из изменения графика. а как сюда добавить еще записи из графиков дежурств по которым не было изменений?
1 User_Agronom
 
29.04.15
21:24
(0) Регистр периодический? Срез последних не поможет?
2 rchervak
 
29.04.15
21:28
да регистр периодический. и да. использую срез последних.

но тут такая загвоздка.

Например Сотрудник Иванов в графике должен дежурить 10 мая
Запись создалась
Иванов 10 мая

Далее переиграли и 10 мая дежурит Петров
Запись: Петров 10 мая

В итоге в Срезе последних:
Запись: Петров 10 мая


Но вот загвоздка - бывает что никто не дежурит 10 мая.
тога я получаю в срезе:
Иванов 10 мая

а мне надо получить пусто.
3 rchervak
 
29.04.15
21:29
поэтому я и хочу разграничить отбор по документам с условием- чтобы если было изменение - он мне ничего не тянул из графика. так как он не актуальный теперь
4 User_Agronom
 
29.04.15
21:33
Т.е. изменения графика не только назначают другого человека, но и снимают назначенного ранее. Т.е. могут оставить в графике пустое место?
5 rchervak
 
29.04.15
21:35
Да. подставляют вместо Сотрудника - пустое значение.
6 rchervak
 
29.04.15
21:36
либо корректируют.
могут добавить записи.

в общем как Изменение создается - по сути Движения графика больше не актуальны.
7 User_Agronom
 
29.04.15
21:40
(6) Наверняка нетленка какая-нибудь. А просто последний документ по дате из этих двух ковырнуть? Похоже он один будет отражать истинную ситуацию (если даже пустыми строками перекрывает назначенные смены)
8 rchervak
 
29.04.15
21:41
есть конечно вариант - заставлять в любом случае создавать Изменение графика. он заполняется автоматически при создании, на основании графика . И отбирать записи только по документу - ИзменениеГрафика. но это уже последний вариант. если не придумаю как отобрать
9 User_Agronom
 
29.04.15
21:43
(8) Выбрать
Ссылка, Дата
поместить ОбщийСписок
из Документы.График

объединить все

Выбрать
Ссылка, Дата
из Документы.ИзменениеГрафика

;
Выбрать
Ссылка, дата
из ОбщийСписок
упорядочить по дата убыв


И бери первый найденный. Не?
10 rchervak
 
29.04.15
21:44
ща попробую
11 Garykom
 
гуру
29.04.15
21:49
(2) а слабо в этом случае перекрыть иванова изменением графика?

т.е. документ "изменение графика" должен все записи из исходного "графика дежурств" переписывать либо на те же самые либо на другие

как отражать/показывать это и вводить в "изменении графика" на ваше усмотрение, моя бы таблицу полностью из "графика дежурств" дергать и измененные записи показывать

да еще предусмотреть "изменение графика" другим "изменением графика" ))
12 rchervak
 
29.04.15
21:52
(11)да кстати. правильно написали. Бывает несколько изменений.
13 rchervak
 
29.04.15
22:40
а если такой вариант:

Указать в отборе -Регистратор В(&СпискоДокументов)

а этот список формировать программно. перед выполнение запроса.

только не знаю возможно ли такое? и как это реализовать
14 rchervak
 
29.04.15
22:41
просто отчет на скд.
15 rchervak
 
29.04.15
22:42
программно с выводом в макет я бы уже сделал.
но блин хочется на скд
16 Garykom
 
гуру
29.04.15
22:45
Вообщем добавь в регистру еще дату окончания действия изменения, причем ведущим

Т.е. любое изменение графика оно же "временное" в отличие от "графика дежурств"
17 User_Agronom
 
29.04.15
23:00
(13) Массив и передавай в параметры СКД
18 RomanYS
 
30.04.15
00:35
(0) добавь дату измерением, а период используй как дату регистрации изменений, тогда срез будет давать актуальные данные