|
регистр сведений | ☑ | ||
---|---|---|---|---|
0
servicenn
25.04.13
✎
10:52
|
День добрый есть регистр сведений
измерения -работа -деталь ресурс -выполнена запросом на 25 апреля получаем срез последних (список деталей по которым работа выполнена на 25 апреля) Можно ли в одном запросе совместить, взять несколько дат среза например 23,24,25 апреля и вывести общую информацию(информация может быть противоричивой но мне важен принцип можно ли так сделать ) |
|||
1
servicenn
25.04.13
✎
10:54
|
Тоесть по каждой дате среза делаем запрос и все данные суммируем, как это сделать в одном запросе
|
|||
2
zak555
25.04.13
✎
10:55
|
ты бы лучше разбил регистр на два : планируемое к выполнению и выполненные
|
|||
3
В тылу врага
25.04.13
✎
10:55
|
еще раз, тебе РН нужен
|
|||
4
Cyberhawk
25.04.13
✎
10:56
|
(1) выборку делай не из среза последних, а из основной таблицы регистра
|
|||
5
zak555
25.04.13
✎
10:58
|
(3) зачем рн ?
|
|||
6
servicenn
25.04.13
✎
10:59
|
(2) это немного не в ту сторону
|
|||
7
servicenn
25.04.13
✎
10:59
|
(4) как вариант в чём отличие основное?
|
|||
8
Cyberhawk
25.04.13
✎
11:03
|
(7) скорость выполнения запроса, вероятно, будет меньше на больших данных.
Как правило, периодический регистр сведений заводят, чтобы пользоваться как раз-таки срезом последних, отсюда вопрос: тебе срез последних на три даты для чего нужен? Пример: есть две работы "Сборка Лада Гранта" и "Сборка Лада Калина", есть четыре детали: "Двигатель", "КПП", "Подвеска", "Кузов". Тебе какая нужна общая информация? История состояний по детали "КПП" в разных работах? Или наоборот: состояния всех деталей в рамках одной работы? |
|||
9
servicenn
25.04.13
✎
11:09
|
(8) Упростил начальную формулировку,придётся подробней там фишка в том что работа разовая, и в определённую дату даётся задание на работу тоесть делается движение по данной детали с данной работой с ресурсом невыполнено, но клиент с данной деталью может появится в любой момент и когда он приносит деталь в документе появляется что на данную деталь заведена работа и она не выполнен и необх её выполнить
|
|||
10
servicenn
25.04.13
✎
11:10
|
После чего в документе указывается данная работа, проводим получаем статус ресурса выполнено
|
|||
11
servicenn
25.04.13
✎
11:11
|
Надо отловить за определённый период все доки когда деталь принесли а заведённое задание по ней забыли выполнить( тоесть ранее по ней есть движение со статусом невып) а делали какие то другие работы
|
|||
12
Cyberhawk
25.04.13
✎
11:13
|
(11) могу предложить изврат: делай выборку из основной таблицы регистра, но поставь фильтр, чтоб детали были не в списке, а список - вложенный запрос среза последних на текущую дату со статусом "выполнено". Ну т.е. выбираем кусок регистра и убираем из него все выполненные на данный момент
|
|||
13
servicenn
25.04.13
✎
11:13
|
например 10 апреля завели задание тоесть в регистре по данной детали и работе статус невып, 15 апреля клиент пришёл с этой деталью, и данную работу забыли сделать, делали другие пришёл ещё раз 20 и сознательный товарищь сотрудник указал её в документе провёл и выполнил, соотвтественно за апрель нам нужно поймать документ за 15 апреля где забыли указать данную работу
|
|||
14
В тылу врага
25.04.13
✎
11:13
|
(5) остатки получать по дням
|
|||
15
servicenn
25.04.13
✎
11:14
|
Пока что делаю цикл , перебираю даты и по каждой дате запрос тоже изврат возможно но просто и надёжно. стало интересно моджно ли одним запросом сделать
|
|||
16
servicenn
25.04.13
✎
11:14
|
(14) остатки не причём это рег сведений
|
|||
17
Cyberhawk
25.04.13
✎
11:15
|
(13) напиши сюда движения, которые делает каждый документ за 10, 15 и 20 апреля
|
|||
18
servicenn
25.04.13
✎
11:16
|
10 апреля
деталь1 работа 1 невыполнено 15 апреля движений нет (по срезу последних то же что и 10 ) 20 апреля деталь1 работа1 выполнено |
|||
19
В тылу врага
25.04.13
✎
11:17
|
(16) смотри сам
|
|||
20
servicenn
25.04.13
✎
11:18
|
(19) остатков нет как таковых детали не наши клиент приносит работу сделать
|
|||
21
Cyberhawk
25.04.13
✎
11:18
|
(18) Хм, а как по-твоему программа должна определить, что нужно выцепить именно 15 апреля, а не 11 или 18? Если движений в регистре только два: за 10 и 20 апреля
|
|||
22
servicenn
25.04.13
✎
11:20
|
если сделать скажем выборку на 16 с отбором по невыполненным и левым соединением прицепить доки по детали то получим то получим этот док от 15 апреля где указана деталь но сделаны другие работы а данная работа не указана
|
|||
23
zak555
25.04.13
✎
11:20
|
(14) ему же нужен план/факт по работе/детале
|
|||
24
Cyberhawk
25.04.13
✎
11:21
|
У меня в голове не сходятся (18) и (22): либо движения все-таки есть, либо выборка идет по документам
|
|||
25
servicenn
25.04.13
✎
11:21
|
(23) возможно , как сделать план факт?
|
|||
26
В тылу врага
25.04.13
✎
11:22
|
(23) тогда РН обороты ))
|
|||
27
servicenn
25.04.13
✎
11:22
|
(24) в запросе получаем две таблицы из регистра и таблицу с документами, записи соединяем по детали. поскольку в доке указана деталь
|
|||
28
Cyberhawk
25.04.13
✎
11:24
|
(27) соединяться с документами - некорректно (сам поймешь почему?), переделывай движения документа
|
|||
29
servicenn
25.04.13
✎
11:27
|
есть деталь и невып работа по ней, левым соединением находим док с деталью где не сделали работу, ну по крайней мере у меня работает , тестировал много разных возможных ситуаций все находит доки эти :)
|
|||
30
servicenn
25.04.13
✎
11:28
|
но это по конкретной дате среза
|
|||
31
servicenn
25.04.13
✎
11:30
|
такой запросец, название только другие изначально упростил чтобы понятней было
ВЫБРАТЬ ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Период КАК Период, ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Автомобиль, ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Автомобиль.VIN, ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Акция, ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Документ , ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Выполнено, АктВыполненныхРабот.Дата, АктВыполненныхРабот.Ссылка как Акт ИЗ РегистрСведений.ВыполнениеГарантийныхАкцийНовый.СрезПоследних(&ДатаСреза, ) КАК ВыполнениеГарантийныхАкцийНовыйСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК АктВыполненныхРабот ПО ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Автомобиль = АктВыполненныхРабот.Автомобиль ГДЕ ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Выполнено = ЗНАЧЕНИЕ(перечисление.ВидВыполненияАкцииНовый.НеВыполнено) //И ВыполнениеГарантийныхАкцийНовыйСрезПоследних.Автомобиль = &автомобиль И АктВыполненныхРабот.Дата >= &ДатаНач И АктВыполненныхРабот.Дата <= &ДатаКон И АктВыполненныхРабот.Дата <= &ДатаСреза УПОРЯДОЧИТЬ ПО Период |
|||
32
servicenn
25.04.13
✎
11:30
|
акция-работа
автомобиль-деталь |
|||
33
Cyberhawk
25.04.13
✎
12:46
|
(31) ну фигня же, хоть и работает. По фен-шую надо хранить факт "забыли и не выполнили" тоже в регистре
|
|||
34
servicenn
25.04.13
✎
12:52
|
как вариант, регистр задолго до меня создан
|
|||
35
Classic
25.04.13
✎
12:56
|
Фигово спроектирован регистр. Не для этих целей точно
|
|||
36
servicenn
25.04.13
✎
12:59
|
Конечно не для них) сразу невидно разве, это уже дополнительный запрос сотрудников вобщем то вещь необходимая
|
|||
37
servicenn
25.04.13
✎
13:01
|
Ну а вобще прежде чем сказать фигово,так любой может, сначала нужно свой вариант предложить ,
|
|||
38
Cyberhawk
25.04.13
✎
13:15
|
(34) понятно. Я почему-то подумал, что у тебя есть возможность переделать структуру и что разработка - молодая :) А по факту - есть задача, и для ее реализации не обязательно ломать конфигурацию.
По твоей задаче: пользователь задает период (дата 1, дата 2) и хочет увидеть некий список документов, где "что-то забыли". В твоем запросе у тебя регистр и доки соединены левым соединением, т.е. регистр первичен. Так что же пишет в регистр документ от 15 апреля? Авто+работу по другой работе? |
|||
39
servicenn
25.04.13
✎
13:29
|
(38)Регистр можно ещё доработать, структуру можно сделать, поскольку там несколько задач по этой теме и создал второй регистр а первый со временем отпадёт. я изначально упростил задачу, есть определённые работы называются акции, причём акция выполняется один раз и по каждой акции есть список автомобилей. Акции хранятся в отдельном справочнике (сделано до меня возможно и правильно) Тоесть приезжает автомобиль, на него заводится документ делаются работы и в этом же документе отдельное поля для указания акции, тоесть по акциям своего рода независимая система со своим регистром, от других работ в спр номенклатура
|
|||
40
servicenn
25.04.13
✎
13:30
|
Тоесть вся структура по акциям это справочник и регистр сведений по ним
|
|||
41
servicenn
25.04.13
✎
13:31
|
а ресурс в регистре имеет 4 значения,
выполнено не выполнено выполненоДругимДиллером отказклиента если правильно понял нужно добавить 5 значение, "пропущено" |
|||
42
Cyberhawk
25.04.13
✎
13:38
|
Итак, в каждом документе имеем реквизиты:
- дата - авто - акция (одна или ТЧ?) - список работ (ТЧ?) |
|||
43
servicenn
25.04.13
✎
14:12
|
акция - ТЧ одним документом можно несколько акций выполнить но по одному авто, тоесть документ можно завести на 1 автомобиль а акций по автомобилю может быть несколько
|
|||
44
Cyberhawk
25.04.13
✎
15:34
|
А чем тогда будут отличаться документы от 15 и 20 апреля из примера выше? Реквизит "Автомобиль" один и тот же, а набор акций разный?
|
|||
45
servicenn
25.04.13
✎
16:14
|
Относительно акций ничем поскольку 15 апреля по данному а\м акции не делались(по регистру акций движений 15 апр не было) статус остался невыполненным
|
|||
46
Cyberhawk
25.04.13
✎
19:08
|
(45) следовательно, пользователю надо выцеплять все документы за период, в которых был како-либо автомобиль, по которому ранее была "открыта" акция (помечена невыполненной), а позже изменила статус, так?
|
|||
47
servicenn
26.04.13
✎
08:25
|
Первая половина предложения правильно , ранее по а\м была открыта акция, потом завели документ на этот автомобиль и акцию не указали , вот такой документ и подобные и надо отловить
|
|||
48
servicenn
26.04.13
✎
08:28
|
Акция-гарантийная бесплатная, а\м приехал скажем со своей поломкой а диллер открыл акцию на определённые авто и по вин высвечивается что на этот автомобиль открыта гарантийная бесплатная акция и мастер приёмщик обязан предложить сделать её дополнительно к ремонту с которым приехал клиент, если онн просмотрел или забыл то надо поймать документ с таким случаем
|
|||
49
zak555
26.04.13
✎
10:48
|
(25) см. в (2)
|
|||
50
zak555
26.04.13
✎
10:49
|
(26) зачем оборот, если не известно, когда ( -=> неизвестен период запроса ) нужно будет узнать о плане/факте ?
|
|||
51
servicenn
26.04.13
✎
11:02
|
Планируемое к выполнению это фактически "не выполнено" так как в данном случае если к выполнению не планируется то движения по регистру отсутствуют. На практике приходит файл с новыми винами и акциями а\м. Загружаем и получаем после загрузки движения в регистре по данным а\м и акциям "невып"( тоесть это и есть план)
|
|||
52
hhhh
26.04.13
✎
11:26
|
(51) вы им вино с собой даете? А потом звоните на ближайший по пути пост ГАИ?
|
|||
53
servicenn
26.04.13
✎
15:24
|
конечно, прямо на выезде из автосервиса дпсника поставили
|
|||
54
Cyberhawk
28.04.13
✎
06:29
|
(47) Понимаете, загвоздка в том, что вам надо выцеплять из базы документы, которых в регистре нет. До них можно только косвенно добраться, узнав сначала, по каким авто есть невыполненные акции (один запрос к регистру), а затем соединяться с документами.
От совмещения среза последних на каждую дату в одном запросе желаемый к выцеплению документ в выборке не появится. Так что выборку из таблицы документов делать на данный момент всяко придется. Дальнейшие варианты: 1) выборка из регистра: все авто с невыполненными на сей момент акциями, потом выборка документов с автомобилями из первой выборки, но без реквизита "Акция" 2) переделать движения документа, чтобы _все_ документы присутствовали в регистре (например, делать запись в регистр с пустой акцией) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |