Имя: Пароль:
1C
1С v8
РегистрСведений, многие ко многим, очистить из записей СрезПоследних - как?
,
0 Минона
 
10.07.19
15:16
Есть конкретная задача - вести учёт оборудования на рабочих местах, по сути ОС.
Выбрали решение Регистр сведений с 2мя измерениями - РабочееМесто и ОС.
Периодический.

Но никак не можем решить под-задачу "Что происходит при уходе ОС?"
Т.е. надо сделать "выбытие" ОС с этого рабочего места
и (!!) сделать так, чтобы в срезе последних не было записи, т.е. чтобы итоговая таблица СрезПоследних была полегче.
История при этом сохранится, из-за периодичности.

Или вообще решение не то (тогда направьте в другую сторону) или непонятно как сделать именно "удаление" записи соответствия РабМесто+ОС на Период.
1 butterbean
 
10.07.19
15:23
а чо не регистрНакопления?
2 Минона
 
10.07.19
15:26
накапливать особо нечего, каждое ОС - уникально (инв. и серийный номер)
Разве что писать  +1  и -1
Если не получится РегСведений - то конечно накопление сделаем
3 butterbean
 
10.07.19
15:31
(2) ну сделайте вообще без регистра, какой-нибудь реквизит в справочнике ОС меняйте и всё
4 butterbean
 
10.07.19
15:32
(3)+ или таб часть с историей
5 Минона
 
10.07.19
15:44
не очень подходит, есть подзадачи, типа "Сотрудники <-> Рабочие места"
Поэтому хотелось бы единообразно, регистром.
6 Cyberhawk
 
10.07.19
15:54
"чтобы итоговая таблица СрезПоследних была полегче" при наличии там записей не получится
7 zwolf
 
10.07.19
15:54
(5) Заведите рабочее место "Корзина"
8 Минона
 
10.07.19
15:56
(6) т.е. получается, что из РегистраСведений периодического удалить некую запись соответствия из СрезаПоследних - невозможно, так?
9 Cyberhawk
 
10.07.19
15:59
(8) Срез последних для простоты (не берем в расчет таблицу итогов среза последних в новых релизах платформы) считай что это виртуальная таблица, строится по основной таблице. Соответственно, пока есть записи в регистре, то и в срез они будут попадать.
10 ИУБиПовиц
 
10.07.19
16:12
А у вас что, миллионы записей в регистре будут, что хотите полегче регистр?
Попробуйте сделать реквизит  - статус (В работе, выбыл) и срез последних делайте с условие не выбыл.
11 Минона
 
10.07.19
16:34
(10) Миллион, не миллион, а архитектуру продумывать надо заранее.
Сам принцип пытаюсь понять.

(9) Так работаем то на свежих релизах.
Пытаемся выбрать именно "правильное решение", задача то обычная, может есть какие рекомендации - как именно хранить подобные данные.
12 Cyberhawk
 
10.07.19
16:45
(11) Чтобы продумать архитектуру, надо знать процесс во всех точках на трех уровнях: ввод данных, их изменение и их получение
13 Минона
 
10.07.19
16:55
(12) Документом вводят 2 вида комплектации - "Рабочее место + ОС" или "Сотрудник + Рабочее место"
Документом перемещают, 2 вида операции - ОС на другое рабочее место, либо сотрудника на другое рабочее место, либо отмечают выбытие ОС, увольнение сотрудника, "закрытие" рабочего места.
Получение - это отчёты, об истории движения ОС, либо о сотруднике - где сейчас работает/ ранее работал и какие ОС на этом рабочем месте.
14 Cyberhawk
 
10.07.19
16:57
Остаточный регистр накопления тогда: ввод рабочего места в плюс, выбытие / закрытие - в минус, перемещение - плюс-минус
15 Cyberhawk
 
10.07.19
16:57
Недостаток: со сверткой регистра потеряется история
16 ptiz
 
10.07.19
17:06
(15) А вы не сворачивайте.
17 Жан Пердежон
 
10.07.19
17:18
(11) так выключите итоги тогда
18 Rovan
 
гуру
10.07.19
17:31
(+7) да.... или признак "Выбыл (Списан)"
19 Минона
 
10.07.19
17:38
(17) Итоги регистра сведений где выключаются? Вы про СрезПоследних ?
20 Жан Пердежон
 
10.07.19
17:59
(19) в конфигураторе
а ещё вот это неплохо почитать
https://its.1c.ru/db/v8std#content:708:hdoc
21 Минона
 
10.07.19
18:14
(20) Спасибо за информацию.

Но нам как раз НУЖЕН СрезПоследних, чтобы быстро определять "Кто где сидит и каким компом пользуется", по при этом мы не хотим перегружать РегСведений лишними записями в СрезПоследних.
22 palsergeich
 
10.07.19
18:23
(21) Ужас какой.
А нас потом на партнерке за такие решения и не слушают.
23 palsergeich
 
10.07.19
18:28
По методологии 1С, ну по краней мере что нам там втирают Ваша задача решается 2 РС.
1) История ОС. Измерения РабочееМесто и ОС Периодический или нет, на вкус
2) Текущиее мето ОС Измерение ОС Ресурс - Рабочее место, дата ввода
Это 1 с детка.
24 Garykom
 
гуру
10.07.19
18:30
(0) Связь Один (Рабочее место) ко Многим (ОС)

ОС в измерение, Рабочее место в ресурс.
Завести служебное рабочее место (списано) и для списанных ОС его устанавливать.
25 palsergeich
 
10.07.19
18:30
(23) Ну соответственно если в п1) регистр непериодитеский - то надо в ресурс запихать дату. Но скорее всего периодичность тут уже не нужна. И в ресурс же надо записать что то ТипДвиженияОС.
Оба регистра - подчиненные регистратору.
26 Garykom
 
гуру
10.07.19
18:31
(23) (25) Слишком сложно когда можно проще (24)
27 Жан Пердежон
 
10.07.19
18:31
(21)
СрезПоследних у вас будет в любом случае;
Лишние" записи" только у вас в голове, для РС они совсем не лишние;
одна запись на каждый выбывший объект в таблице итогов - такая "перегрузка" даже обсуждения этого не стоит
28 palsergeich
 
10.07.19
18:31
(24) Не, канонично 2 регистра.
Один историю
2ой - оперативное состояние.
Это более правильно
29 Garykom
 
гуру
10.07.19
18:32
(28) Зачем когда достаточно одного регистра и для истории и для состояния?
30 palsergeich
 
10.07.19
18:40
(29) При большом количестве ОС и Рабочих мест - потенциальная опасность
31 palsergeich
 
10.07.19
18:42
(30) В плане производительности.
Если хранить срез последних расчитанным - долгая запись.
Если вычислять, особенно не с детализацией конкреноеОС\конкретное рабочее место, тоже опасность
32 palsergeich
 
10.07.19
18:44
(31) А так будут и волки сыты и овцы целы.
Притом гарантируб, там кучу всяких еще служебных полей, которые в задаче не обозначены, но 100% будут
33 Garykom
 
гуру
10.07.19
18:47
(31) Срез последних лучше банально реквизитом в справочнике у ОС хранить, куда текущее рабочее место записано ))
34 palsergeich
 
10.07.19
18:49
(33) Вот смотри.
Перемещение ОС - документ.
Документом меняешь Рабочее место -> меняешь реквизит справочника.
А потом берешь и отменяешь проведение документа.
Что будет?
1) Говня, когда данные не совпадают с реальными учетными.
2) Много кода, что бы это предотвратить
+ Постоянное дергание справочникОбъект.
35 palsergeich
 
10.07.19
18:53
(34) я уже не говорю о возможности менять реквизит справочника намеренно или случайно.
Да с 2 мя регистрами при отмене проведения без доп кода никак, но его будет минимум.
36 Garykom
 
гуру
10.07.19
18:55
(34) При отмене берем из РС предыдущее место
37 Garykom
 
гуру
10.07.19
18:56
Короче я согласен что мало данных чтобы решить как правильно.

Но чем больше разных РС тем больше проблем с их рассинхронизацией, что и происходит постоянно в последних типовых типа УТ11, КА2 и ERP, особенно с работой задним числом и интеркампани.
38 palsergeich
 
10.07.19
18:56
(36) и получаем Справочник объект меняем в нем реквизит и записываем.
+ Юзер пошел прошаренный и поиск и замену ссылок умеет.
39 azernot
 
10.07.19
18:58
Правильно ли я понимаю следующие моменты:
1. Одно ОС может быть только на одном рабочем месте в каждый момент времени.
2. На одном рабочем месте может быть несколько ОС в каждый момент времени.

В этом случае, подходит обычный РегистрСведений
ОС - Измерение
РабочееМесто - ресурс

При окончательном выбытии, в рабочее место пишется ПустаяСсылка.
Ещё как вариант дополнительный булевый ресурс "НетВНаличии". В момент выбытия, делается запись по ОС и последнему рабочему месту с НетВНаличии = Истина. При снятии среза последний по наличию ОС устанавливается фильтр "НетВНаличии = Ложь"
40 palsergeich
 
10.07.19
18:59
(37) Дело не в РС, а в том, что в любой реализации надо предусмотреть некорректные сценарии.
Разработчики типовых в этом плане меня разочаровывают, я 10 часов потратил на поиск ошибки в новой системе взаимозачетов.
При проведении почему то захотелось в закрытый период залезть, хотя в этом не было необходимости, всю голову сломал, но нашел таки. Решение было ещё более неочевидным.
41 palsergeich
 
10.07.19
19:00
(39) зачем хранить состояние выбытого ОС?
42 azernot
 
10.07.19
19:01
(41) Не понял вопрос. Мы храним только историю перемещений ОС и его выбытия.
43 palsergeich
 
10.07.19
19:02
(42) ну по канонам надо хранить историю и оперативное состояние, но как показала практика - делать это надо в отдельных сущностях.
44 palsergeich
 
10.07.19
19:03
(43) потому что при расширении функционала - это становится головной болью.
45 Минона
 
10.07.19
19:07
(39)(42) После выбытия нам не нужна (!) запись об ОС в "остатках", в СрезеПоследних.
Вот эту проблему при использовании периодического РС не удаётся решить.
46 azernot
 
10.07.19
19:07
(43) Если состояний больше чем 2 (в наличии/не в наличии), то я согласен.
Для данной задачи, в постановке ТС для отслеживния местонахождения ОС в наличии - достаточно одного регистра.
47 palsergeich
 
10.07.19
19:09
(46) Я на эти костыли уже наступил как раз в том же учете ОС, предлагаю проверенное решение.
Дело хозяйское.
Мое дело предложить.
48 azernot
 
10.07.19
19:09
(45) Я и указал, для того чтобы не получать эту запись, надо наложить соответствующий фильтр "НетВНаличии = Ложь" или "НЕ РабочееМесто  = Значение(Справочник.РабочиеМеста.ПустаяСсылка)"
При выбытии ОС при выборе любого метода реализации задачи, это самое выбытие нужно где-то регистрировать.
49 palsergeich
 
10.07.19
19:12
(48) Выбытие хранится в истории.
50 Garykom
 
гуру
10.07.19
19:14
(45) А после выбытия ОС вы элементы справочника удаляете или может быть используете их "для экономии" под вновь поступившие ОС ? :)
51 palsergeich
 
10.07.19
19:15
(50) А ты я смотрю прошаренный)
52 lEvGl
 
гуру
10.07.19
19:34
(45) всего не читал, но в (10) сказали правильное решение
срез последних с условием ГДЕ Выбыл = Ложь даст нужный результат, выбывшее ОС не попадет
53 catena
 
11.07.19
05:17
(21)Вы хотите странного. Либо у вас есть история и есть записи, либо после выбытия чистите все записи по этому ОС и лишаетесь истории. Сколько их там у вас, что вы так боитесь "перегрузки" регистра?
54 Сияющий в темноте
 
11.07.19
08:45
(53) они поди каждый коврик для мыши учитывают.
ну если не хочется флаг выбытия,то можно в регистре поставить дату окончания события и выбирать по дате,тогда нужно будет просто проставить дату окончания к предыдущему событию при записи нового и к текущему при удалении.
от флага отличается тем,что мы точно знаем дату окончания каждого события.
55 ptiz
 
11.07.19
08:49
Я так и не понял - почему остаточный РН отвергли?
56 ptiz
 
11.07.19
08:51
Хотя, по большому счету, даже 100 тыс. ОС - это фигня для СрезаПоследних.
57 Sayan_mi
 
11.07.19
09:44
Интересно а временного перемещения или передачи сотруднику нет, так чтобы по окончании само назад вставало. Если есть, то ещё бы и аналог интервального регистра из ЗУП не помешало бы.
58 ИУБиПовиц
 
11.07.19
11:16
(57) А чем не устраивает вариант с реквизитом состояние.
И временное перемещение легко будет сделать, и запрос с срезом можно с условием по нему сделать.
Или вообще ОС  в ресурсы переместить. (если есть возможность конечно)
И тогда выбытие легко делать.
типа Ноутбук  - раб место 1 01.07
Ноутбук - раб место 2 10.07
Срез будет показывать, что ноутбук на раб месте 2 чистится, а срез до 10 на раб месте 1.
У нас например примерно так и сделано, только еще в ресурсы запихнули МОЛ и Помещение. Работает.
59 Минона
 
11.07.19
11:42
Решили всё таки делать через РегистрНакопления (РН, 2 штуки).
Задача не стояла в формате "не использовать статус", использовать его без проблем.

В целом - было непонятно, каким образом можно исключить данные из таблицы РегистраСведений "СрезПоследних".
Задача оказалась нерешаемой, и можно сказать что тут 1С неплохо бы доработать этот момент.
Поэтому отказались от РС в пользу РН.
60 Жан Пердежон
 
11.07.19
12:41
(59)
мде, тут столько советов неплохих дали, а сделали всё равно херню.
рано вам еще, похоже, архитектурой заниматься
61 Simod
 
11.07.19
13:30
(0) Решение в (23) самое нормальное. Оно избыточно для простых случаев, но обладает запасом по масштабируемости. Если не хотите дополнительную таблицу "СрезПоследних", то не делайте РС периодическим. Виртуальная таблица "СрезПоследних" реализуется обычным запросом (http://catalog.mista.ru/public/527518/#Как_работает_СрезПоследних_в_запросе).
62 azernot
 
11.07.19
13:56
(59) С одной стороны, нет особого смысла в регистре накопления, у которого в ресурсе "Количество" всегда будет 1.
Но, с  другой стороны, всегда есть что-то типа оборотно-сальдовой ведомости, которую можно вертеть в различных изменениях и периодичности, без особых затрат на разработку отчётности.
Осталось непонятным, зачем 2 штуки РН, но вам, очевидно, виднее.
63 Минона
 
11.07.19
14:30
(62) ранее в итерации решения было "Всё-в-одном", сейчас решили разделить при переделке.
функциональное разделение:
1) Петров может сидеть за столом N1 или N2 (какой свободен)
2) На столе N1 стоит телефон 111 и комп с IP 111, на столе N2 соответственно другое оборудование

Звонит Петров. Служба поддержки видит номер 111, слышит фамилию Петров. 1С:ServiceDesk по фамилии "Петров" находит "111" и "222", а специалист выбирает и подключается к компу "111" для решения вопросов.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.