![]() |
![]() |
![]() |
|
РИБ ПриОтправкеДанныхПодчиненному | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
10.12.12
✎
09:42
|
Простой вопрос.
РИБ УТ --> Розница. Хочу сделать фильтр для некоторых объектов. Добавил в модуль нужного плана обмена процедуру "ПриОтправкеДанныхПодчиненному" Установил точку останова. Выполняю обмен. В процедуру не попадаю. Что я сделал не так? |
|||
1
Нуф-Нуф
10.12.12
✎
09:42
|
отладка на сервере?
|
|||
2
Maxus43
10.12.12
✎
09:43
|
Фильтры надо делать на этапе регистрации объектов, а не на этапе выгрузке. Имхо
|
|||
3
Нуф-Нуф
10.12.12
✎
09:44
|
(2) имхо "это зависит от..."
|
|||
4
Галахад
гуру
10.12.12
✎
09:44
|
(1) Ай-яай-яай.
|
|||
5
mikecool
10.12.12
✎
09:45
|
(3) да ни от чего это не зависит, это правильно... в при отправке уже не надо думать
|
|||
6
Нуф-Нуф
10.12.12
✎
09:47
|
(5) когда у тебя куча народу колбасит кучу документов, и стоит какая-нибудь хитрая подписка, которая регистрирует или нет - можно нарваться на блокировки. а когда в момент обмена один раз откидываются лишние данные - это выгоднее.
так что зависит от конкретной ситуации |
|||
7
Serg_1960
10.12.12
✎
09:51
|
(как бы сомнение) "...которая регистрирует или нет - можно нарваться на блокировки" - с чего это вдруг?
Без подписки - регистрация всего, с подпиской - только некоторых. С чего это вдруг увеличивается вероятность нарваться на блокировки? |
|||
8
dmpl
10.12.12
✎
09:54
|
(7) Ну дык твоя проверка может выполняться далеко не мгновенно.
|
|||
9
Maxus43
10.12.12
✎
09:58
|
(8) проверка выполняется в момент записи объекта, это 0-1% времени примерно...
Далее ситуация (0) в таблицах регистрации - куча объектов, в т.ч. и не нужных. Время обмена вырастет сильно, т.к. ПрочитатьИзменения - будет работать долго шо пистец + проверки на выгрузке данных. Как мы знаем - при обмене Блокируются таблицы изменений, т.е. блокировки даже на чтение, в итоге в это время хрен работать с базой получится. Отсюда - при больших объёмах баз/обменов однозначно (2) |
|||
10
Галахад
гуру
10.12.12
✎
10:00
|
О, да тут настоящие мастера собрались.
Подскажите как удалить элемент справочника в УТ, что бы он не удалился в Рознице. |
|||
11
Serg_1960
10.12.12
✎
10:00
|
(8) Не согласен. Сеанс обмена (и проверка, соответсвенно) тоже не в сферическом вакуме осуществляется.
|
|||
12
Maxus43
10.12.12
✎
10:02
|
(10) удаляй, и заодно удали регистрацию в обмене
|
|||
13
Галахад
гуру
10.12.12
✎
10:03
|
(12) Как?
|
|||
14
Леха Дум
10.12.12
✎
10:03
|
(10) В правилах обмена прописывать нужно
|
|||
15
Maxus43
10.12.12
✎
10:04
|
в ручную удалить регистрацию? обработкой "РегистарцияИзмененийДляОбмена"
в коде - ПланыОбменаМенеджер (ExchangePlansManager) УдалитьРегистрациюИзменений (DeleteChangeRecords) Синтаксис: УдалитьРегистрациюИзменений(<Узлы>, <Данные>) |
|||
16
Maxus43
10.12.12
✎
10:05
|
и да, планы обмена хз какие там у вас
|
|||
17
Галахад
гуру
10.12.12
✎
10:11
|
(14) Как?
(15) В данные что писать? Нарисовал так, но не очень как-то: Функция ПолучитьУдаленныеСсылки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ном.Ссылка.ссылка как ссылка, | ВЫБОР | КОГДА ЕСТЬNULL(Ном.Ссылка.ссылка, 0) = 0 | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ КАК Усл, | Ном.Узел |ПОМЕСТИТЬ тз |ИЗ | Справочник.Номенклатура.Изменения КАК Ном |ГДЕ | Ном.Узел = &Узел |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | тз.Ссылка, | тз.Узел, | тз.Усл |ИЗ | тз КАК тз |ГДЕ | тз.Усл = 0"; Запрос.УстановитьПараметр("Узел", ); Запрос.УстановитьПараметр("Усл", ); Результат = Запрос.Выполнить(); Возврат Результат; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) Рез = ПолучитьУдаленныеСсылки(); Если Рез.Пустой() Тогда Возврат; КонецЕсли; Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл ПланыОбмена.УдалитьРегистрациюИзменений(Выборка.Узел, Выборка.Ссылка); КонецЦикла; КонецПроцедуры |
|||
18
mikecool
10.12.12
✎
10:12
|
(6) да нифига это не выгодно, регистрация - доля секунды, а когда у тебя обмен раз пять минут и блокируются на выборке таблицы - еще то овно
|
|||
19
Serg_1960
10.12.12
✎
10:22
|
(имхо) Проще сделать ручную регистрацию и регистрировать все изменения, кроме пометки удаления и сам факт удаления. Но: автор нарвется в будущем на проблемы из-за рассогласования номенклатуры.
|
|||
20
dmpl
10.12.12
✎
10:25
|
(9) Дык если, например, обмен в 7:00 (когда еще никого нет), в 12:30 (в обед) и в 19:00 (когда все ушли) - кому это помешает?
|
|||
21
dmpl
10.12.12
✎
10:26
|
(19) Скорее ему удаленная номенклатура вернется из Розницы, когда ее там поменяют.
|
|||
22
Maxus43
10.12.12
✎
10:30
|
(20) так да не так, ситуации разные. у нас 15 узлов, обмены в Цетре почти постоянные...
Время на выборочную регистрацию и сопуствующие мифические блокировки в вакууме - минимальны, по сравнению с тем же чтением-выборкой изменений, ненужных по сути. Ну если обмены часто надо |
|||
23
Галахад
гуру
10.12.12
✎
11:25
|
Вопщем как-то так:
МетаданныеПланаОбмена = УзелОбмена.Метаданные(); ТипДанныхУдаления = Тип("УдалениеОбъекта"); // осталось теперь все измененные данные получить и их поместить в дерево ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, УзелОбмена.НомерОтправленного + 1, Метаданные.Справочники.Номенклатура); Пока ВыборкаИзменений.Следующий() Цикл // имененный элемент Данные = ВыборкаИзменений.Получить(); // данные должны быть Если Данные = Неопределено Тогда Продолжить; КонецЕсли; ЭтоУдаление = (ТипДанныхУдаления = ТипЗнч(Данные)); Если НЕ ЭтоУдаление Тогда Продолжить; КонецЕсли; ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Данные); КонецЦикла; |
|||
24
dmpl
10.12.12
✎
11:34
|
(22) Дык об чем и речь - ситуации разные бывают.
|
|||
25
Нуф-Нуф
10.12.12
✎
11:37
|
(18) кстати да, может ты и прав
|
|||
26
Maxus43
10.12.12
✎
11:39
|
(24) Есть ситуация когда устроит такой подход, а подход (2) устроит всегда, лучше не придумали, это по феншую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |