Имя: Пароль:
1C
 
СправочникОбъект.<ИмяСправочника>.Удалить()
0 dshka
 
27.07.15
12:17
8.3 УПП

При вызове сабжа формируется запись в регистре сведений, никак не связанном со справочником из которого этот метод вызывается. Почему так?
1 Альбатрос
 
27.07.15
12:20
(0) 0_o
2 Timon1405
 
27.07.15
12:22
подписка на событие
3 dshka
 
27.07.15
12:35
(2) Нету подписок. Прошлась глобальным поиском по конфе. Видимо этот метод инициирует такое по всем регистрам. Посмотрела через Ф9 "ЭтотОбъект" из менеджера набора записей. В отборе вот такая фигня

Значение    <Объект не найден> (19487:9a3c000c299575a611e53436d3e4d2f5)    СправочникСсылка.СохраненныеНастройки
4 Галахад
 
гуру
27.07.15
12:37
+ 1.
5 GROOVY
 
27.07.15
12:37
(1) +1

СправочникОбъект.<ИмяСправочника>.Удалить()

Это как?
6 dshka
 
27.07.15
12:38
(5) Вот так

СправочникОбъект.<Имя справочника>.Удалить (CatalogObject.<Имя справочника>.Delete)
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
Удалить (Delete)
Синтаксис:

Удалить()
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Для иерархического справочника также удаляются все подчиненные элементы.
Пример:

Объект.Удалить();
7 dshka
 
27.07.15
12:41
Если кто-нибудь может дать ссылку на инфу по механизму работы этого метода, будет очень даже круто. В справке явно не вся важная информация.
8 Альбатрос
 
27.07.15
12:42
(7) Метод прост и вся информация по нему указана в СП. А вот ты, Катерина, по-моему что-то не договариваешь. Показывай код, как ты там его юзаешь.
9 GROOVY
 
27.07.15
12:44
(6) Так это метод спрОбъекта, синтаксически последняя строка верна: Объект.Удалить()

Судя по тому что написано выше, отрабатывает подписка на событие справочника объекта.
10 dshka
 
27.07.15
12:46
Процедура ПередУдалением(Отказ)
    
    #Если ТолстыйКлиентОбычноеПриложение Тогда    
        
    Если ЭтотОбъект.ТипНастройки <> Перечисления.ТипыНастроек.НастройкиОтчета Тогда
        Возврат;
    КонецЕсли;
    
    Если ЭтотОбъект.Метаданные().Реквизиты.Найти("ОтрицательноеКрасным") <> Неопределено тогда
        
        // Проверим возможность удаления варианта пользователем
        СписокДоступныхВариантов = ТиповыеОтчеты.ПолучитьСписокДоступныхВариантов(ЭтотОбъект.НастраиваемыйОбъект,, Истина, ЭтотОбъект);
        ДоступныйВариант = СписокДоступныхВариантов.НайтиПоЗначению(ЭтотОбъект.Ссылка);
        Если  НЕ РольДоступна("ПолныеПрава") и (ДоступныйВариант = Неопределено ИЛИ Не ДоступныйВариант.Пометка) Тогда
            Отказ = Истина;
            ОбщегоНазначенияЗК.СообщитьОбОшибке("Текущему пользователю запрещено удалять вариант отчета: " + ЭтотОбъект);
        КонецЕсли;
        
        // Если все же вариант отчета удаляем, нужно удалить все настройки пользователей панели пользователя
        Выборка = ПолучитьВыборкуПодчиненныхСохраненныхНастроек();
        Пока Выборка.Следующий() Цикл
            Объект = Выборка.Ссылка.ПолучитьОбъект();
            Объект.Удалить();
        КонецЦикла;
    КонецЕсли;
    #КонецЕсли

КонецПроцедуры

(8) Это из общего модуля. Собственно доходит до строчки "Объект.Удалить()" и попадаем в менеджер записи регистра.
11 Альбатрос
 
27.07.15
12:48
(10) Значит, подписка
12 dshka
 
27.07.15
12:49
(11) Гарантировано нет подписки в которой производилась бы запись именно в "мой" регистр. Возможно где-то ведется запись по всем регистрам системы. Как это вычислить?
13 GROOVY
 
27.07.15
12:50
Стек вызовов посмотри.
14 dshka
 
27.07.15
12:51
(13) Я смотрела. Перед попаданием в менеджер записи мы попадаем в (10)
15 Бубка Гоп
 
27.07.15
12:53
(14) а может мы туда не попадаем а возвращаемся?
16 GROOVY
 
27.07.15
12:54
> Собственно доходит до строчки "Объект.Удалить()" и попадаем в менеджер записи регистра.

А разве не должен?
17 dshka
 
27.07.15
12:55
(16) Удаляем из справочника, а попадаем в регистр сведений. По-моему не должен.
18 hhhh
 
27.07.15
12:56
(14) ну так и должно быть. Если удаляете элемент справочника, то по всем регистрам в базе, где эта номенклатура как ведущее измерение записана, идет удаление записей регистра. Непонятно, что вас настораживает. Это же элементарное поведение платформы.
19 GROOVY
 
27.07.15
12:56
(17) А в менеджер записи справочника попадаем?
20 dshka
 
27.07.15
12:56
(15) Мы гарантированно туда не возвращаемся, потому что из менеджера записей мы вылетаем с ошибкой. Но это не важно. Важно понять, почему мы вообще в этот менеджер попадаем.
21 dshka
 
27.07.15
12:58
(19) Он пустой.
Ладно, не заморачивайтесь - вижу тема мутная. Тут только спрашивать прямо у источника желтого зла. Иначе будут одни догадки.
22 GROOVY
 
27.07.15
13:04
(21) Почитайте в документации, что такое ведущее измерение, и чем оно от не ведущего отличается, а так-же о порядке вызова событий записи и удаления.
23 dshka
 
29.07.15
11:42
(22) Т.е. при удалении любого объекта базы данных автоматом формируются записи по всем-всем регистрам с отбором по этому объекту?
24 dshka
 
29.07.15
11:48
(18) Спасибо. Разобралась благодаря вашему посту. Действительно, у меня ведущее изменерение может принимать значение СправочникСсылка. Я запуталась, потому что сосредоточилась на понятии "движение по регистру".