Имя: Пароль:
1C
1С v8
Почему не удаляется объект?
,
0 espanol
 
02.03.12
11:17
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |    Номенклатура.ЭтоГруппа
   |    И НЕ Номенклатура.Предопределенный
   |    И НЕ Номенклатура.Код = ""ЦБ000001321""";
   
   Результат = Запрос.Выполнить().Выгрузить();
   
   Для Каждого Стр Из Результат Цикл
       
       ДокументОбъект = Стр.Ссылка.ПолучитьОбъект();
       ДокументОбъект.Удалить();
       
   КонецЦикла;



{Форма.Форма.Форма(57)}: Значение не является значением объектного типа (Удалить)
       ДокументОбъект.Удалить();



В чем прикол?
1 Beduin
 
02.03.12
11:18
(0) А зачем ты группы решил удалить?
2 adron
 
02.03.12
11:19
Похоже что ничего не выбралось в запросе
3 espanol
 
02.03.12
11:20
(1) за мясом
(2) выбралось
4 le_
 
02.03.12
11:20
Предположу, что из-за того, что переменная называется "ДокументОбъект".
5 mirosh
 
02.03.12
11:20
управляемые формы?
6 espanol
 
02.03.12
11:21
(4) нет
(5) нет
7 Kashemir
 
02.03.12
11:21
Что говорит ТипЗнч(ДокументОбъект) ?
8 mirosh
 
02.03.12
11:21
(6) назови не ДОкументОбъект
9 le_
 
02.03.12
11:22
+(4) Переменная там вообще не нужна
Стр.Ссылка.ПолучитьОбъект().Удалить();
10 Beduin
 
02.03.12
11:22
Прикольно использовать мисту как отладчик)
11 espanol
 
02.03.12
11:22
(7)
ТипЗнч(ДокументОбъект)    Справочник объект: Номенклатура    Тип
12 ptiz
 
02.03.12
11:22
До1 = Стр.Ссылка.ПолучитьОбъект();
Док1.Удалить();
13 ptiz
 
02.03.12
11:22
тьфу
Док1 = Стр.Ссылка.ПолучитьОбъект();
Док1.Удалить();
14 espanol
 
02.03.12
11:23
Да переимновывал, не помогает
15 Beduin
 
02.03.12
11:23
(0) Права то есть на непосредственное удаление?
16 Kashemir
 
02.03.12
11:23
(11) Любопытно, может проблема в правах ?
17 espanol
 
02.03.12
11:27
Да, полные права на всё...
18 Kashemir
 
02.03.12
11:29
(17) Тогда выглядит весьма странно, технически не должно быть проблем. Может в методе удалить какая-нибудь "не русская" буква :)
19 Ненавижу 1С
 
гуру
02.03.12
11:30
может быть в ПередУдалением номенклатуры что-то есть криминальное?
20 Kashemir
 
02.03.12
11:30
(18) Вообще выглядит странным даже само ругательство "Значение не является значением объектного типа (Удалить)". Если идет обращение к методу, то почему идет ругательство как на несуществующее свойство.
21 espanol
 
02.03.12
11:31
(18) к сожалению русские все... я сам офигиваю....
22 Mort
 
02.03.12
11:31
Ну сначала удалил группу с содержимым, а потом пытаешься при обходе это содержимое снова удалить.
23 Kashemir
 
02.03.12
11:32
(22) О кстати хорошая идея
24 mirosh
 
02.03.12
11:32
(22) а ведь точно!
25 Beduin
 
02.03.12
11:32
(22)
Примечание:

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

Объект.Удалить();
26 Mort
 
02.03.12
11:33
И в чем прикол выгрузки в ТЗ? Выборка фу? Тут как раз выборкой надо по верхнему уровню.
27 espanol
 
02.03.12
11:33
(22) нифига! группы пустые, а удаляю именно группы (25) верно!
28 Kashemir
 
02.03.12
11:33
(25) Это какой релиз ?


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

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

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

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

Сервер, толстый клиент, внешнее соединение.
29 Песец
 
02.03.12
11:33
сообщить("удаляю "+ДокументОбъект);
?
30 Beduin
 
02.03.12
11:34
(28) 1С:Предприятие 8.2 (8.2.15.294)
31 Ненавижу 1С
 
гуру
02.03.12
11:34
(27) и группы не содержат другие группы?
32 espanol
 
02.03.12
11:34
Он какието группы удаляет, а какието нет....
33 espanol
 
02.03.12
11:34
(27) нет, не содержат
34 Жан Пердежон
 
02.03.12
11:35
из ТЗ нельзя так строки удалять
35 Kashemir
 
02.03.12
11:35
(30) На 8.2.13.219 в СП ничего про иерархию не сказано
36 Beduin
 
02.03.12
11:35
(33) Проверяй Стр.Ссылка.ПолучитьОбъект() на Неопределено.
37 espanol
 
02.03.12
11:36
(31) а если бы и содержали, то веть удалятся должно иерархически


Примечание:

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

Объект.Удалить();
38 espanol
 
02.03.12
11:36
1С:Предприятие 8.2 (8.2.15.289)
39 Mort
 
02.03.12
11:36
(34) А он их и не удаляет.
40 Beduin
 
02.03.12
11:36
(37) Ветвь иерархически, но в тз остаются ссылки на уже удаленные элементы.
41 Mort
 
02.03.12
11:37
Чую я, автор щас прозреет какую-то лажу.
42 Kashemir
 
02.03.12
11:37
Ладно, тогда я пасс. У 8.2.15 явно какие-то свои приколы с иерархией появились.
43 espanol
 
02.03.12
11:38
(41) гы, ща увидим....
44 Mort
 
02.03.12
11:40
(43) Неужели запустил отладчик? ОГО. Мир сегодня стал немного лучше.
45 espanol
 
02.03.12
11:42
(44) не пори чуш
46 Ненавижу 1С
 
гуру
02.03.12
11:43
И Номенклатура.Родитель = Значение(Справочник.Номенклатура.ПустаяСсылка)
47 mirosh
 
02.03.12
11:44
(45) и это твоя благодарность? человек фактически экстрасенствует, пытаясь тебе помочь
48 adron
 
02.03.12
11:46
Похоже что ты удаляешь родителя и вместе с ним всех подчиненных, а потом в цикле обходишь удаленные элементы. У них уже нет метода удалить.

Через попытку исключение попробуй!
49 Ненавижу 1С
 
гуру
02.03.12
11:47
(48) не очень хорошее решение
50 adron
 
02.03.12
11:47
(49) почему?
51 Ненавижу 1С
 
гуру
02.03.12
11:48
(50) не оправданное использование конструкции Попытка.. Исключение
52 Kashemir
 
02.03.12
11:50
(50) Попытки лучше избегать по возможности, ибо усложняют отладку (остановка по ошибке), ломают транзакцию (если таковая присутствует). И вообще это "плохой стиль", другими словами "быдлокод" ;-)
53 adron
 
02.03.12
11:58
(52) Попытка исключение - прекрасное дополнение к коду приведенному в сабже!
54 Kashemir
 
02.03.12
11:59
(53) В данном случае вполне можно обойти штатными проверками
55 Ненавижу 1С
 
гуру
02.03.12
12:05
(53) неоднократно говорил, что попытка это зло
попытка оправдана только при работе с ресурсами, которые не управляются системой
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший