Имя: Пароль:
1C
1C 7.7
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 дня"
Программист всегда исправляет последнюю ошибку.