#0
by wirg
Есть распределенная база с 2мя узлами Центральным и периферийным. Обмен идет в обе стороны, а передаются только справочники. Опишу в кратце проблему: Допустим в Центральной базе пришел товар, оформили поступление документом и осуществили обмен с Периферийной, после чего в ней появляется номенклатура, затем её помечают на удаление и удаляют через операции удаляем без проблем, потому что документа нет(он не передается). Меняемся обратно и номенклатура пропадает в центральной базе. Была идея ограничить права на удаление в Периферийной базе, но это не устраивает заказчика. Какие пути еще могут быть???
#3
by Mitriy
не принимать удаление объектов от подчиненного, или вообще эти удаления не регистрировать
#5
by wirg
Есть в плане обмена процедура ПриПолученииДанныхОтПодчиненного, но что там нужно прописать, чтобы удаления не принимались ?
#6
by wirg
Что именно необходимо дописать, чтобы элементы не удалялись или изменения для удаленных объектов не регистрировались в центрально???
#7
by KalachevDV
1. Вариант ПриПолученииДанныхОтПодчиненного(<Элемент данных>, <Получение элемента>, <Отправка назад>) Параметры: <Элемент данных> При вызове обработчика события данный параметр содержит элемент данных, прочитанный из сообщения обмена данными. Элементами данных могут быть КонстантаМенеджерЗначения.<Имя константы>, объекты базы данных, наборы записей регистров, последовательностей или перерасчетов. Думаю при получении информации об удаленном объекте, тип "Элемент данных" будет "УдалениеОбъекта". Если получаем данные такого типа - отказываемся от загрузки. Для Этого используем второй параметр <Получение элемента>. 2й вариант. Снимаем автоматическую регистрацию данных для нужных справочников в главной базе. создаем подписку на событие нужных справочников "При записи". В подписке для нужных узлов делаем регистрацию изменений. Факт удаления объекта в этом случае не будет фиксироваться вообще и в подчиненной базе ничего делать не нужно.
#9
by Serg_1960
Согласен с но хочу уточнить :) в РИБ-базе можно: При получении данных - проверить объект на наличие ссылок. Если есть ссылки - надо а) проигнорировать удаление и б)зарегистрировать изменение для узла - "источника" удаления. Объект не будет удалён, а будет передан в узел, где он будет записан заново - но со "старым" идентификатором (т.е. будет "восстановлен")
#10
by wirg
Если не трудно примерчик реализации 2 варианта. Допустим называется РаспределеннаяБаза, значение для справочников установлены в плане обмена Авторегистрация-Запретить, Центральный узел и Периферийный. Что дальше нужно прописать в процедуре подписки??? Еще есть один вопросик по созданию начального образа базы пишу такой код(На форме есть элемент ПолеВводаОтделение с типом ПланОбменаСсылка.РаспределеннаяБаза): Выдает ошибку, пробовал Менять Узел=ЭлементыФормы.ПолеВводаОтделение.Значение.ПолучитьОбъект, 1с в обоих случаях говорит что ошибка во втором параметре. В чем не прав???
#11
by wirg
С созданием образа разобрался, всё работает. По поводу . Т.е. если правильно понимаю нужно проверить какой-то командой наличие ссылки и отправить назад, если есть. Как можно проверить наличие ссылок и правильно ли я вас понял???
#12
by Serg_1960
Синтаксис: НайтиПоСсылкам(<Список ссылок>) Параметры: <Список ссылок> (обязательный) Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти. Возвращаемое значение: Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений, состоящей из колонок с индексами: 0 - искомая ссылка; 1 - ссылка на объект, если найдена ссылка в объектной таблице; ключ записи, если ссылка найдена в независимом регистре сведений; ссылка на документ-регистратор для всех остальных необъектных таблиц; 2 - объект метаданных, которому соответствуют данные из колонки 1. Описание: Осуществляет поиск ссылок на объекты, переданные в параметре <Список ссылок>. Пример:
#17
by KalachevDV
Мне больше нравиться второй вариант на основе "ручной" регистрации изменений. В этом случае очень удобно сортировать данные по получателям. Т.е например в подчиненной базе можно отказаться от выгрузки определенных данных в центральную, например анализировав иерархию элемента справочника Номенклатура и на ее основе принимая решение в какой узел необходимо ее отослать. В этом случае ничего нигде удалять не нужно будет. а в случае большого объема данных сократит размер пакетов.
#18
by Serg_1960
Вопрос не о том "отправлять" или "не отправлять" :( Справочники надо синхронизировать - на то они и "справочники" :) А раз так, то и надо иметь механиз удаления и "защиту" от от него :). Вся "соль" в том, что в одном узле, где нет ссылок на запись, эту запись могут удалить и "удаление" отправить по другим узлам, а обмен данными такую запись "самовосстанавливает" - если хотя-бы в одном узле есть ссылки :)
#19
by KalachevDV
+1. Согласен. Но, если есть ситуация, когда в одной базе удаляют номенклатуру в ней не использующуюся, а в другой базе она используется... Не логичнее ее вообще не отправлять?
#21
by KalachevDV
А тогда удалять будет нечего. В подчиненной базе будет общая номенклатура и специфичная только для нее. Основная сложность знать наверняка где какая :)
#22
by Serg_1960
Второй вариант в ограничен "в применении" и не возможен "в принципе" когда удаление разрешено в различных узлах с различным составом объектов. Проще всего организовать удаление только в корневом узле, - и тогда, когда он "консолидирует" все объекты подчиненных узлов. В базах различный состав документов? Это допустимо :) Но различный состав (содержимое) справочников :( - не верное решение. Их содержимое должно быть "общее" и "единое" - так будет "правильнее". Особенно, если учитывать возможность различного рода изменений в будущем...
#23
by KalachevDV
Их содержимое должно быть "общее" и "единое" - так будет "правильнее". + стотыщпицот :) Нефиг удалять вообще нигде. Завели элемент, пусть будет, есть не просит. Удачи, пора по домам.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как сделать не доступным колонку в одной строке документа
- Код справочника стал не уникальным!
- Безопасность: Kerio WinRoute Firewall его бесплатный аналог
- сравнение ТИС и УТ
- Выкидывает и БД при записи элемента
- Кто обяснить эту чудо-обработку?
- Ошибка XML-протокола при работе с удаленным хранилищем конфигурации
- Удаление загрузочного раздела с флешки...
- Обмен РИБ
- Как в справочнике Номенклатура отобразить количество товара?
- формирование счет-фактуры на аванс
- Отбор счетов по субконто
- Вызвать конструктор при работе через COM
- Поиск с помощью метода Seek() в ADODB.RecordSet
- Как получить путь временного каталога 1С
- Как удобнее всего получить список подчиненных документов?
- Горячие клавиши 1с 8 в конфигураторе?
- 1С7 падпает при ФС.ВыбратьФайл()
- v8: Перенос данных Комплексная 7.7 - УПП
- как создать 2 ярлыка запуска 1с. в которых будут прописаны разные базы?