|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Мне необходимо все реквизиты справочника сохранить в регистре сведений. Редактирование и добавление элементов справочника делаю в ФормеЭлемента. Как отследить были или нет внесены какие- нибудь изменения данных. Если изменения не вносились , то как сделать что бы в регистр сведений данные не помещались (сохранение происходит при вызове события "после записи"). Я пытаюсь сравнить 2 объекта Объект1 = Ссылка.ПолучитьОбъект() - хранит изменяемую запись до записи в справочник Объект2 = Ссылка.ПолучитьОбъект() - хранит измененную запись после записи в справочник Если измененний не было, то Объект1=Объект2, но мне пишет что они не равны, хотя при просмотре в отладчике никакой разницы я не заметил Почему? ИЛИ подскажите другой способ сохранения данных в регистре. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 16:49 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
TyShiSvEt, 1) Изменен или нет объект относительно базы, проверять всегда в событиях "ПередЗАписью" 2) "Перед записью" для справочника элемент и его значения из базы доступны по ссылке ЭтотОбъект.Ссылка 3) Следовательно сравниваешь значение Реквизитов из "ЭтотОбъект.ИмяРеквизита" с "ЭтотОбъект.Ссылка.ИмяРеквизита" 4) Если сравнивать со значениями хранимыми в регистре, тогда в "ПередЗаписью" нужно прочитать значения из регистра и так же сравнить их с новыми значениями элемента. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 17:09 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Проблема в том что количество реквизитов изменения которых необходимо отслеживать 17 штук. и проверять изменение каждого совсем не хочется. С помощью Ссылка.ПолучитьОбъект() гораздо удобней. Процедура ПередЗаписью(Отказ) Объект1 = Ссылка.ПолучитьОбъект(); КонецПроцедуры Процедура ПослеЗаписи() Объект2 = Ссылка.ПолучитьОбъект(); Если Объект1 <> Объект2 тогда Запись = РегистрыСведений.ШтатноеРасписание.СоздатьМенеджерЗаписи(); бла- бла- бла Запись.Записать(Истина); КонецПроцедуры Объект1 <> Объект2 (если изменений не было), но как я уже писал что при отсутсвие изменений Объект1 и Объект2 всеравно не равны. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 17:20 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Пардон Объект1 <> Объект2 ЕСЛИ БЫЛИ ИЗМЕНЕНИЯ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 17:22 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 18:12 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
TyShiSvEt, это ваша "хотелка", а не возможности 1С, Naf привел код который допустим в 1С ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 18:53 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Naf, Спасибо заработало! Но всетаки почему не работает? Объект1 = Ссылка.ПолучитьОбъект() до записи Объект2 = Ссылка.ПолучитьОбъект() после записи Даже если изменений не было Объект1==Объект2 всегда ЛОЖЬ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 14:31 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
TyShiSvEt, Потому что это разные экземпляры объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 14:32 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
RederTyShiSvEt, Потому что это разные экземпляры объектов. Даже не столько потому, что это разные экземпляры одного и того же объекта, а потому что у них как минимум один реквизит в базе разный: _Version (обновляется при каждой записи вне зависимости от наличия изменений). Т.е. либо заблокировать на форме кнопку записи до внесения каких-либо изменений в реквизиты (Модифицированность) либо в ПередЗаписью() взводить какой-либо флаг при отсутствии это самой модифицированности и при его "взведенном" состоянии не отрабатывать кусок кода в ПослеЗаписи(). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 06:21 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
DolterRederTyShiSvEt, Потому что это разные экземпляры объектов. Даже не столько потому, что это разные экземпляры одного и того же объекта, а потому что у них как минимум один реквизит в базе разный: _Version (обновляется при каждой записи вне зависимости от наличия изменений). Т.е. либо заблокировать на форме кнопку записи до внесения каких-либо изменений в реквизиты (Модифицированность) либо в ПередЗаписью() взводить какой-либо флаг при отсутствии это самой модифицированности и при его "взведенном" состоянии не отрабатывать кусок кода в ПослеЗаписи(). Может оказаться на форме элементы с галкой "изменяет данные". при его отработке взведется галка Модифицированность, хотя данные и не изменялись ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 12:28 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Два объекта полученные при помощи вызова двух методов ПолучитьОбъект() всегда будут НЕ равны . Независимо ни от чего. Код: plaintext 1. 2. 3.
Как вариант можно при открытии формы сохранять значения в виде строки XML, при/после записи получать такую строку снова и сравнивать их. Если отличаются - значит есть отличия: Код: plaintext 1. 2. 3.
Еще вариант в процедуре ПередЗаписью делаем Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 01:10 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Используйте метод "Модифицированность". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 01:55 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Прбовал Ссылка.ПолучитьОбъект().Модифицированность(), при любом варианте = ложь ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 12:36 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Вы писали: "Мне необходимо все реквизиты справочника сохранить в регистре сведений. Редактирование и добавление элементов справочника делаю в ФормеЭлемента. " - тогда в событии ПередЗаписью, используйте метод "Модифицированность" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 04:30 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
Deosfen, Не совсем понятно как использовать этот метод, я уже писал что и после записи и до записи Объект.Модифицированность()=ложь, даже при наличии изменений. Да и к слову у меня прекрасно работает код который предложил Naf. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 10:35 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
TyShiSvEtDeosfen, Не совсем понятно как использовать этот метод, я уже писал что и после записи и до записи Объект.Модифицированность()=ложь, даже при наличии изменений. Да и к слову у меня прекрасно работает код который предложил Naf. Сколько же еще раз нужно прямым текстом сказать, что разные экземпляры объектов - они РАЗНЫЕ, и (в частности) у свежесозданного экземпляра Модифицированности быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 13:58 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
pailTyShiSvEtDeosfen, Не совсем понятно как использовать этот метод, я уже писал что и после записи и до записи Объект.Модифицированность()=ложь, даже при наличии изменений. Да и к слову у меня прекрасно работает код который предложил Naf. Сколько же еще раз нужно прямым текстом сказать, что разные экземпляры объектов - они РАЗНЫЕ, и (в частности) у свежесозданного экземпляра Модифицированности быть не может. То что экземпляры разные это понятно. Сейчас я хочу знать другое: можно ли в данном случае использовать метод Модифицированность(), если можно, то хотелось бы больше конкретики. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 14:33 |
|
Сохранение данных в регистр сведений
|
|||
---|---|---|---|
#18+
TyShiSvEtpailTyShiSvEtDeosfen, Не совсем понятно как использовать этот метод, я уже писал что и после записи и до записи Объект.Модифицированность()=ложь, даже при наличии изменений. Да и к слову у меня прекрасно работает код который предложил Naf. Сколько же еще раз нужно прямым текстом сказать, что разные экземпляры объектов - они РАЗНЫЕ, и (в частности) у свежесозданного экземпляра Модифицированности быть не может. То что экземпляры разные это понятно. Сейчас я хочу знать другое: можно ли в данном случае использовать метод Модифицированность(), если можно, то хотелось бы больше конкретики. Попробуйте в форме объекта, после изменения данных вывести следующее: Модифицированность() ЭтотОбъект.Модифицированность() Ссылка.ПолучитьОбъект().Модифицированность() и увидите в чем разница последнего перед двумя предыдущими... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 17:22 |
|
|
start [/forum/topic.php?fid=28&fpage=155&tid=1524240]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 197ms |
0 / 0 |