|
Обмен РИБ | ☑ | ||
---|---|---|---|---|
0
filterhouse
23.09.13
✎
14:04
|
Всем доброго времени суток.
Необходимо доработать обмен РИБ таким образом что бы документы с датой меньше заданной не передавались из главного в подчиненный узел. Пробую реализовать через ПриОтправкеДанныхПодчиненному(), если документы я могу не отправлять, но получается что потом отдельно регистры отправляются. И что то нет идей. Может кто подскажет как справится с проблемой? |
|||
1
Живой Ископаемый
23.09.13
✎
14:05
|
почему просто не регистрировать их как измененные? важно чтобы они копились в таблице изменений?
|
|||
2
Vovan1975
23.09.13
✎
14:07
|
константа и регламентное задание, которое раз в час будет снимать регистрацию с тех объектов, дата которых меньше константы
|
|||
3
filterhouse
23.09.13
✎
14:08
|
(1) Получается если я для документа отменю авторегистрацию, то и движения не будут регистрироваться?
|
|||
4
Maxus43
23.09.13
✎
14:08
|
(3) нет
|
|||
5
filterhouse
23.09.13
✎
14:10
|
(2) Хороший вроде вариант, только не совсем понятно как реализовать. Можно разжевать немного?
|
|||
6
Живой Ископаемый
23.09.13
✎
14:12
|
2(3) при чем тут авторегистрация?
|
|||
7
Кай066
23.09.13
✎
14:12
|
(0) А смысл? Глобально какая задача стоит?
|
|||
8
filterhouse
23.09.13
✎
14:15
|
(7) Свернуть подчиненку, и выгружать документы из центральной только с определенной даты.
|
|||
9
filterhouse
23.09.13
✎
14:18
|
(6) Если я правильно понимаю, то авторегистрация будет автоматически регистрировать изменения для узла.
|
|||
10
Vovan1975
23.09.13
✎
14:20
|
(5) ну константа будет хранить рубежную дату.
Для регламентного задания запиливается свой модуль(чтобы обновления не корежились), сам процесс разрегистрации - это банальный запрос по таблицам изменеий с отбором по нужному узлу и дате(которая из константы берется), а дальше через планыобменаменеджер отменяется регистрация дока, получаются его движения и отменяется регистрации и их. Какие виды документов участсвуют в нужном плане обмена можно узнать через свойство Состав(если не путаю ничего). Вот собственно и все. |
|||
11
Живой Ископаемый
23.09.13
✎
14:23
|
2(9) да, и что? а ты удаляй программно. нужно удалить и движения - удаляй и движения.
|
|||
12
filterhouse
23.09.13
✎
14:30
|
(10) Все понятно, остался один момент. Таблицы изменений это регистр какой то? Как ним обратиться?
|
|||
13
filterhouse
23.09.13
✎
14:31
|
(11) А где это удаление нужно делать, что бы правильно было.
|
|||
14
Vovan1975
23.09.13
✎
14:32
|
(12) таблицы изменений это банальные таблицы, открой конструктор запросов и в левой верхней части есть хитрый значек, что-то типа "Показывать таблицы изменений" Включаешь его и получаешь возможность конструктором лабать запросы по изменениям.
|
|||
15
Живой Ископаемый
23.09.13
✎
14:33
|
2(13) где угодно, где в итоге не будет записано. Может и в подписке какой-то.
|
|||
16
Vovan1975
23.09.13
✎
14:35
|
(13) главное это все манипуляции запихивать в оплетку вида:
попытка начатьтранзакцию() зафиксироватьтранзакцию() исключение отмменитьтранзакицю() конецпопоытки |
|||
17
filterhouse
23.09.13
✎
14:36
|
(14) Спасибо, теперь понял.
|
|||
18
Maxus43
23.09.13
✎
14:42
|
ИМХО: легче тупо скомуниздить механизм запрета изменения данных, только воткнуть его в подписки на регистрацию изменений в обменах, и тупо не заполнять получателей, если дата меньше. Механизм по дате запрета, в т.ч. и регистров уже написан
|
|||
19
filterhouse
23.09.13
✎
14:44
|
(15) А как получить все движения документа?
|
|||
20
Maxus43
23.09.13
✎
14:45
|
(16) что это? транзакция в попытке в вакууме?)
не надо автору такого |
|||
21
Живой Ископаемый
23.09.13
✎
14:45
|
2(19) ЭтотОбъект.Движения - это коллекция
|
|||
22
filterhouse
23.09.13
✎
14:46
|
(21) Спасибо еще раз.
|
|||
23
Vovan1975
23.09.13
✎
14:46
|
(20) ну дык я надеюсь автор знает куда впихивать свой код между НачатьТранзакцию() и ЗафиксироватьТранзакцию() а?
|
|||
24
filterhouse
23.09.13
✎
15:41
|
Узел = ПланыОбмена.Полный.НайтиПоКоду("002");
Если Источник.Дата < Константы.ДатаЗапрета.Получить() Тогда ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Источник); ВсеДвижения = Источник.Движения; Для Каждого Стр Из ВсеДвижения Цикл ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Стр); КонецЦикла; КонецЕсли; В обработчике заходит в ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Источник), а при обмене, все равно доки прилетают в подчиненку. В чем дело? |
|||
25
Maxus43
23.09.13
✎
15:55
|
(24) Где ты это написал?
|
|||
26
Maxus43
23.09.13
✎
15:56
|
Что за обмен, какая конфа? Подписки на события для обменов етсь уже? Легче там изменить
|
|||
27
filterhouse
23.09.13
✎
16:00
|
(26) БП, типовая. Создал подписку на проведение.
|
|||
28
Maxus43
23.09.13
✎
16:01
|
регистрация происходит после окончания транзакции.
УдалитьРегистрациюИзменений - не надо бзать вобще, очищай список получателей |
|||
29
Maxus43
23.09.13
✎
16:02
|
короче - я бы сначала прочитал пару страниц из толстой книги по обменам
|
|||
30
Maxus43
23.09.13
✎
16:04
|
ичспользовать надо по хорошему 2 подписки: ПриЗаписи и ПередЗаписью, так, как это делается в типовых
|
|||
31
filterhouse
23.09.13
✎
16:05
|
(28) Ну почитать и вправду стоит.
А как отчистить список получателей? |
|||
32
filterhouse
23.09.13
✎
16:06
|
(30) Я хотел ПриЗаписи и ОбработкаПроведения использовать.
|
|||
33
Maxus43
23.09.13
✎
16:07
|
Источник.Обменданными.Получатели.Автозаполнение = Ложь;
Источник.Обменданными.Получатели.Очистить(); |
|||
34
Maxus43
23.09.13
✎
16:08
|
(32) транзакция одна, не надо на проведение вешать, делай на (30). Только 2 подписки там для разного, одна для регистрации Объекта, другая для регистрации Ссылки. Если нет разбивки по орагнизациям и других фильтров - то только ПриЗаписи используй
|
|||
35
filterhouse
23.09.13
✎
16:10
|
(34) Ок, Спасибо, сейчас попробую.
|
|||
36
Maxus43
23.09.13
✎
16:11
|
хотя вру, надо Обе подписки, чтоб избежать косяков.
Пример: док 2013 года, мы меняем дату на 2012, значит в узел надо послать Удаление этого объекта |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |