|
v7: Подскажите алгоритм 7.7 | ☑ | ||
---|---|---|---|---|
0
Gamover
15.06.13
✎
10:39
|
Парни, подскажите алогоритм....
Есть справочник "ЗаявкиНаРемонт" в нем скажем 3 реквизита -ДатаЗаявка -ДатаВыполнения -Подъезд (Элемент справочника Подъезды) Надо сделать отчет и выводить заявки если они повторялись в течении 3 дней. То есть сделали заявку с датой 15.06.2013 Подъезд1, если этот же подъезд будет в завтрашней заявке он должен попадать в отчет. |
|||
1
КапЛей
15.06.13
✎
10:52
|
в чем логика делать такой справочник?
|
|||
2
Gamover
15.06.13
✎
10:53
|
Не знаю... но он уже очень большой.
|
|||
3
Wobland
15.06.13
✎
10:54
|
это ж документ по смыслу
|
|||
4
Gamover
15.06.13
✎
10:54
|
Да. С документом проблем бы вообще небыло. Но это справочник..
|
|||
5
Aleksey
15.06.13
✎
10:57
|
(3) А какая разница?
|
|||
6
Aleksey
15.06.13
✎
10:58
|
вот объясните мне в чём логика делать его документом, который
будет в общем журнале (который не резиновый). При этом будут расти индексы журнала, что тоже время на запись и поиск |
|||
7
Gamover
15.06.13
✎
10:59
|
Парни... че с алгоритмом то?)
|
|||
8
Aleksey
15.06.13
✎
11:00
|
(7) опиши решения задачи в случае если бы это был документ. Ты же сказал, что в этом случае проблем бы небыло
|
|||
9
Wobland
15.06.13
✎
11:00
|
(6) да документы вообще зло
|
|||
10
Gamover
15.06.13
✎
11:02
|
В день может быть по несколько десятков заявок. Период за который необходимо просматривать не повторялась ли заявка задается в диалоге.
|
|||
11
Aleksey
15.06.13
✎
11:02
|
(9) Я не говорил что документы зло. Я лишь сказал, что в данном случае не принципиально что это документ или справочник. Так как по сути движения тут нет никакого, просто фиксаия событий носящие справочную информацию
|
|||
12
Aleksey
15.06.13
✎
11:02
|
(10) И что? продолжай.. решения покажи в случае если бы это был бы документ
|
|||
13
Gamover
15.06.13
✎
11:03
|
(8) ну там можно было бы
ВыбратьДокументы(<Дата1>,<Дата2>) |
|||
14
Aleksey
15.06.13
✎
11:03
|
(13) Дальше что? Здесь тоде самое можно, просто запросом с условием по ДатаЗаявка
|
|||
15
Aleksey
15.06.13
✎
11:04
|
выбрал ты документы, у тебя выборка с неким списком. но это еще не решения твоей задачи. Что ты с выборкой делал бы.
|
|||
16
Gamover
15.06.13
✎
11:04
|
Я сделал запросом... Запрос в цикле... обработка будет выполняться несколкьо часов.
|
|||
17
Aleksey
15.06.13
✎
11:06
|
(16)А выбрать документы - это не тот же самый запрос? Или он будет медленее делать? И кстати проверь чтобы ДатаЗаявка была проиндексированна (отбор стоял бы по ней)
|
|||
18
Gamover
15.06.13
✎
11:08
|
ВыбратьДокументы работает шустрее. Да и выбирать то надо за 3 дня и берем след. элемент. А запрос чето долго вообще работает.
|
|||
19
Aleksey
15.06.13
✎
11:09
|
(18) Дата индексируется у тебя или нет?
|
|||
20
Aleksey
15.06.13
✎
11:10
|
поставь 1CSqlite и напиши прямой запрос, будет быстрее
|
|||
21
Gamover
15.06.13
✎
11:10
|
Ща будет)... небыло галки
|
|||
22
Gamover
15.06.13
✎
11:11
|
Должно быстрее работать?
|
|||
23
Gamover
15.06.13
✎
11:16
|
Чето не на много быстрее...
А без Запроса в цикле, есть мысли как написать? |
|||
24
Aleksey
15.06.13
✎
11:16
|
(23) есть, но она тебе не понравится
|
|||
25
Aleksey
15.06.13
✎
11:23
|
добавляем еще один реквизит "РеквизитДляПоиска" тип строка, ставим галку "Сортировка"
При записи пишем тут ""+Дата + Подъезд.Код (или любой другой уникальный реквизит справочника подъезд) Далее в отчете пишем ДругиеРаботы=СоздатьОбъект("Справочник.ЗаявкиНаРемонт"); СписокДругихРабот=СоздатьОбъект("СписокЗначений"); ... СписокДругихРабот.УдалитьВсе(); Для й=0 по 2 цикл ДругиеРаботы.ВыбратьЭлементыПоРеквизиту("РеквизитДляПоиска",""+(ВыбЭлемент.Дата+й)+ВыбЭлемент.Код); Пока ДругиеРаботы.ПолучитьЭлемент()=1 цикл СписокДругихРабот.ДобавитьЗначений(ДругиеРаботы.ТекущийЭлемент()); КонецЦикла; Если СписокДругихРабот.РазмерСпискка>2 тогда //это наши работы, выводим в отчет КонецЕсли; |
|||
26
Gamover
15.06.13
✎
11:33
|
(25) Ща попробую... спс
|
|||
27
Torquader
16.06.13
✎
22:39
|
Чтобы быстро выполнялось, нужно проверять условие "ДатаЗаявки=ДатаВыборки" - будет три выборки, если поле "ДатаЗаявки" индексируемое, то запрос по совпадению будет работать быстрее, чем сравнение (ДатаЗявяки>ДатаНачалаВыборки).
И, на самом деле, если хочется сделать чудо, то Справочник "Заявка" делаем подчинённым справочнику "Подъезд", тогда при установке галочки "Сортировка" у "ДатаЗаявки" получаем сложный индекс для даты, и можем выбирать через "ИспользоватьРодителя" прямо по сложному индексу. |
|||
28
big
17.06.13
✎
05:52
|
Лучше сделать документом, потому как сущностей и понятий у заявки гораааздо больше, чем просто фиксация даты, времени и подъезда. Скорее всего в рамках общей идеи там будет и расчеты по услугам, материалам, затратам на оплату труда и т.д. и т.п.
|
|||
29
ЧеловекДуши
17.06.13
✎
07:18
|
"Тема сисек не раскрыта..." (с)
Какова структура справочника "Подъезд (Элемент справочника Подъезды) "? Опиши её пожалуйста, так думать будет легче :) |
|||
30
Плот
17.06.13
✎
07:32
|
(0) Выгрузить справочник в ТЗ, добавить колонку ("флаг"). ТЗ свернуть по нужным условиям. Если флаг> 3 то делаем что то дальше. На следующем шаге проверить справочник на "подряд 3 дня"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |