|
КД 2.1 Перенос регистра сведений (немного различный по структуре) | ☑ | ||
---|---|---|---|---|
0
AneJIbcuH
25.01.17
✎
09:55
|
День добрый! Умельцы КД 2, может кто подскажет такой момент в обмене между базами А --> Б:
В Базе А, есть простенький периодический регистр сведений (измерение: Номенклатура, Ресурс: Сегмент). В Базе Б подобный, но не периодический. Сегменты в базах одинаковые, кроме одного! В Базе А есть сегмент "Без сегмента". Необходимо обмениваться так, что при установке в базе А номенклатуры с сегментом "Без сегмента", в базе Б по этой номенклатуре все сегменты очищались (не было записей в регистре по этой номенклатуре), в остальном же регистр наполнялся обычным образом. Как можно такое провернуть? |
|||
1
vicof
25.01.17
✎
10:16
|
ВыгрузитьПоПравилу
|
|||
2
AneJIbcuH
25.01.17
✎
11:00
|
(1) понимаю, как использовать просто для выгрузки. А как обработать момент: Когда выгружается: (Номенклатура, Сегмент = БезСегмента), при этом записи в приемнике по этой номенклатуре очищаются?
|
|||
3
AneJIbcuH
30.01.17
✎
06:07
|
Есть у кого идеи? :)
|
|||
4
Wit77
30.01.17
✎
07:53
|
(2) Мне кажется тут надо перед загрузкой (или при загрузке) проверять заполнение сегмента и если "БезСегмента", то удалять записи в РС и отменять загрузку этой записи регистра.
|
|||
5
AneJIbcuH
30.01.17
✎
08:31
|
(4) да, такая идея была сразу, но "Перед загрузкой" мы ещё не получили найденные в базе приемнике ссылки на спр. = БезСегмента и соответствующую номенклатуру (то есть непонятно что грузим), а если использовать "При загрузке", то там "Отказ = Истина" не работает, т.е. не можем отменить запись регистра (по крайне мере в документации "Отказ" не значится)
|
|||
6
azt-yur
30.01.17
✎
08:41
|
Обрабатывай регистр в обработчике ПослеЗагрузкиДанных конвертации. Если встал сегмент БезСегмента то удаляй записи
|
|||
7
AneJIbcuH
30.01.17
✎
09:03
|
(6) Замечательная идея. Получается пусть регистр грузится как есть со всеми сегментами, а в "ПослеЗагрузкиДанных" получаю набор записей по сегменту "Без сегмента" и очищаю.
|
|||
8
AneJIbcuH
30.01.17
✎
09:21
|
Блин, вылез нюанс.. Оказывается в базе А "Сегмент" - это Ресурс, а в базе Б - Измерение. Т.е. в базе А сегмент на текущую дату всегда один для номенклатуры, а в базе Б может и не один и при переносе в базу Б, он не затрет запись по старому сегменту, а добавит новый (будет их два). И как можно тогда перед загрузкой в базу Б очистить сегменты по этой номенклатуре в регистре?
|
|||
9
azt-yur
30.01.17
✎
09:40
|
(8) получаешь все номенклатуры для которых есть сегмент БезСегмента и удаляешь по ним все записи
|
|||
10
AneJIbcuH
30.01.17
✎
09:52
|
(9) Рассуждаю с точки зрения оптимальности. Пока идея такая: создаю в "ПередЗагрузкойДанных" конвертации ТЗ, с полями "Номенклатура" и "Сегмент". Далее в ПКО Регистра сведений в "После загрузки" наполняю ТЗ полученными данными, отказываюсь от записи (Отказ = Истина). Возвращаюсь "ПослеЗагрузкиДанных" конвертации с заполненным ТЗ и начинаю ковырять регистр, т.е. получаю из ТЗ Номенклатуру, очищаю по ней регистр и добавляю новую запись из этой ТЗ.
|
|||
11
Wit77
30.01.17
✎
12:50
|
(10) Может проще структуру регистра привести к одинаковому виду в двух базах? Не рассматривал такой вариант? возможно трудозатрат будет больше, но в будущем должен быть выигрыш т.к. уйдут все "нюансы" и связанные с ними ошибки.
|
|||
12
AneJIbcuH
31.01.17
✎
05:08
|
(11) Структуру регистра в Базе А проектировал не я. И уже достаточно много обработок, документов связаны с ним. В базе Б - это типовой регистр, точно исправлять не хотелось бы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |