|
Как определить изменение реквизита регистра сведений? | ☑ | ||
---|---|---|---|---|
0
Лкфае гтв Дшсре
01.11.19
✎
11:59
|
Добрый день, коллеги!
Возникла такая проблема: как определить, что изменилось значение реквизита регистра сведений? Можно попробовать в обработчике ПередЗаписью читать значение из БД запросом и сравнивать с текущим объектом. Но есть проблема: набор записей может записываться в два приёма. Сначала записывается пустой набор, он затирает данные в БД. В этот момент существуют старые данные, но ещё нет новых. Затем записывается набор с новыми данными. В этот момент новые данные появляются, но старые уже затёрты. Как исхитриться и поймать момент, когда есть и старые и новые данные? Или может есть другой способ? |
|||
1
catena
01.11.19
✎
12:03
|
Никак. Работа напрямую с регистром сведений так и происходит: удаление, а потом запись.
Только запоминать "старые" значения перед удалением. Где-нибудь. И как-то решать ситуации, когда это на самом деле удаление. А задача-то какая? |
|||
2
dka80
01.11.19
✎
12:03
|
Смотря как ты пишешь в регистр. Если из документа, то сделай в ПередЗаписьюНаСервере
|
|||
3
dka80
01.11.19
✎
12:04
|
А если пишешь из обработки, то тем более сам проверяй перед тем как записывать
|
|||
4
Лкфае гтв Дшсре
01.11.19
✎
12:07
|
(1) Задача: есть регистр, в нем реквизит Вес. Если вес меняется, например пользователь его изменил, нужно в другом регистре поставить отметку, что вес изменился. С где-нибудь проблема. Если вы сталкивались с такой проблемой, может предложите варианты?
|
|||
5
Fish
01.11.19
✎
12:09
|
Не надо менять вес напрямую в регистре. Вес надо менять там, где он применяется - в документе, справочнике. А в периодическом регистре хранить все изменения.
|
|||
6
Лкфае гтв Дшсре
01.11.19
✎
12:10
|
(5) Я бы рад, но не могу это изменить.
|
|||
7
Fish
01.11.19
✎
12:11
|
(6) Ну тогда (1)
|
|||
8
Лкфае гтв Дшсре
01.11.19
✎
12:12
|
(2) Данные меняет пользователь вручную. Проблема не в том, чтобы получить старые данные, а в том, чтобы сохранить их где-то в БД между вызовами событий записи
|
|||
9
Масянька
01.11.19
✎
12:15
|
(6) А почему не можешь изменить?
|
|||
10
Лкфае гтв Дшсре
01.11.19
✎
12:20
|
(9) Это изменение потянет за собой очень много других вещей. Придется ооооочень много чего переделывать, менять бизнес-процессы работы в компании, переучивать персонал. Займет это пару-тройку-четвёрку лет, обойдется компании в несколько десятков миллионов рублей, и ради изменения одного реквизита это как-то не бюджетно. Ген. директор не одобрит)
|
|||
11
dka80
01.11.19
✎
12:22
|
Редактирование в форме списка регистра? Ну сделай событие ПередОкончаниеРедактирования
|
|||
12
Масянька
01.11.19
✎
12:23
|
(10) Я, кончено, блондинка... Но в законе :)
Сделать, чтобы при изменении РС открывался элемент справочника - требует много лярдов... |
|||
13
catena
01.11.19
✎
12:25
|
(10)Достаточно нарисовать собственную форму для изменения, из которой делать все необходимые движения по регистрам. Если кардинально переписывать неохото
|
|||
14
hhhh
01.11.19
✎
12:25
|
(8) делай в ПередЗаписью регистра. ставь отметку.
|
|||
15
Fish
01.11.19
✎
12:25
|
Это конечно, хорошая идея. Вместо того, чтобы использовать один РС, куда записывать историю изменения реквизита, делать два РС - в одном менять, а в другой писать историю :))
|
|||
16
Масянька
01.11.19
✎
12:26
|
(13) (15) А лярды?!
|
|||
17
Borteg
01.11.19
✎
12:27
|
(0) Сначала делаешь регистр куда будешь писать изменения, делаешь его начальное заполнение начальными данными на основании данных имеющихся.
В регистре который анализируешь делаешь при записи обработчик, перебираешь все записи. На каждую запись опрашиваешь свой регистр(который уже заполнен данным начальными). И сравниваешь что в нем лежит, если различия-пишешь, нет -не пишешь. |
|||
18
dka80
01.11.19
✎
12:28
|
(17) ты (10) читал? вообще компанию обанкротить хочешь?
|
|||
19
hhhh
01.11.19
✎
12:29
|
(17) да, у них там специфичное предприятие, добавление одного справочника обходится в миллионы рублей.
|
|||
20
Borteg
01.11.19
✎
12:31
|
(19) (18) 1sFusion предлагали?
|
|||
21
Borteg
01.11.19
✎
12:34
|
(8) так они у тебя должны и храниться в твоем регистре. Ты же на момент записи уже обладаешь в своем модном регистре записью предыдущих значений.
|
|||
22
Лкфае гтв Дшсре
01.11.19
✎
13:02
|
(12) (16) (18) (19) ахахахахаххах))))) Суть ответа была в том, что это потянет за собой много чего другого. У меня есть простая задача и мой руководитель 1С-ник конечно же не даст мне переписывать давно уже устоявшиеся вещи ради неё. Вопрос (9) был бессмысленным, я просто пошутил с долей шутки. Обсуждать это глупо)
|
|||
23
Лкфае гтв Дшсре
01.11.19
✎
13:05
|
(15) Это не история изменений. В другом регистре хранятся связанные данные, которые по смыслу отделены от исходного регистра (в один регистр их не запихаешь, и не потому, что это стоит миллиарды))), и при изменении веса необходимо устанавливать маркер, что в этом другом регистре данные устарели и пользователь должен их обновить.
|
|||
24
Fish
01.11.19
✎
13:31
|
(23) "и при изменении веса необходимо устанавливать маркер, что в этом другом регистре данные устарели и пользователь должен их обновить." - А нафига такие сложности? Если вес изменился, то он должен измениться в одном месте и для всего. Или я чего-то не понимаю?
|
|||
25
Cyberhawk
01.11.19
✎
13:36
|
Если регистр меняется из формы записи, то легко.
Если нужно универсально, то придется подумать. |
|||
26
Лкфае гтв Дшсре
01.11.19
✎
13:39
|
(24) окей, ещё детальнее. В первом регистре хранятся поступающие товары. Этот регистр по сути - табличная часть документа ПоступлениеТоваров. Так было сделано давно и там очень много всего в этом регистре и связано с ним много. Во втором регистре - коды ВЭД, которые автоматически определяются на основе некоторых параметров товара. Часть параметров получаются из первого регистра. После того, как товар поступает, ему присваивается код ВЭД (но не сразу). И вот если пользователь через пару дней после поступления вдруг захочет изменить например вес товара, потому что ошибся, нужно будет проверить, что ранее присвоенный код ВЭД всё ещё актуален, либо нужно его переопределить.
|
|||
27
Cyberhawk
01.11.19
✎
13:40
|
"проверить, что ранее присвоенный код ВЭД всё ещё актуален" // В проверке участвует значение реквизита записи первого регистра?
|
|||
28
Cyberhawk
01.11.19
✎
13:41
|
Зачем знать, что значение реквизита у записи меняется? Просто используй новое значение в своей проверке
|
|||
29
Масянька
01.11.19
✎
13:43
|
(26) А почему код ВЭД зависит от веса?
А почему (если так геморройно) разрешено менять вес (тем более - ошибаться)? И, да, я очень люблю задавать "бессмысленные" вопросы. |
|||
30
Лкфае гтв Дшсре
01.11.19
✎
13:44
|
(27) Да, участвует.
(28) Для этого нужно постоянно пересчитывать все коды ВЭД, что очень долго и как-то не очень. Проще отследить изменение веса в одной записи |
|||
31
Масянька
01.11.19
✎
13:44
|
(28) Во-о-от...
Если в коде ВЭД есть вес товара - проверяй значений. |
|||
32
Масянька
01.11.19
✎
13:45
|
(30) При изменении вес - изменяй код ВЭД (ту часть, что связана с весом).
|
|||
33
Cyberhawk
01.11.19
✎
13:55
|
(30) Допустим ты отследил что вес у такой-то записи поменял свое значение с такого-то на такое-то.
Что дальше во втором регистре сделать надо? |
|||
34
Лкфае гтв Дшсре
01.11.19
✎
14:00
|
(33) Установить реквизит ТребуетсяКорректировка в Истину и записать в реквизит ПричинаКорректировки что-то типа "вес поменялся". Через какое-то время пользователь просматривает список присвоенных кодов ВЭД, находит эти записи и принимает решение, менять этот код ВЭД или и так сойдет.
|
|||
35
Лкфае гтв Дшсре
01.11.19
✎
14:01
|
(33) Возможно он просто нажмет кнопку Поиск и 1с снова рассчитает код ВЭД для изменившегося веса
|
|||
36
Масянька
01.11.19
✎
14:02
|
(35) То есть это не так уж и важно?
|
|||
37
Greeen
01.11.19
✎
14:03
|
а регистр переодический?
|
|||
38
Лкфае гтв Дшсре
01.11.19
✎
14:05
|
(37) Оба непериодические
|
|||
39
Cyberhawk
01.11.19
✎
14:35
|
(34) "Установить реквизит ТребуетсяКорректировка в Истину и записать в реквизит ПричинаКорректировки" // Где установить?
|
|||
40
Лкфае гтв Дшсре
01.11.19
✎
18:21
|
В итоге решение проблемы не было найдено. Видимо придётся и правда использовать какое-то временное хранилище для старых значений полей регистра
|
|||
41
pechkin
01.11.19
✎
18:23
|
запрети редктироватьв списке, редактируй в форме.
а там можно все что угодно |
|||
42
Сияющий в темноте
01.11.19
✎
18:44
|
таки третий регистр,где последнее значение ищ первого
когда поменяли,там остается старое когда решили,что изменение принято,записыаем измененное значение. если кто-то хороший вернет первоначальное значение,то маркер изменения снимется |
|||
43
Лкфае гтв Дшсре
05.11.19
✎
10:36
|
В итоге проблема решилась с помощью передачи значения между двумя событиями - записью пустого набора и набора данных с помощью параметра сеанса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |