DigitalWand / digitalwand.admin_helper

API для сборки кастомных админок в Битриксе
MIT License
156 stars 52 forks source link

Не удаляются связанные записи при использовании виджетов в множественном режиме #112

Closed krllgranin closed 6 years ago

krllgranin commented 6 years ago

Если у виджета нет настройки VARIANTS, строки из связанной таблицы не удалятся. Заметил при использовании FileWidget в режиме MULTIPLE.

В методе \DigitalWand\AdminHelper\EntityManager::processReferencesData:

$variantsField = $fieldWidget->getSettings('VARIANTS');

...

if($result->isSuccess()){ // Удаление записей, которые не были созданы или обновлены
    foreach ($referenceStaleDataSet as $referenceData) {
        if (
            !in_array($referenceData[$fieldWidget->getMultipleField('ID')], $processedDataIds) &&
        array_key_exists($referenceData[$fieldWidget->getMultipleField('VALUE')], $variantsField)
    ) {
            $result = $this->deleteReferenceData($reference,
        $referenceData[$fieldWidget->getMultipleField('ID')]);
            if(!$result->isSuccess()) {
            break; // ошибка, прерываем удаление данных
        }
    }
    }
}

До конца не понимаю архитектуру, поэтому не знаю как лучше исправить, добавить проверку на тип виджета или реализовать настройку VARIANTS у FileWidget?