L
lionk
задумался механизмами контроля изменения значения полей.
тоесть нужно выполнять какието действия если поле било изменино и документ сохранён, для этого нужно знать былоли изменено поле <_<
раньше на onOpen в переменные захонялись значения полей а в postSave сравнивал с текущими значениями, если не равно значит поле поменялось.
но такой механизм меня не устраивает, появилось чуть времени решил оптимизировать:
в моей задаче не важно знать какое именно поле менялось, важно знать что изменение произошло,
как мне кажется удобно будет пользоватся таким алгоритмом:
на onOpen считать хеш - суму данных определённого количества полей,
хранить эту суму в глобальной переменной ну или в поле,
а на postSave снова считать хеш и сравниать, так получу сигнал о том что значения поменялись
такой механизм становится становится легконастраиваемым, и применимым к многим задачам где нужен контроль за изменениями данных
я обратил внимание на функцию bytes = curdoc.GetItemValueCustomDataBytes( itemname , dataTypeName )
она вроде должна вернуть масив байт значения поля (к такому масиву пременить простой алгоритм хешированя плёвое дело)
но проблема в том что данная функция не пашет загвоздка в втором параметре(тип данных)
пробывал так
Set item = curdoc.GetFirstItem(x)
bytes = curdoc.GetItemValueCustomDataBytes( item.name ,item.type )
не работает
ктото знает как пользоватся данной функцией?
может есть идеи по реализации хеширования значения полей другими методами?
тоесть нужно выполнять какието действия если поле било изменино и документ сохранён, для этого нужно знать былоли изменено поле <_<
раньше на onOpen в переменные захонялись значения полей а в postSave сравнивал с текущими значениями, если не равно значит поле поменялось.
но такой механизм меня не устраивает, появилось чуть времени решил оптимизировать:
в моей задаче не важно знать какое именно поле менялось, важно знать что изменение произошло,
как мне кажется удобно будет пользоватся таким алгоритмом:
на onOpen считать хеш - суму данных определённого количества полей,
хранить эту суму в глобальной переменной ну или в поле,
а на postSave снова считать хеш и сравниать, так получу сигнал о том что значения поменялись
такой механизм становится становится легконастраиваемым, и применимым к многим задачам где нужен контроль за изменениями данных
я обратил внимание на функцию bytes = curdoc.GetItemValueCustomDataBytes( itemname , dataTypeName )
она вроде должна вернуть масив байт значения поля (к такому масиву пременить простой алгоритм хешированя плёвое дело)
но проблема в том что данная функция не пашет загвоздка в втором параметре(тип данных)
пробывал так
Set item = curdoc.GetFirstItem(x)
bytes = curdoc.GetItemValueCustomDataBytes( item.name ,item.type )
не работает
ктото знает как пользоватся данной функцией?
может есть идеи по реализации хеширования значения полей другими методами?