#0
by DCKiller
Задача следующая: необходимо реализовать что-то наподобие системы продвинутого контроля изменений пользователем значений независимых регистров сведений. Т.е. в истории должна фиксироваться информация о том, кто, когда и что изменил в регистре. Для фиксации этих действий будет предназначен в свою очередь спец. регистр сведений, сама фиксация изменений осуществляется по подписке на событие "ПроверкаЗаполнения". Проблема состоит в следующем: если пользователь что-либо меняет в записи регистра сведений, то как это отследить? Как при записи в историю изменений регистра определить, к какой именно записи регистра из зафиксированных в истории это изменение относится. По сути, речь идет о чем-то вроде УИДа для записей регистров сведений, по которому мы с этими записями при фиксации изменений в них в историю будем обращаться, но как реализовать такое решение? Создавать в каждом регистре сведений, чью историю изменений планируется фиксировать, отдельное измерение для хранения этого УИДа, слишком геморно. Есть еще варианты?
#4
by DCKiller
Есть, но "Проверказаполнения" мне здесь больше подходит. Собственно, суть не в этом, потому что вид события, при котором это должно происходить, поставленной проблемы не решает.
#6
by IamAlexy
сделай свою форму редактирования записи. в форме сделай свою кнопку сохранения на кнопку повесь что угодно.. проверки, регистрирование в подсистеме версионирования.. затем после всех проверок и регистраций пиши в базу.. в чем проблема?
#7
by smitru
А может задуматься над сутью задачи???? Какой смысл городить у НЕобъектных данных тот функционал, который есть у объектных???
#8
by DCKiller
Я, кажется, не совсем ясно выразил свой вопрос... Видишь ли, проблема как раз в "проверки, регистрирование в подсистеме версионирования.." и т.д. Как организовать эту проверку? Допустим, у нас есть регистр сведений "История", следующего состава: Измерения: ОбъектБазы - собственно наименование регистра сведений, изменения записей которого фиксируются Пользователь - кто изменил Ресурсы: Значение - новое значение поля регистра Понятно, что пользователь может изменить сразу несколько записей регистра. И как определить, какая именно запись была изменена? Смысл тот, что нужно фиксировать таким образом историю изменений записей регистров.
#10
by Starhan
а пример, что считать изменением? например только изменение рессурса или добавление записей по одонму из измерений.?
#11
by DCKiller
Зря не читал. Там вся проблема изложена. Ищо раз. Изменение полей существующей записи, добавление новой записи, удаление записи. Ну понятное дело, что для вида изменений можно создать доп. измерение в регистре истории, куда заносить информацию о том, что это было: добавление, удаление или изменение записи.
#12
by Starhan
а регистр 1, несколько или любой. И откуда есть возможность его менять (из каких форм)? гм Подписка на событие перед записью и по каждой строке проверка. Есть запись, нет записи с каикими ресурсами запись.
#13
by catena
Проблема не в самой регистрации изменений, а в идентификации измененной записи. При изменении эл-та справочника, например, можно по УИД определить, что меняли. А в независимом РС нет.
#14
by Starhan
+ или при записи (не помню старые данные еще в базе или нет.) Потомучто перед записью может быть отказ. У тебя будет информация что юзер изменил регистр а на самом деле нет. А я так понял, что требуется именно понять изменили или нет. А сравнить текущее значение в наборе и старое значение в ресурсе по тем же измерениям - не проблема. что значит понять по уид что меняли? ) при изменении поля в справочнике у него меняется УИД? )))
#15
by DCKiller
Регистров несколько. Изменения м.б. как непосредственно из формы списка, так и из тех форм, где размещена таблица, имеющая тип РегистрСведенийСписок.<ЭтотРегистр>. С подпиской на событие я уже разобрался. См. , там проблема объяснена. Именно так! В этом и есть проблема.
#16
by Starhan
я ж те уже сказал по каждой строке в наборе записей ищешь по тем же измерениям строчку в регистре и сам определяешь изменеине.
#17
by Starhan
нормлаьно будет работать если там не 100 строк сразу меняют (в друг обраоткой есть какое то массовое заполнение)
#18
by DCKiller
Позже увидел :) А в каком событии получить набор записей до изменения? ПередЗаписью? Или лучше "проверка заполнения"?
#20
by Starhan
пкеред записью точно получишь и набор и старые данные еещ в базе будут, но есть проблема описанная в . Остальное надо проверять, не пробовал :)
#21
by МимохожийОднако
Проще дать запрет на изменение безответственным пользователям, чем городить регистрацию их действий.
#22
by DCKiller
Не катит. ПередЗаписью, если какое-то значение в записи уже меняли, он возвращает запись с этим новым значением :(
#23
by Reset
"Возникает перед выполнением записи набора регистра сведений. Процедура-обработчик вызывается после начала транзакции записи, но **до начала записи набора** регистра сведений" Обманывают?
#24
by DCKiller
Мля, у меня в событии ПередЗаписью параметр "Объект" содержит уже измененные значения полей!
#25
by Reset
У тебя каша в голове. Разумеется, объект содержит подготовленные к записи значения. Ты как раз и собираешься сравнивать их (новые) с существующими (еще не измененными).
#26
by Alex375
Вопрос: а как же получить исходные записи, которые были предоставлены пользователю для редактирования? :)
#27
by DCKiller
То есть чтобы получить старые значения, нужно создать другой набор записи с фильтром по измерениям нового отбора, и ттолько так сравнивать? наверно так? (см. выше)
#28
by Alex375
это при условии что у тебя был изначально отбор. А если такого отбора не было? Брать весь регистр, что-ли? Тоже не вариант, так как в это время другие могли уже поменять значения.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Почему в регистрах сведений нет такого, как в регистрах остатков Нач Кон и
- v7: Можно ли отслеживать нажатие клавиш в 1С
- Как лучше отслеживать статус изменения константы
- Как отслеживать историю размера системной базы tempdb?
- Независимый регистр сведений. Как увидеть изменения набора без гл. переменных
- Можно ли из 1С отслеживать android устройство?
В этой группе 1С
- использование СОДЕРЖИТ в запросе
- v7: ВыбратьЭлементыПоРеквизиту +
- Иерархия элементов vs динамический список
- XDTO
- Настройки формы списков документов в УПП
- Не запускается "1С: Предприятие 8.2.319" - виснет при запуске
- Как раздвинуть ячейку в макете?
- v7: перебор документов в порядке сохранения на временной оси
- Получить список активных пользователей 1с 8
- Актуальные правила обмена для перехода Бух 7.7 > Бух 8
- Перенос счетов!
- ЗУП: расчет ЗП с использованием док-та "Ввод табелей учета рабочего времени"
- v7: Barcode.ocx для w2008 x64
- ЗУП Анализ начисленных налогов (Начислено - не облагается <>Облагаемая база)
- ЗУП: Проблема с версионированием
- SOAP запросы из 1С
- Дублирование видов субконто на счете 000
- 1с 8 упп перемещение ос с мола
- Ограничить тип левого Значения в отборе СКД
- У кого нибудь есть правила обмена между ЗУП 8 проф и бюджетной ЗУП 8 проф?