[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-delete-propagation::ru":3,"gloss-cluster-delete-propagation::ru":26,"gloss-next-delete-propagation::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"delete-propagation","integration","Распространение удалений","Распространение удалений — это то, как удаление записи в одной системе отражается или не отражается в другой. Это самое трудное для корректной обработки событие в любой интеграции, и причина здесь структурная, а не в старательности: запрос «всё, что изменилось с прошлого прогона» возвращает записи, которые ещё существуют, а удалённая запись — ровно та, которая не вернётся. Интеграция, построенная на таком запросе, по своему устройству слепа к удалениям.\n\nЗакрыть этот пробел можно тремя способами, и доступны они неодинаково. Источник может отдавать явное событие удаления — единственный чистый ответ, и это первое, что стоит искать в документации поставщика. Источник может вместо этого применять мягкое удаление: строка остаётся, переключается флаг, запись по-прежнему попадает в выборку изменённых, и получатель действует по флагу. Либо получатель выводит удаление из отсутствия при полном сравнении — а это работает, только если сравнение действительно было полным. Именно здесь интеграции уничтожают данные: прерванное чтение, фильтр, тихо отсёкший часть выборки, ошибка постраничного обхода или истёкшее право доступа дают ровно ту же картину, что и массовое удаление: записи были, записей нет.\n\nЭта асимметрия и должна задавать значения по умолчанию. Удаление необратимо не так, как запись неверного значения, поэтому принимающей стороне лучше помечать запись неактивной, а не убирать её, хранить идентификатор источника, чтобы восстановление было возможным, и останавливать на подтверждение человеком любой проход, который снёс бы необычно большую долю записей, вместо того чтобы продолжать, раз уж так решила логика. Там, где жёсткое удаление действительно требуется — клиент попросил стереть данные или того требует правило хранения, — этот путь заслуживает быть отдельным, осознанным и журналируемым, а не побочным эффектом обычной синхронизации.\n\nКаким бы ни был механизм, журнал аудита должен показывать, что это сделала интеграция и на какое событие она реагировала. Вопрос после исчезновения данных всегда один и тот же, и интеграция, не способная на него ответить, неотличима от той, в которой есть ещё не найденная ошибка.","Распространение удалений: как удаление в одной системе доходит до другой, почему выборка изменённых его не видит и почему отсутствие — плохое доказательство.",null,[11,14,17,20,23],{"slug":12,"name":13},"audit-log","Журнал аудита (Audit Log)",{"slug":15,"name":16},"backfill","Обратное заполнение (Backfill)",{"slug":18,"name":19},"sync-conflict-resolution","Разрешение конфликтов синхронизации",{"slug":21,"name":22},"two-way-sync","Двусторонняя синхронизация",{"slug":24,"name":25},"upsert","Upsert (вставка или обновление)",[27,31,34,38,41,44,47,50,53,56,59,62],{"slug":28,"category":5,"name":29,"updated_at":30},"api-deprecation","Устаревание API","2026-09-08T21:32:37+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"app-review","Проверка приложения",{"slug":35,"category":5,"name":36,"updated_at":37},"backend-for-frontend","Backend for Frontend (BFF)","2026-09-08T21:32:36+00:00",{"slug":39,"category":5,"name":40,"updated_at":30},"bulk-api","Массовый API",{"slug":42,"category":5,"name":43,"updated_at":37},"concurrency-limit","Лимит параллельных запросов",{"slug":45,"category":5,"name":46,"updated_at":30},"connector-versioning","Версионирование коннекторов",{"slug":48,"category":5,"name":49,"updated_at":30},"effective-permissions","Действующие права",{"slug":51,"category":5,"name":52,"updated_at":37},"event-ordering","Порядок событий",{"slug":54,"category":5,"name":55,"updated_at":37},"field-mapping","Сопоставление полей (field mapping)",{"slug":57,"category":5,"name":58,"updated_at":37},"function-schema","Схема функции",{"slug":60,"category":5,"name":61,"updated_at":37},"grpc","gRPC",{"slug":63,"category":5,"name":64,"updated_at":37},"integration-marketplace","Каталог интеграций (integration marketplace)"]