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