|
КД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
|
Благодарю всех за участие!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |