![]() |
![]() |
|
Как работает регистр сведений, подчиненный регистратору? | ☑ | ||
---|---|---|---|---|
0
Барабашка серверная
06.04.08
✎
19:01
|
Не могу понять, правильно ли я делаю или нет.
Задача такая. Нужно отслеживать изменения в документе. Т.е. ранее сохраненный документ открывается, в нем меняется реквизит, документ сохраняется и проводится. Потом еще раз, потом еще. Таких изменений может быть несколько. Каким образом заносить каждое такое изменение в регистр сведений, чтобы узнать последнее состояние изменяемого реквизита в конкретном документе? Заносить нужно именно кажде изменение, т.е. регистр должен помнить все проведенные изменения в документе, чтобы оператор не мог ввести в документ то, что уже было. У меня не получается. В регистре создается запись, все нормально. Но при изменении документа в регистре не создается новой записи, а просто изменяется текущая. |
|||
1
IronDemon
06.04.08
✎
19:09
|
Ну так правильно. Новый документ надо делать.
|
|||
2
b_ru
06.04.08
✎
19:17
|
для данной задачи этот регистр логично сделать неподчиненным регистратору.
Изврат
|
|||
3
Барабашка серверная
06.04.08
✎
19:31
|
(1) Нельзя делать новый документ. Надо отмечать в "старом" (текущем).
(2) Кстати, да. Я уже думал над этим. Но как организовать программно вывод в независимый регистр? Он перестает быть доступным в объекте "Движения". |
|||
4
IronDemon
06.04.08
✎
19:34
|
МенеджерДляЗаписи = РегистрыСведений.ТорговыеАгентыТорговыхТочек.СоздатьМенеджерЗаписи();
МенеджерДляЗаписи.Период = ВыбДата; МенеджерДляЗаписи.ДоговорКонтрагента = Выборка.Ссылка; МенеджерДляЗаписи.Контрагент = КонтрагентСсылка; МенеджерДляЗаписи.ТорговаяТочка = ТТСсылка; МенеджерДляЗаписи.Агент = АгентСсылка; МенеджерДляЗаписи.Записать(); |
|||
5
Барабашка серверная
06.04.08
✎
19:45
|
(4) Круто. А что это такое? :-)
В смысле, в чем отличие от кода, который выдает конструктор? |
|||
6
IronDemon
06.04.08
✎
19:53
|
А что такое конструктор?
|
|||
7
Барабашка серверная
06.04.08
✎
20:06
|
(6) Ну конструктор движений. Документ -> закладка "Движения" -> кнопка "Конструктор движений".
|
|||
8
Барабашка серверная
06.04.08
✎
20:13
|
Кстати, еще вопрос по регистру сведений. Какая-то ерунда у меня творится. Видимо, я все-таки плохо его осознал.
В общем, переодический (день) регистр сведений (другой, не тот, что из вопроса выше), подчинен регистратору (документ). В регистр записываются соотв. данные из документа: одно измерение и несколько параметров. Дык опять та же проблема: ввожу сегодня новый документ, а регистр не создает новую запись, а меняет вчерашнюю, просто записав поверх новые данные. Что я не так делаю? |
|||
9
b_ru
06.04.08
✎
22:11
|
(5) в том, что в (4) код для записи в неподчиненный регистр, вестимо
(8) галочка "отображать историю" или что-то вроде этого стоит в форме регистра? |
|||
10
NewNick
06.04.08
✎
22:28
|
(8) на самом деле РС или РН тут не причем. метод формирования записей одинаковый в данном случае. разница между ними только в разных виртуальных таблицах которые при вопросе формирования правильных проводок не актуальны ибо отданы на откуп платформе.
если есть такое желание сделать через РС подчиненный регистратору то нет ничего проще, достаточно что бы документ не удалял движения автоматически и очищать движения по всем регистрам кроме этого. |
|||
11
Барабашка серверная
06.04.08
✎
22:32
|
(9) Галочки не нашел, но почему-то теперь стало показывать два движения, как и должно (вчерашнее и сегодняшнее). Почему - х.з.
Меня интересует первый вопрос. Т.е. получается, что в подчиненном регистратору регистре может быть только одна запись соотв. документу? Т.е. один документ - одна запись в регистре? |
|||
12
IronDemon
06.04.08
✎
22:34
|
Да, один документ - один набор записей.
|
|||
13
NewNick
06.04.08
✎
22:36
|
(11) (12) между одна запись и один набор записей есть все же некая разница.
|
|||
14
IronDemon
06.04.08
✎
22:37
|
Один документ - один набор записей подчиненных регистратору :)
|
|||
15
Барабашка серверная
06.04.08
✎
22:45
|
(12) Э-э-э... Набор записей? Или таки одну запись?
Мне надо что сделать (абстрактная задача): Оператор создает документ "ДвижениеСолнца". В этом документе есть реквизит с типом перечисление. В течение дня оператор несколько раз открывает документ, смотрит в окно на светило и меняет этот реквизит на: "Солнце взошло", "Солнце в зените", "Солнце клонится к закату", "Закат Солнца". Так вот мне надо, чтобы каждое такое изменение документа отражалось уникальной записью в РегистреСведений. Т.е. если оператор уже изменил сегодня два раза документ и ввел "Солнце взошло" и "Солнце в зените", он не мог бы ввести эти два значения - регистр должен ему дать отлуп по уникальности. |
|||
16
b_ru
06.04.08
✎
22:47
|
(11) мда, виноват. Галочка эта не входит в стандартную панель и отдельно добавлена в некоторых формах в типовых. А у тебя мог еще отбор какой-нибудь стоять, например по дате
|
|||
17
NewNick
06.04.08
✎
22:48
|
(15) я вроде все описал в 10.
открой пустую конфу(не обязательно можешь испортить первую попавшуюся). сделай побырому док с одним реквизитом. РС подчиненный с одним ресурсом и переодичностью по регистратору. жмякни конструктор движений. на закладке движения сними автоматическое очищение движений и получишь что хотел. |
|||
18
b_ru
06.04.08
✎
22:50
|
(15) такие вещи делаются разными документами
|
|||
19
IronDemon
06.04.08
✎
22:50
|
Регистр сведений не подчиненный регистратору: ДвиженияСолнца
Периодичность: в пределах дня Измерения: документ "ДвижениеСолнца" Ресурс: перечисление "ВидыРасположенияСолнца" Понятно? |
|||
20
Defender aka LINN
06.04.08
✎
22:52
|
(15) Вообще говоря - задача криво стоит. Документ должен проводиться 1 раз.
Но если уж кровь из носа надо сделать криво - в (4) все написано правильно. |
|||
21
Барабашка серверная
06.04.08
✎
23:01
|
(17) Сделал только что. Все равно затирает поверх. Но интересная хреновина: если документ сначала сохранить, а потом нажать Ок, то в регистре появляется вторая запись, дублирующая первую. Отличается только поле Период. И вообще, если жать "Записать" и подтверждать Оперативное проведение, то этих записей возникает куча.
|
|||
22
Барабашка серверная
06.04.08
✎
23:04
|
(19) У меня так и сделано было изначально. А потом код из (4)?
|
|||
23
IronDemon
06.04.08
✎
23:08
|
(20) Как было изначально - мы не знаем.
Да. |
|||
24
IronDemon
06.04.08
✎
23:09
|
Не 20 а (23)
|
|||
25
IronDemon
06.04.08
✎
23:09
|
Млин, заработался :)
|
|||
26
Барабашка серверная
06.04.08
✎
23:11
|
Не (23), а (22). Хе-хе.
|
|||
27
Барабашка серверная
06.04.08
✎
23:16
|
Сделал. Отредактировал в соотв. с (19), потом переделал код (4). Да, стало записывать и в неподчиненный регистратору регистр. Но все равно пишет поверх, сволочь.
|
|||
28
IronDemon
06.04.08
✎
23:18
|
(27) Перенеси перечисление "ВидыРасположенияСолнца" в измерения.
|
|||
29
Барабашка серверная
06.04.08
✎
23:18
|
Блин, поменял у регистра периодичность на секунды, стало создавать отдельную строчку, но ессно потерялась уникальность.
|
|||
30
NewNick
06.04.08
✎
23:20
|
(21)
да предыдущий набор движений не читается а запись идет в режиме замещения. шас не могу понять это нормально или не очень ;) Процедура ОбработкаПроведения(Отказ, Режим) НД = Движения.РегистрСведений1; НД.Прочитать(); Движение = НД.Добавить(); Движение.Период = Дата; Движение.Ресурс1 = Реквизит1; КонецПроцедуры |
|||
31
Барабашка серверная
06.04.08
✎
23:23
|
(27) Перенес. Работает, создает записи на каждую проводку. Но нет уникальности. Можно открыть документ и два раза устроить "Закат Солнца", в регистре появится две записи соответственно.
|
|||
32
IronDemon
06.04.08
✎
23:23
|
Осталось добавить проверку уникальности.
|
|||
33
Барабашка серверная
06.04.08
✎
23:24
|
Т.е. в (31) про (28).
|
|||
34
Барабашка серверная
06.04.08
✎
23:26
|
(32) Дык регистр сам должен проверять. Ведь по идее уникальным считается сочетание измерений, разве нет?
|
|||
35
NewNick
06.04.08
✎
23:26
|
в (30) дату на текущуюдату() надо бы поменять.
|
|||
36
Барабашка серверная
06.04.08
✎
23:43
|
(35) Блин, кажется заработало как надо. Буду думать, в чем дело. Дело в твоем коде, кажется. Он почему-то добавляет новые записи, а код конструктора хрен.
|
|||
37
NewNick
06.04.08
✎
23:51
|
(36) при создании документ объекта не читаются автоматом его предидущии движения. таким образом старый набор движений перетирается.
однако набор движений объекта естественно не перетирается во время существования объекта(если его не перетирают) поэтому пока форму не закрыли (документ объект живет) записи плодятся. а как только объект закрыли открыли заново предыдущий набор записей пропадет если его не прочитать специально. |
|||
38
Барабашка серверная
07.04.08
✎
00:32
|
(37) Понял, но как-то смутно. Пересказать не смогу. :)
|
|||
39
Барабашка серверная
07.04.08
✎
16:03
|
Я тут еще поэкспериментировал, получается, что даже с кодом (30), если установлен режим "удалять движения автоматически", то все равно пишется поверх, а не добавляется новая запись. Вот такие пироги.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |