|
Отследить изменения в регистре | ☑ | ||
---|---|---|---|---|
0
Мисти
27.05.16
✎
18:08
|
Как ловчее? Это старая УТ, сильно переделанная.
Надо знать, кто именно и что менял в одном важном регистре, эту информацию нужно хранить за пару месяцев. |
|||
1
Мисти
27.05.16
✎
18:08
|
Я себе представляю - при записи регистра записывать текстовую строку во внешний файл со всеми полями регистра+Пользователь и время.
|
|||
2
rs_trade
27.05.16
✎
18:10
|
(1) Зачем во внешний файл? Что бы дольше запись в регистр была?
|
|||
3
Мисти
27.05.16
✎
18:12
|
Чтобы база не росла.
А куда? В еще один регистр? |
|||
4
BormanMic
27.05.16
✎
18:13
|
создай простенькую sql базу с 1 таблицей и пиши туда
|
|||
5
Мисти
27.05.16
✎
18:15
|
А это что, быстрее, чем в текстовый файл?
|
|||
6
BormanMic
27.05.16
✎
18:15
|
(4) или регистр сделай. Файл неудобно анализировать будет
|
|||
7
Pistol
27.05.16
✎
18:16
|
(2) Чтобы было легче исправлять записи об изменениях, конечно. А то вдруг кто-то особо важного поймают? А тут хоп - и нет файла. И ничего не было.
|
|||
8
rs_trade
27.05.16
✎
18:16
|
(10) за пару месяцев логов на гигабайты набежит?
|
|||
9
BormanMic
27.05.16
✎
18:16
|
журнал регистрации 1сный в файле. быстро работает? Правда зависит от количество записей за эти 2 месяца
|
|||
10
Pistol
27.05.16
✎
18:17
|
(4) Вот ты сейчас предсказываешь как будет называться следующая тема от ТС
|
|||
11
Лефмихалыч
27.05.16
✎
18:18
|
(0) регистр сведений или накопления?
|
|||
12
Мисти
27.05.16
✎
18:18
|
(10) Не-а, сделаю еще один регистр.
|
|||
13
Мисти
27.05.16
✎
18:19
|
Сведений!
|
|||
14
Pistol
27.05.16
✎
18:19
|
(11) Расчетов же
|
|||
15
Лефмихалыч
27.05.16
✎
18:19
|
(13) независимый?
|
|||
16
Мисти
27.05.16
✎
21:27
|
Я твердо решила при записи в регистр добавлять строчку в дополнительный регистр.
В модуле набора записей есть процедура Процедура ПередЗаписью(Отказ, Замещение) Если РольДоступна("ПроверятьПоОтветственному") Тогда Если ЭтотОбъект.Отбор.ЗаказПокупателя.Значение.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда Режим = РежимДиалогаВопрос.ОК; Ответ = Вопрос("Вы не можете редактировать чужие отгрузки!", Режим, 0); Отказ = Истина; КонецЕсли; КонецЕсли; Вот туда и вставлю! Значения отбора (измерения) я вижу, а как мне увидеть реквизиты в этот момент? |
|||
17
Мисти
27.05.16
✎
21:33
|
Какая конкретно колонка изменилась, я же не узнаю?
Это в документе "при открытии" можно зафиксировать важные реквизиты, а при записи сравнить, а с регистром ведь так не получится? |
|||
18
Лефмихалыч
27.05.16
✎
21:54
|
(17) для того, чтобы узнать, что изменилось, надо сравнить с тем, что базе записано. То есть, надо запросом получить набор, соответствующий отбору в ПередЗаписью и сравнить (как сравнивать две таблицы - сама думай).
Но с регистрами есть одна жопа большая - при измении существующего набора они записываются два раза: первая запись удаляет старый набор (запись пустого набора), вторая запись записывает новый. И это разрушает ко всем херам твою мечту |
|||
19
Мисти
27.05.16
✎
22:04
|
Короче, мне пока важно узнать, что же там в ресурсах? Измерения я вижу "Перед записью".
Наверное, просто все колонки и перепишу в свой регистр. Мой будет отличаться в первую очередь тем, что там ничего не будет замещаться. (кстати, как этого добиться?) |
|||
20
mehfk
27.05.16
✎
22:12
|
(16) За такое расстреливать надо.
|
|||
21
Pistol
27.05.16
✎
22:17
|
(20) Вот такое оно, порно с участием Мисти, которое в соседней теме про доступ к счету обсуждают, да.
|
|||
22
Лефмихалыч
27.05.16
✎
22:24
|
(20) кстати - да.
в платформу встроена политика разрешения, то есть запрещено все, что не разрешено явно, и, если разрешено хоть в одной роли пользователя, то оно разрешено. Решение же (16), во-первых, противоречит политике прав платформы и когда-нибудь возникнет ситуация, при которой без права администратора какую-нибудь операцию будет сделать невозможно и потребуется "быстро править". А, во-вторых, у автора складывается парадоксальная, но достаточно типичная в своем идиотизме ситуация, при которой с расширением состава ролей фактические права сужаются. |
|||
23
Мисти
27.05.16
✎
23:06
|
Лефмихалыч, ага, это не я писала, так что можете расстреливать. Да, там везде такая политика, что ролями права ограничиваются. Они уже лет 10 работают и не жалуются.
|
|||
24
Мисти
27.05.16
✎
23:16
|
Уважаемые, так как при записи увидеть все ресурсы моей записи?
|
|||
25
RomanYS
27.05.16
✎
23:20
|
(24) Текущий набор?
Для каждого Запись из ЭтотОбъект Цикл ЗначениеРесурса = Запись.ТвойРесурс;... |
|||
26
Мисти
27.05.16
✎
23:29
|
Отлично-прекрасно, спасибо!
Ну и последний вопрос - как организовать регистр, чтоб он мне не сообщал, что "запись с такими полями уже существует"? |
|||
27
RomanYS
27.05.16
✎
23:54
|
(26) сделать периодичным, или добавить измерение типа "номерВерсии"
|
|||
28
youalex
28.05.16
✎
00:48
|
(16) Луше не туда. Лучше собственную подписку сделать и собственный модуль. Просто чтобы, как это, не смешивать контексты функционала
|
|||
29
youalex
28.05.16
✎
00:57
|
(6) можно писать в буферный текст через ЗаписьТекста, а с другой стороны скуль будет этот файл подгружать раз в сутки к примеру.
|
|||
30
Мимохожий Однако
28.05.16
✎
06:39
|
(0)Паранойя какая-то. Если регистр так важен, то привяжи его к документу, в котором фиксируй автора без возможности изменения после записи.
|
|||
31
Mikeware
28.05.16
✎
09:15
|
(30) это не паранойя. Но, безусловно, тоже болезнь. Ну, или механические повреждения мозга...
|
|||
32
ДенисЧ
28.05.16
✎
09:18
|
(31) масянизм?
|
|||
33
MrStomak
28.05.16
✎
09:55
|
(16)1. Подобный копрокод не скомпилируется на сервере. Фоновые задания, обмены затрагивающие регистр будут внезапно завершаться.
2. При записи любого документа, кроме заказа покупателя, в этот регистр "вопрос" будет возникать всегда 3. Не предусмотрен выход из алгоритма по свойству обменданными.загрузка Вообще какой-то трэш, у меня болят глаза!!! |
|||
34
MrStomak
28.05.16
✎
09:58
|
(33) пункт 2 снимается, думал там регистратор
|
|||
35
youalex
28.05.16
✎
14:23
|
(33) Вопрос() - в транзакции - однозначно на помойку. Вместе с авторами. Автор сего - не ТС как я понял.
|
|||
36
Мисти
31.05.16
✎
22:44
|
Вернемся к записи изменений.
НаборЗаписей = РегистрыСведений.Кос_ИзменениеПХВ.СоздатьНаборЗаписей(); Для каждого запись из ЭтотОбъект Цикл ТекЗапись = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(ТекЗапись,Запись); ТекЗапись.Пользователь = ПараметрыСеанса.ТекущийПользователь; ТекЗапись.ДатаЗаписи = ТекущаяДата(); ТекЗапись.Период = ТекущаяДата(); КонецЦикла; НаборЗаписей.Записать(); И у меня прекрасненько одна запись затирает другую. Как быть? Мне пришла в голову мысль завести константу типа нумератора и завести под него поле в регистре. |
|||
37
RomanYS
31.05.16
✎
22:58
|
(36) у тебя уже есть период, мысль у тебя неверная.
Или пиши записи менеджером записи или устанавливай отбор на набор записей. Запись набора без установленного отбора затирает весь регистр. |
|||
38
Serg_1960
31.05.16
✎
22:59
|
Систему версионирования ещё никто не предлагал? Чур я первый :)
В типовых есть она для документов, но никто не мешает её принципы использовать для хранения версий наборов записей. |
|||
39
RomanYS
31.05.16
✎
23:04
|
(38) паковать структуры в хранилище - это конечно универсально, но не всегда удобно.
|
|||
40
Serg_1960
31.05.16
✎
23:10
|
(36) Засунь свой нумератор версий в измерение дополнительного регистра. Константа, в принципе, не нужна. Достаточно запрос на макс номер версий этого набора перед сохранением очередной версии.
|
|||
41
Dmitry77
31.05.16
✎
23:11
|
У регистра вроде есть событие при записи или при изменении. Сейчас не посмотрю в 1с. Как только это событие возникает набор было и стало закидывать в новый регистр... В подписке на это событие.
|
|||
42
Мисти
31.05.16
✎
23:14
|
RomanYS, я с регистрами работаю очень редко и обычно "краду" кусочки. Отбор по всем полям? Или по измерениям?
Как это написать-то? (ну или поищу в конфигураторе кусочек похожий) |
|||
43
Serg_1960
31.05.16
✎
23:16
|
(39) Зато можно использовать алгоритмы версионирования типовой конфигурации с минимальными изменениями.
А насчет хранилища согласен. Не удобно. Особенно если очередное обновление изменяет структуру регистра Маловероятно, но не исключено. |
|||
44
RomanYS
31.05.16
✎
23:19
|
(42) СоздатьМенеджерЗаписи
|
|||
45
RomanYS
31.05.16
✎
23:26
|
(36) в данном случае похоже есть простое решение, т.к. записи за счет периода заведомо (точнее очень маловероятно) повторяться не будут, то можно просто писать твой набор без замещения. Достаточно вставить правильный параметр в
НаборЗаписей.Записать(); |
|||
46
mistеr
31.05.16
✎
23:39
|
(0) >Надо знать, кто именно и что менял в одном важном регистре
Для этого предназначен ЖР. |
|||
47
Мисти
31.05.16
✎
23:42
|
RomanYS, спасибо, вроде, всё получилось!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |