|
БСХП РИБ, дата запрета, дата изменения | ☑ | ||
---|---|---|---|---|
0
Wefast
27.11.20
✎
16:56
|
У клиента странный РИБ, регистрация объектов дописана, чтобы не все данные уходили в узел.
В узле вообще ничего не регистрируется. Закрывают месяц и все прочее делается паралельно в узле и центре. Дата запрета загрузки или дата запрета изменения никак не блокируется входящие данные из центра в узел. Где вообще происходит этот анализ загрузки? Где можно вмешаться в процесс загрузки и все таки запретить загрузку данных если не проходит по дате запрета(какой либо)? |
|||
1
Kassern
27.11.20
✎
16:59
|
Может там вот это условие отрабатывает?
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; |
|||
2
Wefast
27.11.20
✎
18:29
|
(1) Может конечно, в каком то модуле или не одном.
Но обычная синхронизация по дате запрета загрузки не загружает документы. |
|||
3
Фрэнки
27.11.20
✎
19:20
|
ничего не понятно из описания топика
Кто выгружает, куда загружает... Существенно, режим обмена между базами через файл или нет? Еще существенно, это актуальная, на уровне актуальной БП 3 - там обмен написан не так, как писали раньше. Есть возможности увидеть состав зарегистрированных к обмену объектов прямо средствами типовой. В топике нет указания на это. Ну а если порассуждать, то скорей всего "вообще ничего не регистрируется" - это не так. Регистрация объектов происходит в процедурах, подвязанными к подпискам на события ПриЗаписи или что-то в этом духе. Там внутри процедур глубоко-глубоко в стеке вызова процедур происходит обращение к записанным куда-то правилам обмена. Правила можно отредактировать где-то сбоку от основной конфигурации и загрузить в настроенный узел. Если сделано так, как я это себе намечтал (инфы для такого мечтания никакой), то обычно там нет будет зарегистрированных объектов для передачи из того узла, откуда выгружать запрещено. Соотв. и загружаться ничего не будет. Хотя, если посмотреть на состав плана обмена, то может показаться с первого взгляда, что все должно и выгружаться и загружаться. Можно, по идее, и при загрузке где-то вкорячить код, который будет пропускать объекты из обмена, но нафига? Когда гораздо быстрей будет проходить обмен, если "ненужные" объекты просто не регистрировать и соотв не выгружать. |
|||
4
Wefast
27.11.20
✎
21:09
|
(3) Попробую более детально.
Бухгалтерия сельскохозяйственного предприятия, редакция 3.0 Настроен типовой полный РИБ(1 подчиненный узел). Базы файловые, обмен через файл. Базы на одном ПК Можно зайти Администрирование - Синхронизация и там посмотреть список зарегистрированных объектов Есть добавленный реквизит Упр\Рег Есть дописка(расширение) в модуле (ОбменДаннымиРИБСобытия) регистрации объектов, в центральной базе - проверка на тип документа и на значение Упр\Рег. В подчиненном узле расширение полностью не пропускает регистрацию изменений. Все это работает. Идея такая. В центральной базе создают документы, они уходят в подчиненный узел. После чего эти документы изменяются в центральной базе и подчиненном узле параллельно и у них необходимость, чтобы эти изменения не передавались больше. Было рассчитано(ранее кем то) что дата запрета загрузки в подчиненном узле будет эти изменения не пропускать при загрузке. Но с РИБом дата запрета загрузки не работает(на ИТС это задокументировано где то) Потом я предположил, что дата запрета изменений должна будет точно не дать внести изменения. Но тоже нет. Беглым поиском в отладке по модулям во время загрузки я не увидел где можно было бы эту проверку на дату запрета прописать, чтобы обмен не падал. |
|||
5
Фрэнки
27.11.20
✎
21:19
|
По моему, эта дата запрета должна влиять на регистрацию изменяемых документов, а не на загрузку уже попавших в файл. Тут сам смысл в том, чтоб снижать насколько возможно объем выгружаемых данных. Т.е. надо смотреть не на стороне приемника, а стороне регистрации измененных.
|
|||
6
Фрэнки
27.11.20
✎
21:25
|
Я бы посмотрел на то, как выполнен код запрета регистрации в подчиненном узле, т.е. в его расширении и сделал бы измененное на него похоже расширение для центрального узла, которое бы в базе центра контролировало условие дней отсрочки. Ну там можно просто сравнивать, если документы центра регистрируются оперативно (день или не позже чем через день), то пропускать
а если текущая дата сеанса больше или равна даты документа плюс разрешенное число дней отсрочки, то в регистрацию не пускать. |
|||
7
Wefast
27.11.20
✎
23:08
|
(6) Спасибо, интересный вариант, а главное не сложный.
Подумал, что можно еще добавить реквизит "Перенесен". И в момент регистрации документа прописывать его. При следующем изменение - смотреть на новый реквизит и если он еще зарегистрирован на узле(т.е. не было обмена) - то регистрировать, а если уже ушел в узел - он больше не будет регистрироваться. А вообще в обычной синхронизации, в базе приемнике документы точно не проходят по дате запрета, там даже вкладка в "предупреждениях" есть, что мол вот эти док-ты не приняты по дате запрета. |
|||
8
Фрэнки
28.11.20
✎
01:27
|
(7) только для чистоты и безопасности ставить это не реквизитом, а допсведением. Оно там должно быть в конфигурации в типовом виде, нужно просто настроить его и считывать.
|
|||
9
Wefast
04.12.20
✎
14:31
|
В общем есть общий модуль ОбменДаннымиСобытия
В ней процедура ПроверитьНаличиеЗапретаЗагрузкиПоДате В начале код: Если ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(Отправитель.Ссылка) Тогда Возврат; КонецЕсли; Вот этот код закомментил и дата запрета загрузки заработала. Есть регистр сведений РезультатыОбменаДанными В модуле формы есть процедура ЗаполнитьСписокУзлов Там есть код: Если ЭтоУзелПланаОбменаРИБ Тогда ОтсутствуетОбменРИБ = Ложь; КонецЕсли; Его закомментил и теперь можно посмотреть если какие то документы не прошли по дате запрета |
|||
10
Фрэнки
04.12.20
✎
14:39
|
(9) ну оно примерно там и должно было быть. Только проверку поставили кодом в самом начале спуска по стэку вызова процедур и функций, чтоб наверняка отрубить.
Но ты пытаешься установить совсем не ту логику, которую ставили разработчику. Тут очевидно, что его код отрезает на Периферийном узле любую регистрацию изменений. И должно отрубать именно там. А твоя постановка в том, чтобы разрешить регистрацию в Центральной Базе по какому-то условию, в данном случае по условию даты запрета изменений. Если это так, то Если ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(Отправитель.Ссылка) Тогда Возврат; КонецЕсли; срабатывал везде и возвращал всегда Истина и возврат для всех уже записанных объектов. Получается, что новые объекты как-то умудрялись регаться измененными в другом месте и затем выгружались в обмен. А загружаемые в ПБ уже никак не регались, т.к. при загрузке из обмена регистрации изменений нет нигде |
|||
11
Фрэнки
04.12.20
✎
14:41
|
Надо бы не просто комментить код ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(Отправитель.Ссылка)
но выявить причину, что он возвращает всегда истину, хотя возврат в Центре и ПБ должен быть разным |
|||
12
Wefast
07.12.20
✎
12:08
|
(11) не очень понял.
Этот код срабатывает при получение данных То что я закоментил отключает проверку на дату запрета загрузки в случае РИБ А мне она как раз и была нужна. Отмена регистрации прописана в других процедурах того же модуля МеханизмРегистрацииОбъектовПередЗаписью МеханизмРегистрацииОбъектовПередУдалением МеханизмРегистрацииОбъектовПередЗаписьюРегистра МеханизмРегистрацииОбъектовПередЗаписьюДокумента |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |