Обработка удаленных записей регистров сведений

У клиента был создан дополнительный регистр сведений, где по каждому контрагенту хранился дополнительный признак для сайта. Для простоты будем считать, что это комментарий, который отображался клиенту в личном кабинете.

API взаимодействия с сайтом позволяло только установить этот комментарий для отдельного контрагента, причем для удаления комментария нужно было передать в параметре пустую строку.

Возникла проблема при удалении записей по контрагентам из регистра сведений. На сайте в таком случае оставались старые комментарии.

Можно было бы очистить все комментарии и выгрузить их повторно, но удалить все комментарии не позволяло API сайта.

Поэтому было решено включить регистр сведений в план обмена и при выгрузке находить удаленные записи.

Сведения об удалении у регистра сведений хранятся только по измерениям, для которых стоит флажок «Основной отбор». Поэтому, хотя у регистра было еще одно измерение, в запросе я оперирую только измерением «Контрагент».

Список для изменения я получаю вот таким запросом:

Запрос = Новый Запрос(
"ВЫБРАТЬ
|	ЛОЖЬ КАК ЭтоУдаления,
|	Т.Контрагент КАК Контрагент,
|	Т.Комментарий КАК Комментарий
|ИЗ
|	РегистрСведений.КомментарииКонтрагентов КАК Т
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|	ИСТИНА,
|	Т.Контрагент,
|	0,
|	""""
|ИЗ
|	РегистрСведений.КомментарииКонтрагентов.Изменения КАК Т
|ГДЕ
|	Т.Узел = &Узел
|	И 0 В
|			(ВЫБРАТЬ
|				КОЛИЧЕСТВО(*)
|			ИЗ
|				РегистрСведений.КомментарииКонтрагентов КАК ТВнутр
|			ГДЕ
|				Т.Контрагент = ТВнутр.Контрагент)
|
|УПОРЯДОЧИТЬ ПО
|	ЭтоУдаления");   

В запросе нельзя получить тип «Удаление объекта», поэтому я считаю удалением те изменения, по которым нет записей в регистре сведений.

Далее перебираю выбору запроса, если у меня удаление, я передаю пустой комментарий, иначе передаю комментарий из регистра.

Работа с удаленными записями оказалась проще, чем я думал.

Среда: УПП 1.3.89.2, Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *