|   |   | 
| 
 | КД2: удаление записей набора регистра сведений | ☑ | ||
|---|---|---|---|---|
| 0
    
        Olga O 05.03.25✎ 14:20 | 
        Всем доброго дня! У меня не самый большой опыт в КД2.
 Задача: в базе-источнике есть документ. При его проведении из базы-источника должен выгрузиться не сам этот документ, а набор данных, получаемый запросом. При загрузке в базу-приёмник эти данные записываются в регистр сведений (непериодический, независимый). Передаю данные по одной записи (если их нет, ничего не передаётся). В результате добавить/изменить конкретную запись регистра получается, но они не удаляются. Может быть, есть идеи или примеры, как загружать сразу весь набор записей регистра, в т.ч. пустой? Документ-источник может быть изменён или помечен на удаление, и соответствующий ему набор записей регистра в приёмнике может измениться или стать пустым. Но по моим правилам все записи, не попавшие в отбор при загрузке, остаются без изменений. | |||
| 1
    
        azt-yur 05.03.25✎ 15:08 | 
        Создайте правило "УдалениеЗаписейРегистра" с выгрузкой свойств по измерениям регистра. В обработчике После загрузки добавьте подобный текст:
 НЗ = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей(); НЗ.Отбор.Измерение1.Установить(Объект.Измерение1); НЗ.Отбор.Измерение2.Установить(Объект.Измерение2); НЗ.Записать(); Отказ = Истина; Перед отправкой основных записей по документу отправляйте это удаление по основным измерениям. Также в обработчике конвертации При получении удаления документа отправляйте это же удаление. | |||
| 2
    
        Fedor-1971 05.03.25✎ 15:36 | 
        (0) Сложи данные для регистра в параметр документа и в событии после загрузки обновляй в своём регистре сведений     | |||
| 3
    
        Fedor-1971 05.03.25✎ 16:06 | 
        2+ примерно так:
 1. В ПКС называешь приёмник ДанныеРС и ставишь переключатель "Передавать данные в параметр" 2. В Перед выгрузкой делаешь структуру с нужными полями для РС и свойством "ПростоОчистить" 3. В ПКО после загрузки Если ПараметрыОбъекта <> Неопределено Тогда чтоТамЕсть = ПараметрыОбъекта["ДанныеРС"]; Если ЧтоТамЕсть.ПростоОчистить тогда .. тут тупо чистим регистр ... Иначе .. тут просто заполняем запись регистра (если в нём использована ссылка на Документ, сначала запиши оный) .. КонецЕсли; Как-то так, поиграйся | |||
| 4
    
        Волшебник 05.03.25✎ 16:12 | 
        Каждый программист 1С хотя бы раз в своей карьере должен удалить важный регистр сведений.     | |||
| 5
    
        Hawk_1c 05.03.25✎ 16:31 | 
        (4) С помощью обмена? Или достаточно прочитать без отбора и записать?     | |||
| 6
    
        Волшебник 05.03.25✎ 16:32 | 
        (5) Ну вот как в (1) 
 Есть попытка установить отбор, но нет проверки, что он установился. | |||
| 7
    
        Fedor-1971 05.03.25✎ 16:46 | 
        (6) Не, там нормально, потрутся записи в соответствии с отбором, это эквивалентно:
 НЗ.Прочитать(); // просто, так более контролируемо НЗ.Очистить(); только НЗ.Записать(Истина); | |||
| 8
    
        Волшебник 05.03.25✎ 17:15 | 
        (7) Если типы не совпадают, то потрётся гораздо больше     | |||
| 9
    
        Fedor-1971 05.03.25✎ 17:31 | 
        (8) Это вряд ли, там сравнение на равенство, и может потереться больше записей, которые с составным типом и в Измерение передали неподходящий тип, т.е. по факту отбор будет Измерение = Неопределено, но, обычно, Измерения стараются заполнять     | |||
| 10
    
        Волшебник 05.03.25✎ 17:48 | 
        (9) Ой, кому Вы будете рассказывать?..     | |||
| 11
    
        Olga O 06.03.25✎ 10:45 | 
        (1) Спасибо большое, сделала по этому алгоритму, вроде всё получилось!     | |||
| 12
    
        Olga O 06.03.25✎ 10:46 | 
        Благодарю всех за участие!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |