![]() |
![]() |
![]() |
|
Как записать объект, чтобы он не попал в планы обмена? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
16.10.07
✎
12:55
|
Сабж...
Мне нужно проставить один реквизит дока, но тогда это повлечет за собой изменение всех доков, лучше уж я проставлю его во всех базах. Как получить желанное? |
|||
1
Hitcher
16.10.07
✎
13:09
|
Перед записью очистить получателей. В монопольном режиме прокатит.
|
|||
2
koreav
16.10.07
✎
13:12
|
(0) Снимаешь галку "авторегистрация", и регистрируешь когда тебе надо.
|
|||
3
Гений 1С
гуру
16.10.07
✎
13:32
|
(1) а почему только в монопольном...
(2) издеваешься, на филиалах тоже??? Это ж конфу менять!!! |
|||
4
Fram
16.10.07
✎
13:37
|
ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords) Синтаксис: УдалитьРегистрациюИзменений(<Узлы>, <Данные>) Параметры: <Узлы> (обязательный) Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив. Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений. <Данные> (необязательный) Тип: Метаданные, Неопределено, УдалениеОбъекта, Число, <Данные>. Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено. Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре. Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта. Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре. Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра. Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра. Значение по умолчанию: Неопределено Описание: Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена. Пример: // Пример 1 Спр = Справочники.Валюты.НайтиПоКоду("810"); Узел = ПланыОбмена.ПО1.НайтиПоКоду("Офис"); ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Спр); // Пример 2 // Загрузка из файла // Производим попытку открытия файла ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(ИмяФайла); Исключение Возврат; КонецПопытки; ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); Если ЧтениеСообщения.Отправитель <> Ссылка Тогда // Сообщение предназначено не для этого узла ВызватьИсключение "Неверный узел"; КонецЕсли; // Удаляем регистрацию изменений для узла отправителя сообщения ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); |
|||
5
i-rek
16.10.07
✎
13:41
|
Объект.ОбменДанными.Загрузка=Ложь;
Объект.Записать() не приведёт к регистрации изменений |
|||
6
i-rek
16.10.07
✎
13:42
|
тьху ты
Объект.ОбменДанными.Загрузка=Истина; |
|||
7
Гений 1С
гуру
16.10.07
✎
13:57
|
(5) гонишь... вроде...
(4) тогда надо еще проверять, был ли объект зарегистрирован до моей обработки... Не годится, сложно, не надежно, вдруг автообмен начнется... |
|||
8
vlsv
16.10.07
✎
14:13
|
на ИТС есть обработка, ею снять РегистрациюИзменений
|
|||
9
Гений 1С
гуру
16.10.07
✎
15:01
|
(8) Не годится, чтиай (7). Откуда я знаю, он зарегистрирован после моих изменений или по другой причине, раньше?
|
|||
10
wPa
16.10.07
✎
16:13
|
а ты сделай сначала обмен, отключи автообмен, выгоня всех из своей базы, а потом меняй док и УдалитьРегистрациюИзменений :)
|
|||
11
Гений 1С
гуру
17.10.07
✎
11:49
|
(10) Нюню... а без гамака и скафандра можно?
|
|||
12
Gamm
17.10.07
✎
11:55
|
Перед записью проверить есть ли регистрация изменений по объекту, если нету после записи удалить её.
|
|||
13
Dionisious
17.10.07
✎
12:12
|
(7)
> тогда надо еще проверять, был ли объект зарегистрирован до моей обработки... Не годится, сложно, не надежно, вдруг автообмен начнется... Три строки. Это сложно? Автообмен и отрубить можно. А можно и в транзакции сделать. Или мы не ищем легких путей? |
|||
14
i-rek
17.10.07
✎
12:24
|
и всё же я прав
см. 6 |
|||
15
i-rek
17.10.07
✎
12:25
|
а так же подумайте о том почему при загрузке сообщения записываемые объекты не регистрируют изменений и сообщение эхом не уходит обратно
|
|||
16
Feanor
17.10.07
✎
12:27
|
(15) На уровне платформы это не может быть реализовано? "ОбменДанными.Загрузка" тут, может быть, собственно, не при чем
|
|||
17
Гений 1С
гуру
17.10.07
✎
12:37
|
(12)(13) Это называется удаление гландов через ....
(14) чето не верится... (16) возможно (14) и прав, но как-то стремно, надо проверить... |
|||
18
Gamm
17.10.07
✎
12:47
|
Перед записью объекта
Объект.ОбменДанными.Получатели.Автозаполнение=Ложь; И будет тебе счастье. |
|||
19
Гений 1С
гуру
17.10.07
✎
12:51
|
1. удалил все зарегистрированные изменения.
2. убедился, что удалил. 3. Записал один док, он попал в список изменений. 4. удалил док из списка изменений. 5. Записал док в режиме "ОбменДанными.Загрузка=истина" 6. Проверил наличие дока в списке изменений. Вывод: Чувак в пункте 6 прав - если ОбменДанными.Загрузка=истина, тогда никаких контролей не производися и в планы обмена не попадает. ХИТРО, хитро. Любители скафандрического секса в гамаке из пункта (12)и (13) отдыхают. |
|||
20
Гений 1С
гуру
17.10.07
✎
13:11
|
СТОП! Я обшибся... Он все равно попадает, даже если стоит флажок...
|
|||
21
Гений 1С
гуру
17.10.07
✎
13:15
|
Помогло вот это:
Присвоить(Объект.ОбменДанными.Получатели.Автозаполнение, ложь) |
|||
22
Гений 1С
гуру
17.10.07
✎
13:18
|
Не заметил (18), догадался сам, но серавно пасибо.
|
|||
23
vde69
17.10.07
✎
13:20
|
// Процедура предназначена для использования в процедурах ПриЗаписи() обьектов
// она уменьшает размер базы, но увеличивает время записи // кроме того ее нужно вызывать для обектов без "авто регистрации" // Процедура УРБД_РегистрацияИзмененийДляУзлов(Объект) Экспорт Выборка = ПланыОбмена.Полный.Выбрать(); Пока Выборка.Следующий() Цикл Узел = Выборка.ПолучитьОбъект(); Если ПланыОбмена.Полный.ЭтотУзел() <> Узел.Ссылка Тогда Если УРБД_НуженОбмен(Объект, Узел) Тогда Объект.ОбменДанными.Получатели.Добавить(Узел.Ссылка); ИначеЕсли Объект.ОбменДанными.Получатели.Содержит(Узел.Ссылка) Тогда Объект.ОбменДанными.Получатели.Удалить(Узел.Ссылка); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
24
Гений 1С
гуру
17.10.07
✎
16:59
|
(23) Думаю, объем базы в наше время, а особенно объем плана обмена, не принципиален.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |