Обработка удаленных записей регистров сведений
У клиента был создан дополнительный регистр сведений, где по каждому контрагенту хранился дополнительный признак для сайта. Для простоты будем считать, что это комментарий, который отображался клиенту в личном кабинете.
API взаимодействия с сайтом позволяло только установить этот комментарий для отдельного контрагента, причем для удаления комментария нужно было передать в параметре пустую строку.
Возникла проблема при удалении записей по контрагентам из регистра сведений. На сайте в таком случае оставались старые комментарии.
Можно было бы очистить все комментарии и выгрузить их повторно, но удалить все комментарии не позволяло API сайта.
Поэтому было решено включить регистр сведений в план обмена и при выгрузке находить удаленные записи.
Сведения об удалении у регистра сведений хранятся только по измерениям, для которых стоит флажок «Основной отбор». Поэтому, хотя у регистра было еще одно измерение, в запросе я оперирую только измерением «Контрагент».
Список для изменения я получаю вот таким запросом:
Запрос = Новый Запрос( "ВЫБРАТЬ | ЛОЖЬ КАК ЭтоУдаления, | Т.Контрагент КАК Контрагент, | Т.Комментарий КАК Комментарий |ИЗ | РегистрСведений.КомментарииКонтрагентов КАК Т | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ИСТИНА, | Т.Контрагент, | 0, | """" |ИЗ | РегистрСведений.КомментарииКонтрагентов.Изменения КАК Т |ГДЕ | Т.Узел = &Узел | И 0 В | (ВЫБРАТЬ | КОЛИЧЕСТВО(*) | ИЗ | РегистрСведений.КомментарииКонтрагентов КАК ТВнутр | ГДЕ | Т.Контрагент = ТВнутр.Контрагент) | |УПОРЯДОЧИТЬ ПО | ЭтоУдаления");
В запросе нельзя получить тип «Удаление объекта», поэтому я считаю удалением те изменения, по которым нет записей в регистре сведений.
Далее перебираю выбору запроса, если у меня удаление, я передаю пустой комментарий, иначе передаю комментарий из регистра.
Работа с удаленными записями оказалась проще, чем я думал.
Среда: УПП 1.3.89.2, Объем: 1 час.
Свежие комментарии