Имя: Пароль:
1C
1С v8
регистр сведений
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) переделать движения документа, чтобы _все_ документы присутствовали в регистре (например, делать запись в регистр с пустой акцией)