Коллеги, нужно авторитетное мнение, как правильно организовать данные.

Пишем конфу по учету ж.д. вагонов на территории предприятия. Жизненный цикл «вагона» такой: прибывает на территория, катается по путям на территории, убывает с территории. Практически на каждом вагоне установлены от одного до нескольких десятков запорном-пломбировочных устройств (далее ЗПУ). Каждое ЗПУ характеризуется видом и номером. Когда вагоны прибывает на нем установлены некий набор ЗПУ, в процессе того как он (вагон) «шарахается» по территории эти ЗПУ снимают и устанавливают другие. Вопрос в том, как правильно организовать хранение данных истории снятия/установки ЗПУ.

Если проще, то вопрос сводится к тому, как правильно организовать хранение периодической табличной части?
---
Предлагаю вариант структуры для Вашей задачи:
Вагоны. Справочник.
ВидЗПУ. Справочник или перечисление. Вам лучше знать.
ЗПУ. Справочник. Реквизиты "ВидЗПУ" и "НомерЗПУ".
Документ.УстановкаЗПУ: Вагон - реквизит шапки(Справочник.Вагоны). ТабЧать: Реквизит "ЗПУ" -ссылка на справочник.ЗПУ
Периодический РС "УстановкаЗПУ", Регистратор: "Документ.УстановкаЗПУ". Измерение: "Вагон".
В принципе, этого достаточно для определения, какие ЗПУ, когда и на какой вагон были установлены.
Если же у Вас есть "таракан", внедренный от 1с, что отчёты нужно формировать только из регистров, тогда требуется ещё
один независимый непериодический регистр сведений с измерениями:
"Вагон", "ЗПУ", "УстановкаЗПУ"
---
А чем периодический РС не нравится?
---
Это понятно, что РС. Вопрос в том как правильно задать его измерения и ресурсы.

Мне видится два варианта:

1. Периодический регистр сведений
Измерения:
Вагон – справочник вагонов
Вид ЗПУ – справочник видов ЗПУ
Номер ЗПУ – строка
Ресурсы:
Установлено – Булево

2. Периодический регистр сведений + Воспитательный справочник с таб. частью
Измерения:
Вагон – справочник вагонов
Ресурсы:
УстновленныеЗПУ – СправочникСсылка.УстановленныеЗПУ

Во вспомогательном справочнике заполнять табличную часть:
Вид ЗПУ – справочник видов ЗПУ
Номер ЗПУ – строка
---
Надо отталкиваться от того, кто и как устанавливает/снимает ЗПУ.
Если он работает на одной двери (грубо говоря), и ему дела нет до других дверей/люков, и что на них установлено, то не должно быть справочника "Набор ЗПУ". В документе оператора должна быть ТЧ, где он видит все установленные ЗПУ и может поставить галочки "Снять" напротив некоторых их них. В другой ТЧ он добавляет новые ЗПУ, которые он ставит.
По результатам проведения документ делает движения по регистру сведений варианта 1 из (3) только по снимаемым и добавляемым ЗПУ
Измерения:
Вагон – справочник вагонов
Вид ЗПУ – справочник видов ЗПУ
Номер ЗПУ – строка
Ресурсы:
Установлено – Булево
---
Надо отталкиваться от того, кто и как устанавливает/снимает ЗПУ.
Установка новых ЗПУ всегда подразумевает, что все предыдущие ЗПУ сняты.
---
Тогда нужен набор. Но мне кажется, лучше его делать не справочником, а документом. В документе оператор указывает новый перечень ЗПУ с видами и номерами. Проводит его. Документ делает одну запись в регистре сведений:

Регистратор - ссылка на документ
Измерение:
- Вагон
Ресурс:
- Установленные ЗПУ - ссылка на документ.
---
Если реализовывать первый вариант, то документ, с помощью которого регистрируется факт установки ЗПУ, должен будет «отменять» движения предыдущего документа и добавлять свои движения. Как мне кажется отмена «не своих» движений не совсем верный подход.
---
Если реализовывать первый вариант, то документ, с помощью которого регистрируется факт установки ЗПУ, должен будет «отменять» движения предыдущего документа и добавлять свои движения. Как мне кажется отмена «не своих» движений не совсем верный подход.
А с чего это он должен отменять движения пред идущего?
У вас новая установка это новое состояние объекта. А движения старого документа это история.
---
Описываю ситуацию...
Вагон пришел с двумя ЗПУ. Добавляем в регистр строки:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Истина
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Истина

Потом создаем документ, который говорит что на этот вагон установили одну ЗПУ. Причем установка новый ЗУП всегда подразумевает, что предыдущие ЗУП сняли. Т.о. это документ должен будет сделать движения:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ3, Установлено = Истина
---
Так и пусть делает новые движения... В чём проблема?
То есть он не отменяет старые движения. Он пишет новые!!!!!
---
Измерение:
Вагон

Ресурсы:
ВидЗПУ
НомерЗПУ

Реквизиты:
КтоПоставил (например)

Городить справочник "Установленные ЗПУ", ИМХО, излишенее
---
Хм... Так измерение это же "ключ", т.е. насколько я понимаю добавить на один вагон несколько ЗПУ не получиться, т.к. запись будет не уникально.
---
Хм... Так измерение это же "ключ", т.е. насколько я понимаю добавить на один вагон несколько ЗПУ не получиться, т.к. запись будет не уникальной.
---
так регистр же периодический. Или в один и тот же момент времени на вагоне может быть установлено несколько ЗПУ?
ЗЫ. Действительно так. Невнимательно прочитал условие
---
я предложил отказаться от регистра сведений и рассмотреть регистр накопления
---
Да. Я прочитал. Спасибо.
Такой вариант возможен, но получится та же проблема, что и в (11) - "отмена" движений предыдущего документа

(13) А теперь представьте, что между этими двумя документами "вклинят" еще один и получим, что движения последнего документа с изменением признака "Установлено" не корректные.
---
А теперь представьте, что между этими двумя документами "вклинят" еще один и получим, что движения последнего документа с изменением признака "Установлено" не корректные.
что значит "вклинят"?

Что мешает вклинить документ в любую другую вами выбранную структуру данных?
---
Попробую объяснить свои мысли на примере
Вагон прибывает 24.10.2016. На нем установлено два ЗПУ. Документа сделает запись в регистре:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Истина
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Истина

Некий пользователь указал, что 27.10.2016 на нем установили одно ЗПУ. Документа сделает запись в регистре:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ3, Установлено = Истина

А потом другой (или тот же) пользователь указал, что 25.10.2016 на нем установили три ЗПУ. Документа сделает запись в регистре, соответствующую состоянию на момент проведения:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ_а, Установлено = Истина
Вагон1, ВидЗПУ, НомерЗПУ_б, Установлено = Истина
Вагон1, ВидЗПУ, НомерЗПУ_в, Установлено = Истина

В результате срез последних нам даст что на этом вагоне установлено четыре ЗУП:
НомерЗПУ3, НомерЗПУ_а, НомерЗПУ_б и НомерЗПУ_в. Хотя на самом деле на нем установлена только одно ЗПУ: НомерЗПУ3.
---
Срез последних тебе вернёт вот эту запись. У неё дата 27 число.

 Некий пользователь указал, что 27.10.2016 на нем установили одно ЗПУ. Документа сделает запись в регистре:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ3, Установлено = Истина
---
Судя по всему первый вариант все-таки более правильный. Только в документе установки ЗПУ нужно будет делать две таб. части: ЗПУ, которые снимаем и ЗПУ, которые устанавливаем.

Правда такая организация данных хороша, когда "движение" идет только вперед. Если вдруг какой-либо пользователь решит "вклинить" документа задним числом, то данные расползутся. Под "расползанием" имею в виду ситуацию описанную в (24)
---
Если вдруг какой-либо пользователь решит "вклинить" документа задним числом, то данные расползутся. Под "расползанием" имею в виду ситуацию описанную в (24)

Я тебе вроде же писал на 24 что у тебя период будет другой....
---
тогда не надо пользоваться срезом последних или регистром накопления.
в документе одна табличная часть - установленные замки.

При проведении документ очищает все записи по вагону и пишет свой набор замков.

Работает хорошо, пока не вклиниваются документы задним числом. В этом случае СрезПоследних вернёт ересь. Решается восстановлением последовательности.

Проще и надёжней: Отбирать последний по дате документ, читать его табличную часть.
---
Работает хорошо, пока не вклиниваются документы задним числом. В этом случае СрезПоследних вернёт ересь. Решается восстановлением последовательности.
Какой последовательности? У вас там что партионный учёт замков?

У вас есть регистр сведений Курсы валют:

01.01.17 доллар 100 руб.
10.01.17 доллар 120 руб. //вклинился задним числом.
20.01.17 доллар 140 руб.

Какой курс доллара вернёт срез последних?
---
По моему (36) все правильно говорит. Если в тот же регистр по валюте добавить еще один ресурс, то срез последних по доллару вернет все варианты комбинаций, где одно из измерений равно доллару.
---
может и так. проверять надо.... Видимо РС тут не совсем подойдёт. И проще сделать через документ с ТЧ и выбирать данные из документов.
---
Привет, а что если рассмотреть вариант регистра накопления, где измерения: вагон и его наличие (булево, на территории), ресурсом будет добавленное ЗПУ (количество), реквизиты: вид и номер. Одним документом можно будет менять состояние вагона (убытие, добавление, снятие ЗПУ).
---
Делаем периодический РС.

У него измерение Вагон. Ресурсы ВидЗПУ, НомерЗПУ, признак установлен или снят.

Первый документ делает движения:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Истина
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Истина

Второй документ заполняет ТЧ уже установлеными ЗПУ по вагону. Пользователь указывает какие ЗПУ сняли, какие добавили. И делает движения:
Вагон1, ВидЗПУ, НомерЗПУ1, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ2, Установлено = Ложь
Вагон1, ВидЗПУ, НомерЗПУ3, Установлено = Истина
---
Одно измерение "Вагон" не получится, т.к. на один вагон в одно и тоже время может быть установлено несколько ЗПУ.
---
Что значит не получится одно измерение вагон? Почему оно не может быть одно? При чём тут несколько ЗПУ?
У вас ЗПУ это номер+вид.
---
Ну так измерение это же "ключ уникальности". Т.е. нельзя добавить в РС две записи с одинаковым ключом уникальности. "Период" то же будет один и тот же, т.к. ЗПУ устанавливаются одним документом, соответственно в один и тот же момент времени.
---
Ну так измерение это же "ключ уникальности".
Не измерение, а набор измерений. А в периодическом регистре ещё и период.
В данном случае уникальным будет только вагон. Но ЗПУ могут быть разные.
Если нужно контролировать уникальность ЗПУ то тогда нужно завести справочник ЗПУ с реквизитами "ВидЗпу" и "НомерЗПУ". По аналогии с механизмами серийных номеров.

Если установка ЗПУ это всегда снятие ВСЕХ ЗПУ. То ещё проще. Старые ЗПУ даже снимать не нужно.
По срезу последних на дату вам система вернёт установленные ЗПУ на текущую дату.
---
Не измерение, а набор измерений. А в периодическом регистре ещё и период.
Так и я о том же :-).
Если я правильно понял, в предложенном Вами варианте набором измерений будет: "Регистратор, Период, Вагон". Но, повторюсь, в один и тот же момент времени, один и тот же документа, должен указать, что на один и тот же вагон установлено несколько ЗПУ. Т.е. для каждой записи соответствующей установленной ЗПУ ключ будет одинаковый, что не допускается.
---
Так можно долго писать и придумывать. ты бы уже накидал бы регистр, пару справочников и документ.
И уже проверял бы сидел... под твою задачу накидать тестовую конфу с 1 регистром и тд дел на 20 минут.
---
все правильно он думает. Из-за неправильной структуры данных можно такое наворотить, что потом все переделывать придется и заново писать
---
Спасибо, Игорь! Прямо в точку.
---
все правильно он думает.
А я там что написал что он не правильно думает? Или что нужно уже принять какую то архитектуру? Я вроде как писал что может пора начать проводить натурный эксперимент?
Перечитайте написанное в (26) до полного просветления....
---
Поверьте я далеко не сразу кинулся писать вопрос в форуме...
Регистры, документы и справочники уже давно "накиданы", но есть ощущение, что я иду в не в том направлении.
---
Тогда да... ЗПУ это измерение и ЗПУ тогда можно сделать справочником.
"ВидЗПУ" указывать у элемента справочника. А не в регистре. В регистре тогда:
Вагон, НомерЗПУ(ссылка на спр).
---
А если так .

1) Измерения Вагон - справочник , ЭПУ - Справочник (хранит номер и тип) - ресурс - Состояние - перечисление (Установлено , Снятно)

2) Использовать Регистр Накопления Измерения такие же как и в первом случае , ресурс - количество ( всегда будет равен 1) Вид движения - приход - установка , Расход - снятие . (т.е. вагон это по сути склад хранения этих ЗПУ)

3) Комбинированные документ делает движения как по регистру накопления так и по регистру сведений
---
Предлагаю вариант структуры для Вашей задачи:
Вагоны. Справочник.
ВидЗПУ. Справочник или перечисление. Вам лучше знать.
ЗПУ. Справочник. Реквизиты "ВидЗПУ" и "НомерЗПУ".
Документ.УстановкаЗПУ: Вагон - реквизит шапки(Справочник.Вагоны). ТабЧать: Реквизит "ЗПУ" -ссылка на справочник.ЗПУ
Периодический РС "УстановкаЗПУ", Регистратор: "Документ.УстановкаЗПУ". Измерение: "Вагон".
В принципе, этого достаточно для определения, какие ЗПУ, когда и на какой вагон были установлены.
Если же у Вас есть "таракан", внедренный от 1с, что отчёты нужно формировать только из регистров, тогда требуется ещё
один независимый непериодический регистр сведений с измерениями:
"Вагон", "ЗПУ", "УстановкаЗПУ"
---
Отличная идея!!!
---
В Вашем случае не нужно заморачиваться фиксацией снятия ЗПУ. Это ничего, кроме проблем в будущем не принесет. Достаточно только установки.