Имя: Пароль:
1C
1С v8
КД 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) Структуру регистра в Базе А проектировал не я. И уже достаточно много обработок, документов связаны с ним. В базе Б - это типовой регистр, точно исправлять не хотелось бы.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс