![]() |
|
Планы обмена. Регистрировать только при изменении, а не проведении документов | ☑ | ||
---|---|---|---|---|
0
Ахмадинежад
08.07.14
✎
16:18
|
Документ становится зарегистрированным как изменённый, даже если он не менялся, а просто перепровелся.
Как сделать так, чтобы только при изменении регистрация в планах обмена происходила? ___ в лоб что-ли... подписку на событие - перед записью и после записи на ДокументОбъект (все документы) и глобальную перменную - в которую запихивать ЗаписьХМЛ, сделанную из источника в "ПередЗаписью". И затем в приЗаписи снова источник в ЗаписьХМЛ и сравнивать с глоабльной переменной как строки - если отличаются - регим изменения... |
|||
1
Fragster
гуру
08.07.14
✎
16:19
|
а кто тебе сказал, что там ничего не изменилось от того что он "перепровелся"?
|
|||
2
Fragster
гуру
08.07.14
✎
16:20
|
сделай как в УТ - если док проведен, то открывать его только на чтение
|
|||
3
Ахмадинежад
08.07.14
✎
16:22
|
(1) эээ.. надо проверить.. но думаю, вряд ли ж..
(2) очень смешно |
|||
4
Ахмадинежад
08.07.14
✎
16:22
|
УПП да..
|
|||
5
Ахмадинежад
08.07.14
✎
16:23
|
т.е. при проведении без открытия формы он становится зареген, как изменённый
|
|||
6
Maxus43
08.07.14
✎
16:24
|
это нормально.
Вот будешь восстанавливать последовательность расчетов например, там только перепроведение, но движения то другие. Не надо с этим эксперементировать. Для актуальности информации - пусть всё бегает как заложено природой |
|||
7
Fragster
гуру
08.07.14
✎
16:24
|
(3).2 на самом деле юзеры, которые закрывают документ кнопкой ОК задолбали.
в УТ сделано так - открывается только на чтение, потом при необходимости нажимается кнопка "изменить" |
|||
8
Ахмадинежад
08.07.14
✎
16:32
|
движения пусть различаются в базах, а вот документы, которые не изменялись - не должны снова экспортироваться.
Можно было бы сравнивать при импорте в приёмник, но в приёмнике документы правятся, т.е. отличаются от документов источника, и, получается, по-любому будет разница. А нужно экспортировать только изменённые. |
|||
9
Alex S D
08.07.14
✎
16:34
|
ладно, сделай
|
|||
10
Alex S D
08.07.14
✎
16:34
|
посмотри как в ут11
|
|||
11
Ахмадинежад
08.07.14
✎
16:45
|
(10) а там только изменённые уходят?
|
|||
12
Fragster
гуру
08.07.14
✎
16:46
|
(11) нет
|
|||
13
hhhh
08.07.14
✎
16:56
|
(11) вообще-то это очень полезная штука, нажимаешь ОК и документ регистрируется. Если нужно в обмен направить неизмененные документы, самое то. Подумай от чего ты отказываешься.
|
|||
14
Alex S D
08.07.14
✎
16:57
|
(11) да
|
|||
15
hhhh
08.07.14
✎
16:57
|
(13)+ кстати у меня при проведении не регистрируются почему-то.
|
|||
16
Necessitudo
08.07.14
✎
16:59
|
Отключить авторегистрацию и регистрировать программно.
|
|||
17
Ахмадинежад
08.07.14
✎
16:59
|
(11)менять могут обработкой.
(14)как план обмен называется, или он там один? нету щас под рукой УТ11 (15)ну вот.. )) блин. план обмена с нуля создавал.. |
|||
18
Alex S D
08.07.14
✎
17:01
|
из ут:
Если ЗарегистрироватьОбъектКВыгрузке ИЛИ Источник.ЭтоНовый() ИЛИ Источник.ОбменДанными.Загрузка Тогда // для наборов записей регистров, // при физическом удалении объектов, // для новых объектов, // для объектов записанных по обмену данными // регистрируем изменения всегда Возврат Истина; ИначеЕсли РежимЗаписи <> Неопределено И ИзмененоПроведениеДокумента(Источник, РежимЗаписи) Тогда // если изменен признак документа "Проведен", то считаем документ измененным Возврат Истина; КонецЕсли; ИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); ТаблицаРеквизитовРегистрации = ОбменДаннымиПовтИсп.ПолучитьТаблицуРеквизитовРегистрации(ИмяОбъекта, ИмяПланаОбмена); Если ТаблицаРеквизитовРегистрации.Количество() = 0 Тогда // если правила ВРО не заданы, то считаем, что фильтра ВРО нет. // объект модифицирован всегда Возврат Истина; КонецЕсли; Для Каждого СтрокаТаблицыРеквизитовРегистрации ИЗ ТаблицаРеквизитовРегистрации Цикл ЕстьИзмененияВерсийОбъектов = ОпределитьИзмененияВерсийОбъекта(Источник, СтрокаТаблицыРеквизитовРегистрации); Если ЕстьИзмененияВерсийОбъектов Тогда Возврат Истина; КонецЕсли; КонецЦикла; // если дошли до конца, то объект не изменился по реквизитам регистрации; // регистрация на узлах не нужна Возврат Ложь; |
|||
19
Alex S D
08.07.14
✎
17:03
|
(17) причем тут план обмена?
|
|||
20
Alex S D
08.07.14
✎
17:04
|
регистрация в подписке перед записью идет
|
|||
21
Alex S D
08.07.14
✎
17:06
|
+ в планеобмена должен стоять запрет авторегистрации
|
|||
22
Ахмадинежад
08.07.14
✎
17:07
|
(18) а как метод "ОпределитьИзмененияВерсийОбъекта" определяет что было изменение?
|
|||
23
Alex S D
08.07.14
✎
17:10
|
(22) легко.. объект же еще не записан в базу
|
|||
24
Ахмадинежад
08.07.14
✎
17:11
|
спасибо всем откликнувшимся, ухожу в офф
|
|||
25
Alex S D
08.07.14
✎
17:11
|
объект до изменения:
ТекстЗапроса = " |ВЫБРАТЬ " + СтрокаТаблицыРеквизитовРегистрации.РеквизитыРегистрации + " ИЗ " + СтрокаТаблицыРеквизитовРегистрации.ИмяОбъекта + " КАК ТекущийОбъект |ГДЕ | ТекущийОбъект.Ссылка = &Ссылка |"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Возврат Запрос.Выполнить().Выгрузить(); |
|||
26
Alex S D
08.07.14
✎
17:11
|
ну а после это источник события
|
|||
27
Ахмадинежад
08.07.14
✎
17:11
|
(23)т.е. только новые регит, а перезаписанные (с изменёнными данными) нет ?
|
|||
28
Alex S D
08.07.14
✎
17:12
|
(27) регит только измененные
|
|||
29
Ахмадинежад
08.07.14
✎
17:12
|
ааа, точно, туплю. не записан в базу с изменёнными данными в событии "передЗаписью", точно !!
|
|||
30
Ахмадинежад
08.07.14
✎
17:13
|
сравниваю свйоства Источника с резултатом запроса
|
|||
31
Alex S D
08.07.14
✎
17:14
|
именно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |