Имя: Пароль:
1C
1С v8
КД - необычный обмен
,
0 КУНГ ФУ 1С
 
05.02.14
10:45
Настроил обмен между двумя конфигурациями А и Б.
Из конфигурации А выгружаю определенные документы в конфигурацию Б.
Изначальная задача:
Настроить обмен так чтобы при удалении объекта из конфигурации А, в конфигурации Б, он оставался как есть. Суть: конфигурация А - является бухгалтерский базой, а конфигурация Б - управленческой. Иногда приходится продажи скрывать, для этого бухгалтер удаляет некоторые продажи с базы А. В базе Б - хранятся все продажи.

Настроил КД, с правилами обмена следующими:
В базе А, перед выгрузкой объектов, поставил условие Отказ = Объект.ПометкаУдаления;

Все вроде ничего, при пометке удалении в базе А, данные в базе Б - не изменяются, остаются проведенными.
Но после операции Удаление помеченных на удаление в базе А. В базе Б - документы помечаются на удаление.

Как решить данный вопрос?
1 КУНГ ФУ 1С
 
05.02.14
10:48
Понимаю что нужно в КД поставить условие если объекта не существует то отказаться от выгрузки. Но как прописать данное условие?
2 hhhh
 
05.02.14
11:00
Отказ = Истина;
3 КУНГ ФУ 1С
 
05.02.14
11:13
(2) Как проверить что объекта уже нет в ИБ.
4 Fedor-1971
 
05.02.14
11:22
Поиграйся с флажками:
в ПКО документа "не замещать объект в приёмнике..."
в ПКС свойства ПометкаУдаления "Не замещать значение свойства для существующих объектов"
5 Йохохо
 
05.02.14
11:24
не что то такое?
Если ТипОбъекта = Тип("УдалениеОбъекта"); Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецЕсли;
6 Fedor-1971
 
05.02.14
11:25
(4)+ Наверно, ПКС будет правильнее, поскольку флажок в ПКО не даст загрузить исправленные документы в базе источнике
7 Йохохо
 
05.02.14
11:29
(6) только объекта нет, ага
8 Vovan1975
 
05.02.14
11:35
возможно что в обмене участвует некий план обмена, по которому и выбираются документы. И те, которые потерты, выгружаются по другому правилу, которое в результате и устанавливает пометку на удаление в базе-приемнике
9 Fedor-1971
 
05.02.14
11:37
(7) а откуда тогда пометка удаления в базе приёмнике? Если объекта нет, то и в выгрузку ничего не должно попасть, соответственно и загружать просто нечего.
10 Vovan1975
 
05.02.14
11:40
другой вариант - использование параметра, в который при загрузке в базу-приемник пихаются сведения о каждом документе выгрузки, затем все эти сведения сравниваются со списком документов за период и "отсутствующие" помечаются на удаление.
11 Йохохо
 
05.02.14
11:42
(9) см (8)
12 Зойч
 
05.02.14
11:43
через планы обмена выгрузка?
13 КУНГ ФУ 1С
 
05.02.14
11:48
(12) Нет. Обмен происходит по правилам настроенные в КД.
(9) В том дело, что в момент удаление с ИБ источника (база А), он успевает регистрировать события во всех планах обмена, что он удален. В момент обмена, настроенные мной правила выгрузки (Отказ = Объект.ПометкаУдаления) игнорируются, так как документ уже удален и его в базе нет.
Соответственно в базе приемника(база Б), он читает изменения по плану обмена и тоже удаляет его. (т.к. прав нету на непосредственное удаление он помечает на удаление).
14 Зойч
 
05.02.14
11:49
(13) как обмен запускаешь?
15 КУНГ ФУ 1С
 
05.02.14
11:50
(14) Выполнить обмен, через монитор обменов. Выгрузить в базе источника, и загрузить в базе приемника.
16 Зойч
 
05.02.14
11:51
(15) конечно же через планы обмена получается
17 Йохохо
 
05.02.14
12:06
(16) +1, иначе откуда "Но после операции Удаление помеченных на удаление в базе А. В базе Б - документы помечаются на удаление.
"
18 Kvestin
 
05.02.14
13:34
(0) Все ответы по КД есть в стандартных обработка загрузки/выгрузки. Заглянул в нее и нашел что у конвертации есть соответствующий обработчик. Там даже пример есть, который на ваш вопрос отвечает:

Обработчики "Конвертация"
При получении удаления
Условия возникновения события
Событие выполняется только для On-Line обмена при получении данных об удалении объекта.

Параметры:
Объект - Объект который предполагается удалить при обмене.

Отказ - булево. Служит для отказа от удаления объекта.

Пример:

Если ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда

    Отказ = Истина;

КонецЕсли;
AdBlock убивает бесплатный контент. 1Сергей