КД 2.1 Перенос регистра сведений (немного различный по структуре) #789729


#0 by AneJIbcuH
День добрый! Умельцы КД 2, может кто подскажет такой момент в обмене между базами А --> Б: В Базе А, есть простенький периодический регистр сведений (измерение: Номенклатура, Ресурс: Сегмент). В Базе Б подобный, но не периодический. Сегменты в базах одинаковые, кроме одного! В Базе А есть сегмент "Без сегмента". Необходимо обмениваться так, что при установке в базе А номенклатуры с сегментом "Без сегмента", в базе Б по этой номенклатуре все сегменты очищались (не было записей в регистре по этой номенклатуре), в остальном же регистр наполнялся обычным образом. Как можно такое провернуть?
#1 by vicof
ВыгрузитьПоПравилу
#2 by AneJIbcuH
понимаю, как использовать просто для выгрузки. А как обработать момент: Когда выгружается: (Номенклатура, Сегмент = БезСегмента), при этом записи в приемнике по этой номенклатуре очищаются?
#3 by AneJIbcuH
Есть у кого идеи? :)
#4 by Wit77
Мне кажется тут надо перед загрузкой (или при загрузке) проверять заполнение сегмента и если "БезСегмента", то удалять записи в РС и отменять загрузку этой записи регистра.
#5 by AneJIbcuH
да, такая идея была сразу, но "Перед загрузкой" мы ещё не получили найденные  в базе приемнике ссылки на спр. = БезСегмента и соответствующую номенклатуру (то есть непонятно что грузим), а если использовать "При загрузке", то там "Отказ = Истина" не работает, т.е. не можем отменить запись регистра (по крайне мере в документации "Отказ" не значится)
#6 by azt-yur
Обрабатывай регистр в обработчике ПослеЗагрузкиДанных конвертации. Если встал сегмент БезСегмента то удаляй записи
#7 by AneJIbcuH
Замечательная идея. Получается пусть регистр грузится как есть со всеми сегментами, а в "ПослеЗагрузкиДанных" получаю набор записей по сегменту "Без сегмента" и очищаю.
#8 by AneJIbcuH
Блин, вылез нюанс.. Оказывается в базе А "Сегмент" - это Ресурс, а в базе Б - Измерение. Т.е. в базе А сегмент на текущую дату всегда один для номенклатуры, а в базе Б может и не один и при переносе в базу Б, он не затрет запись по старому сегменту, а добавит новый (будет их два).  И как можно тогда перед загрузкой в базу Б очистить сегменты по этой номенклатуре в регистре?
#9 by azt-yur
получаешь все номенклатуры для которых есть сегмент БезСегмента и удаляешь по ним все записи
#10 by AneJIbcuH
Рассуждаю с точки зрения оптимальности. Пока идея такая: создаю в "ПередЗагрузкойДанных" конвертации ТЗ, с полями "Номенклатура" и "Сегмент". Далее в ПКО Регистра сведений в "После загрузки" наполняю ТЗ полученными данными, отказываюсь от записи (Отказ = Истина). Возвращаюсь "ПослеЗагрузкиДанных" конвертации с заполненным ТЗ и начинаю ковырять регистр, т.е. получаю из ТЗ Номенклатуру, очищаю по ней регистр и добавляю новую запись из этой ТЗ.
#11 by Wit77
Может проще структуру регистра привести к одинаковому виду в двух базах? Не рассматривал такой вариант? возможно трудозатрат будет больше, но в будущем должен быть выигрыш т.к. уйдут все "нюансы" и связанные с ними ошибки.
#12 by AneJIbcuH
Структуру регистра в Базе А проектировал не я. И уже достаточно много обработок, документов связаны с ним. В базе Б - это типовой регистр, точно исправлять не хотелось бы.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С