|
как в ПередЗапись() справочника проверить были ли изменения? | ☑ | ||
---|---|---|---|---|
0
Сниф
28.11.11
✎
10:51
|
Хочу добавить в справочник реквизит "ДатаПоследнегоИзменения". Заполнять его в обработчике ПередЗаписью() для новых и в случае, если данные изменились.
А вот как избежать ситуации: пользователь открыл элемент справочника, потыкал, вернул прежнее значение - у формы флаг модифированности есть, на вопрос "Записать?" ответил "Да". Как сравнить все реквизиты и табличные части элемента справочника между объектом и тем, что хранится в базе по ссылке? |
|||
1
Поручик
28.11.11
✎
10:54
|
Код для проверки отсюда можно взять http://infostart.ru/public/19949/
|
|||
2
Сниф
28.11.11
✎
10:57
|
(1) навороченный какой-то код. Может элегантнее ЗначениеВСтрокуВнутр() и строки сравнивать?
|
|||
3
Ц_У
28.11.11
✎
11:08
|
Например, через ссылку проверяй, Объект.Комментарий <> Объект.Ссылка.Комментарий
|
|||
4
Поручик
28.11.11
✎
11:12
|
(3) Ага, очень замечательно, через ссылку весь объект читать ради комментария.
|
|||
5
Ц_У
28.11.11
✎
11:16
|
(4) да я смотрю ты начитанный, сам то не через ссылку в (1) ?
|
|||
6
Maxus43
28.11.11
✎
11:16
|
(4) в (1) по сути тоже самое... запросом выдёргиваем нужные поля ссылки и сравниваем с объектом
|
|||
7
aleks-id
28.11.11
✎
11:18
|
покури как в универсальной загрузке ХМЛ реализована обработка флага "загружать только измененные"
|
|||
8
Сниф
28.11.11
✎
11:44
|
(7) если это написано про обработку с инфостарта, то у меня доступа нет.
|
|||
9
aleks-id
28.11.11
✎
11:57
|
(8) какой нафиг старт. во всех конфах есть универсальный обмен в формате хмл
|
|||
10
Поручик
28.11.11
✎
12:02
|
(8) Могу продать. Обращайся.
|
|||
11
Stepa86
28.11.11
✎
12:11
|
А точно надо заморачиваться со сценарием "потыкал чо та на форме, получил модифицированность, нажал записать"? Раз чо то тыкал и записал - вот те и последнее изменение, и пофик, что оно совпало с предыдущими значениями
|
|||
12
Сниф
28.11.11
✎
12:16
|
(11) если пользователь потыкал и по сути ничего не изменил, но перезаписал, то ДатаПоследнегоИзменения увеличивается и объект попадет в план обмена, хотя он там для обмена и не нужен, так как реально не был изменен. Лишние движения.
|
|||
13
aleks-id
28.11.11
✎
12:18
|
(12) если он (внимание, ключевое слово!) _перезаписал_, то объект полюбому попадет в план обмена и ему плевать - изменил ты дату или нет.
|
|||
14
Kreont
28.11.11
✎
12:21
|
(0)Проверить строки до и после изменения через:
ЗначениеВСтрокуВнутр |
|||
15
Stepa86
28.11.11
✎
12:26
|
(12) там настолько большой объект, что нужно потратить кучу времени на внедрение заглушки от сценария, который может быть в 1% всех случаев?
|
|||
16
Сниф
28.11.11
✎
12:28
|
(15) большой - код web-страницы для обновления с сайтом
|
|||
17
hhhh
28.11.11
✎
13:00
|
(16) нафига вы код web-страницы включили в обмен? Приколисты.
|
|||
18
Сниф
28.11.11
✎
13:27
|
Вот что написал в результате, если кому интересно:
Процедура ПередЗаписью(Отказ) ДанныеИзменились = ЭтоНовый(); Если НЕ ДанныеИзменились Тогда Если НЕ СравнитьОбъекты(ЭтотОбъект, Ссылка.ПолучитьОбъект()) Тогда ДанныеИзменились = Истина; КонецЕсли; КонецЕсли; Сообщить(ДанныеИзменились); КонецПроцедуры //сравнивает два произвольных объекта, возвращает Истина, если они равны. Функция СравнитьОбъекты(об1, об2) стрXML1 = СериализоватьОбъектXDTO(об1); стрXML2 = СериализоватьОбъектXDTO(об2); Возврат (стрXML1 = стрXML2); КонецФункции // СравнитьОбъекты() Функция СериализоватьОбъектXDTO(Объект) Экспорт ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Объект, НазначениеТипаXML.Явное); СтрокаXML = ЗаписьXML.Закрыть(); Возврат СтрокаXML; КонецФункции |
|||
19
hhhh
28.11.11
✎
13:34
|
(18) а он у вас разве не будет сравнивать эти коды web-страниц?
|
|||
20
Сниф
28.11.11
✎
13:37
|
(19) если html хранится в реквизите справочника, то сравнит, конечно.
|
|||
21
kosts
28.11.11
✎
13:37
|
(13) Это если автоматическая регистрация. Если ручная, то есть место для фантазии.
|
|||
22
hhhh
28.11.11
✎
14:28
|
(20) тогда это будет дольше чем обмен.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |