Объект не может быть удален так как на него имеются ссылки 1с
(20) я еще раз говорю - не проблема написать обработку по удалению. Хотелось бы разобраться .
Т.е. - я в расширении создала новую подсистему. Никаких ролей пока нет.
Все объекты (справочники, регистры, перечисления )- входят в эту подсистему
Подсистема эта в программе - показывается отдельным пунктом (с объектами, входящими в подсистему)
и в рабочей базе показываются отдельным значком
Программно - моей обработкой все объекты, помеченные на удаление - удаляются.
Но если я ввожу из основной конфигурации Роль - Полные права, у меня из программы значок расширения уходит и ничего не удаляется.
(25)А в роль объекты из расширения вы добавляете? Если просто заимствовать роль из основной, то эта роль о объектах расширения ничего не знает (27)Ну, это какая то магия в лице моего дилетанства. Без ролей - сейчас все удалилось встроенными стандартными механизмами. Надо как то с ролями разбираться. (28)Полагаю механизм следующий Если нет ролей в расширении то действует ваша роль из основной конфигурации. Если вы добавили роль в расширение заимствуя из основной то новые объекты в расширении вам надо добавить в новую роль и эту роль сделать доступной. Думаю что заимствование роли из основной не имеет смысла, так как в нее добавить возможно не получится. Надо проверять.ЗЫ сам я сейчас ухожу от расширения перевожу все что наваял в основную конфу. ;) особенно формы документов. Максимум что - это отладка программного создания затем код переношу в основную. (29)Да, буду разбираться с ролями, понадобится. Я уже писала - конфу не откроют, это точно. вот поэтому хочу сейчас в расширении реализовать. Странная ситуация. Попробуйте выполнить последовательность действий: Убедится что у вас полные права, почистить кеш, любой неудаляемый объект снять с пометки и обратно поставить и проверить удалиться ли он. Обновить релиз базы, платформы(если она старая), сделать тестирование и исправление базы. (16) Вообще странно. Я вообще убрала роли из расширения. Т.е. у меня вообще сейчас в расширении нет ролей и прав. Программно - все удаляет. (22)получается роли в расширении как-то перебивали ваши роли. Но учитывая что вы работаете с конфой, то и роли у вас максимальные, которые ничем не перебить. (22)а причем тут роли в расширении? расширение в режиме предприятия прозрачно для основной конфигурации, если вы зашли с полными правами, то и объекты расширения вам будут доступны с полными правами.
Давайте определимся с терминами - программное удаление означает что вы написали код Такойто объект - удалить и выполнили его?
Или что то другое. А из встроенного механизма объекты не удаляются?
Понятно - что выборка пошла по всем помеченным на удаление.
Ничего странного. Стандартная обработка удаления помеченных работает с помощью объекта Метаданные конфигурации. А объекты из расширения в коллекцию Метаданные конфигурации как раз и не входят. Как и в прочие служебные ТипВсеСсылки()
Данная коллизия по обещаниям будет разрешена только в 8.3. 20 .
(33)Ну, это какая то магия в лице моего дилетанства. Без ролей - сейчас все удалилось встроенными стандартными механизмами. Надо как то с ролями разбираться. Тогда почему? Все замечательно удалялось пару лет. А теперь с какого-то перестало. Данные . не могут быть зафиксированы1С:Предприятие 8.3 (8.3.17.2306) 64 бита.
При удалении элемента справочника из расширения. Ошибка именно про "Справочники.ТипВсеСсылки()"
Причем раньше точно все спокойно работало. Зачем добавили.
Очевидно же, что для удобства работы :(
(36) Для решения данной проблемы в расширение надо добавить общий модуль "СтандартныеПодсистемыПовтИсп" с текстом:
&Вместо("ОписаниеТипаВсеСсылки")
Функция ОписаниеТипаВсеСсылки()
Результат = ПродолжитьВызов();
МассивДобавляемыхТипов = Новый Массив;
МассивДобавляемыхТипов.Добавить(Тип("СправочникСсылка.[НаименованиеСправочникаИзРасширения]"));
МассивДобавляемыхТипов.Добавить(Тип("ДокументСсылка.[НаименованиеДокументаИзРасширения]"));
. (перечислить все ссылочные типы данных из расширения)
Возврат Новый ОписаниеТипов(Результат, МассивДобавляемыхТипов);
Из этой статьи вы узнаете, как в удалить в 1С объект при помощи программного кода, а также как поставить пометку на удаление.
В предыдущей статье, я рассказывал, как интерактивно удалить в 1С объект, и что для этого нужно настроить в правах конфигурации:
Программное удаление справочника в 1С
Для того чтобы программно удалить экземпляр справочника в 1С, необходимо воспользоваться методом Удалить объекта справочника. Для демонстрации разберу пример: разместим на форме обработки реквизит с ссылкой на справочник Контрагенты.
И при выполнении команды формы обработки, будем удалять этот экземпляр справочника.
В этом коде удаление экземпляра справочника я производил в серверном контексте. Сначала при помощи метода ПолучитьОбъект() из ссылки был получен экземпляр объекта справочника, а потом этот экземпляр удален при помощи метода Удалить(). В реквизит Контрагент управляемой формы я записал пустую ссылку, чтобы отображение ссылки удаленного объекта не вводило в заблуждение.
Замечу, что программное удаление произошло при таких правах на объект.
Право «Интерактивное удаление» снято, то есть мы не можем непосредственно удалять экземпляр этого объекта, но мы можем удалить его программно (благодаря установленному праву Удалить).
Замечу, что при программном удалении объекта контроль ссылочной целостности не происходит! Поэтом не следует злоупотреблять этой возможностью!
Программное удаление документа в 1С
Документ программным способом удаляется также, как и справочник: нужно воспользоваться методом Удалить() экземпляра объекта документа. Например, на форме этой обработки я размещу реквизит с ссылкой на документ.
А при выполнении команды документ будет удаляться.
Как и в случае справочника, программное удаление документа стало возможным благодаря установленному праву «Удалить».
Пометка на удаление программно в 1С
Для того, чтобы программно пометить на удаление объект необходимо воспользоваться методом объекта УстановитьПометкуУдаления.
Для документов он имеет следующий синтаксис: УстановитьПометкуУдаления(<ПометкаУдаления>), где параметр ПометкаУдаления имеет тип булево.
Переделаем предыдущий пример: на форме разместим две команды.
Одна команда будет устанавливать пометку на удаление у документа в реквизите, вторая снимать.
В этом коде, в процедуре УстановитьНаСервере() мы устанавливаем пометку на удаление, передав в метод УстановитьПометкуУдаления параметр Истина, а в процедуре СнятьНаСервере() снимаем пометку, передав Ложь.
Для объектов справочников метод УстановитьПометкуУдаления имеет следующий синтаксис:
Параметр ВключаяПодчиненные имеет тип Булево, и если установлено Истина, то будут помечены на удаление подчиненные элементы (если справочник иерархический), а также все объекты подчиненного справочника (если есть).
Продемонстрируем работу второго параметра: на форму поместим реквизит с типом булево, реквизит с типом ссылка на справочник Контрагенты , и сделаем две команды: установить и снять.
В обработчиках команд будем устанавливать и снимать пометку на удаление.
У справочника Контрагенты включим иерархию.
И также сделаем подчиненный справочник.
Если мы установим пометку для группы с флажком подчиненные.
То будет помечена группа и все входящие в неё объекты.
А без установленного флага Подчиненные будет помечена только группа.
Тоже самое с объектами из подчиненного справочника. При установленном флаге Подчиненные.
Будет помечен на удаление и сам элемент справочника, и объекты подчиненного ему справочника.
А иначе, будет помечен только сам элемент.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
В этой статье узнаем как осуществляется удаление в 1С, научимся удалять объекты в 1С 8.3 напрямую, помечать их на удаление, и удалять помеченные на удаление объекты 1С.
Прямое удаление в 1С
В платформе 1С 8.3 имеется возможность удалить любой объект так, что он сразу исчезнет из базы 1С. Чтобы такая возможность предоставлялась, необходимо для нужного объекта у роли установить право «Интерактивное удаление».
Если такое право у объекта установлено, то в меню «Ещё» формы списка объекта появится команда «Удалить».
После применения этой команды, объект будет полностью удален из базы. Перед его удалением появится вопрос о том, согласны мы удалить этот объект или нет.
Не рекомендуется в реальной базе оставлять возможность интерактивного удаления объектов.
Сейчас я продемонстрирую почему.
Допустим, у нас ссылка на элемент справочника Контрагент, который мы собираемся удалить, указана в каком-то реквизите документа.
Таким образом, интерактивное удаление проходит без контроля ссылочной целостности: удаляя какой-то объект, платформа не проверяет, указана ли ссылка этот объект где-то ещё, тем самым мы ставя под угрозу ссылочную целостность данных базы.
Пометка удаления 1С
Для того, чтобы случайно не удалить объект, ссылка на который возможно указана в каких-то других данных базы 1С, необходимо сначала пометить этот объект на удаление, а потом удалить его при помощи специальной утилиты, которая в процессе удаления будет осуществлять контроль ссылочной целостности.
Чтобы пользователь имел возможность пометить на удаление какой-то объект, необходимо, у роли для этого объекта было установлено право «Интерактивная пометка на удаление».
На рисунке выше я также снял право «Интерактивное удаление», с целью запретить удалять экземпляры объекта без контроля ссылочной целостности.
Сейчас пользователь не может сразу удалить какой-то элемент объекта, для этого ему необходимо сначала пометить этот объекта на удаление. Делается это так: нужно выделить объект в форме списка, вызвать контекстное меню и выполнить команду «Пометить на удаление/снять пометку» (или просто нажать клавишу Del).
Также, можно пометить сразу несколько элементов, выделив нужные.
После выполнения команды, выйдет вопрос о том, нужно ли помечать объекты или нет.
Нам осталось удалить помеченные объекты из базы.
Удаление помеченных в 1С
Если нам нужно дать пользователю возможность удалять из базы помеченные на удаление элементы какого-нибудь объекта, то необходимо, чтобы у роли было для этого объекта установлено право «Интерактивное удаление помеченных».
Для удаления помеченных на удаление объектов следует воспользоваться утилитой «Удаление помеченных объектов». Начиная с платформы 1С 8.3.15, путь к ней следующий: необходимо в меню «Сервис и настройка» выполнить команду «Функции для технического специалиста».
В открывшемся окне следует в ветке «Стандартные» найти и выполнить команду «Удаление помеченных объектов».
В платформе редакции 8.3.14 и ниже, путь к окну с командой «Удаление помеченных объектов» будет следующий:
В открывшейся утилите «Удаление помеченных объектов», сначала будет предложено выбрать вариант удаления: полное удаление или выборочное.
Если выбрать выборочное удаление, то в следующем окне будет предложено выбрать те объекты, которые следует удалить.
В этой же утилите можно посмотреть, где в базе присутствует ссылка на объект, который пытались удалить.
Таким образом, установка пометки на удаление и последующее применение утилиты «Удаление помеченных объектов» позволяет производить более щадящее для ссылочной целостности базы данных удаление объектов.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Система 1с предприятие изначально не предполагает прямое удаление каких-либо объектов из базы данных, например элементов справочников, документов, отчетов и т.д. Конечно все же можно настроить роль пользователя таким образом чтобы он сразу удалял из 1с какой-нибудь объект, без пометки на удаление , но делать этого крайне не рекомендуется. Также хотим отметить тот факт, что если даже у пользователя роль настроена на прямое удаление объектов (интерактивное удаление), все равно это не позволит удалять ему некоторые объекты в предприятии 1с, и сделать это можно будет только через пометку на удаление .
Для чего сделана пометка на удаление объектов в 1с
Давайте ответим с Вами на вопрос "Зачем сделана эта пометка для удаления?", ведь быстрее удалить объект из 1с сразу. Сделано это по нескольким причинам:
- Есть вероятность того, что пользователь впоследствии передумает и захочет вернуть удаленный объект, когда стоит пометка ее достаточно снять, при интерактивном удалении восстановить данные нельзя .
- В 1с один объект, например документ, может ссылаться на множество других объектов в системе (справочники, константы, другие документы и т.д.), и одновременно также на этот объект (в нашем случае документ), могут ссылаться множество других объектов. Если бы в системе 1с предприятие было разрешено прямое удаление объектов из базы данных, то это привело бы к ужасным последствиям, так как сразу же бы начали появляться объекты с "битыми ссылками", а это потеря данных, и не правильное функционирование базы данных, которое рано или поздно приведет к краху базы и практически полной потери Ваших данных!
Два вида удаления в 1с , понятие контроля ссылочной целостности в 1с
В программе объекты 1с можно удалить двумя способами:
- С помощью интерактивного удаления (прямое удаление без контроля ссылочной целостности)
- Через пометку на удаление (удаление с контролем ссылочной целостности)
Давайте рассмотри что такое ссылочная целостность в 1с. Но для того чтобы нам с вами ответить на этот вопрос мы должны знать что такое "битые" ссылки в 1с. Для тех кто не знает, битые ссылки в 1с это ссылки которые указывают на не используемую область памяти, то есть по сути указывают в никуда. Теперь давайте возьмем для примера любой документ в системе 1с предприятие. В нем находится множествои различных реквизитов. Эти реквизиты могут быть как простыми (примитивные типы такие как число, дата, булево), так могут быть и объектными (такие как ссылки на другие объекты системы, например различные справочники, перечисления и т.д.) Так вот контроль ссылочной целостности в 1с как раз и означает тот факт, что объект не будет удален из системы 1с до тех пор, пока на него ссылаются какие-либо другие объекты системы. Как раз пометка на удаление объектов 1с позволяет сохранить механизм ссылочной целостности в 1с, так как обработка удаления помеченных объектов не даст удалить объект пока на него ссылаются другие объекты.
Как восстановить удаленные объекты в 1с? Что происходит с объектами после их удаления из 1с?
Подобные вопросы нам задают многие люди, и ответ тут один, физическое удаления данных из 1с (с помощью способов описанных ниже) приводит к ПОЛНОМУ УНИЧТОЖЕНИЮ ФАЙЛА ИЗ БАЗЫ! Восстановление удаленных файлов из базы не возможно.
Мы всегда готовы оказать Вам своевременную помощь в обновлении системы 1С 8.3 .
Интерактивное удаление в 1с
Итак мы уже обсуждали с Вами то, что интерактивное удаление в 1с происходит без контроля ссылочной целостности, а это чревато очень плохими последствиями для системы, рекомендуется пользоваться таким удалением только с целью отладки. Чтобы включить интерактивное удаление 1с нам нужно для начала зайти в конфигуратор, распахнуть веточку Общие ---> Роли и выделить роль "Полные права".
Теперь нажмем клавишу F9 , у нас копируется роль "ПолныеПрава" и появится еще одна "ПолныеПрава1". Откроем ее двойным щелчком мыши. Появится окно свойств роли, нажмем кнопку "Действия" ---> "Установить все права". После этого нажмем ОК. Теперь сохраним конфигурацию базы данных, для этого нажмем на синенький бочонок в левом верхнем углу, или нажмем клавишу F7. Если бочонок стал неактивным значит конфигурация сохранилась. Мы создали роль с правами на интерактивное удаление объектов из 1с .
Теперь в конфигураторе откроем вкладку Администрирование ---> Пользователи.
Откроется список пользователей, выберите пользователя под которым Вы хотите включить интерактивное удаление 1с объектов и нажмите карандашик или F2. Откроется окно свойств пользователя, перейдите на вторую вкладку "Прочие". Там найдите ту роль которую мы с Вами копировали, в моем случае это "ПолныеПрава1", ставим галочку и жмем OK.
После этого запускайте 1с предприятие, выбирайте того пользователя которому установили новую роль. Теперь Вы можете удалять объекты напрямую, чтобы удалить объект выберите его и нажмите сочетание клавиш SHIFT + DEL, система спросит уверены ли вы в удалении, при положительном ответе объект будет удален из системы.
Удаление объектов 1с через пометку на удаление или как удалить объекты в 1с ?
Теперь давайте рассмотрим с Вами вопрос "Как удалить объекты в 1с ?". Итак, открываем нужную нам базу данных в 1с предприятии. На скриншоте показана "Бухгалтерия государственного учреждения", щелкаем в меню по вкладке "Операции" ---> " Удаление помеченных объектов ".
Если у Вас управляемый интерфейс, как например в "Бухгалтерии предприятия ред. 3.0", то там Вам нужно перейти на вкладку "Администрирование", там Вы увидите подгруппу "Сервис", и уже в ней нужно выбрать " Удаление помеченных объектов ".
Альтернативный способ открытия помощника удаления объектов в 1С 8.2 и 1С 8.3
А вообще если Вы не можете найти у себя в конфигурации кнопочку с помощью которой можно вызвать мастера удаления помеченных объектов 1с , то в 1С 8.2 открыть его можно следующим способом, данный способ подходит для любой конфигурации, ниже на скриншотах видно какие действия необходимо выполнить в 1С 8.2. Открываем дерево всех обработок которые находятся в системе и выбираем " Удаление помеченных объектов ".
Если же Вы работаете на платформе 1С 8.3 и у Вас конфигурация с управляемым интерфейсом, то Вам необходимо включить кнопку "Все функции", как это сделать смотрите здесь.
Начало поиска помеченных на удаление объектов в 1с
Перед нами появится окно которое изображено ниже, в нем будут отражены все объекты помеченные на удаление в системе . Отмечаем галочками те которые хотим удалить, вообще их желательно удалять все, ведь они помечены на удаление, а значит они больше не нужны в системе. После того как отметили все необходимое нажимаем "Контроль".
Системе потребуется какое то время чтобы выполнить данную задачу, чуть позже Вы увидите окно которое изображено ниже. Обратите внимание у Вас могут быть объекты как с зелеными галочками так и с красными.
Зеленые означают то, что объект можно удалить, красные соответственно что нет. Объект отмеченный красной галочкой нельзя удалить, так как на него ссылаются другие объекты системы, в окошке расположенном ниже Вы увидите те объекты которые ссылаются на него, и прежде чем удалить объект отмеченный красной галочкой, Вам нужно убрать ссылки на этот объект у других объектов. Что это означает на практике?
Необходимость своевременного удаления помеченных на удаление объектов в 1с . Как удалить объекты помеченные красными галочками ?
Рассмотрим пример на конфигурации "Бухгалтерии предприятия". У нас есть документ "Принятие к учету ОС", в нем соответственно указывается основное средство (например компьютер) и множество других параметров, но они нас в данный момент не интересуют. Если мы захотим удалить это ОС из нашей базы данных, то без дополнительных действий у нас ничего не выйдет. Наше ОС (компьютер) будет помечено красной галочкой при попытки его удаления. Почему? А ведь наш документ "Принятие к учету ОС" имеет ссылку на то ОС которое мы сейчас хотим удалить! Когда мы щелкнем на него в списке объектов , то увидим все объекты которые ссылаются на наше ОС, и прежде чем удалить это ОС, нам нужно сначала зайти во все эти объекты и удалить ссылки. В нашем случае это означает что нужно отменить проведение документа "Принятие к учету ОС", и удалить это ОС из документа, после чего записать документ. Теперь документ более не ссылается на наше ОС, и мы можем его удалить. Из всего этого следует одно правило, удалять объекты помеченные на удаление в 1с нужно своевременно ! Иначе потом избавиться от них может быть очень и очень проблематичным делом, ввиду того что между объектами будет большое количество ссылок. Кстати своевременное удаление объектов из 1с также имеет несколько очевидных плюсов:
- Увеличивается производительность системы
- Уменьшается вероятность ошибок пользователей
- Уменьшается размер вашей базы данных
- Не возникает "захламленности интерфейса", когда в системе имеется много помеченных на удаление объектов, проведенных документов, а также не проведенных.
В нашей компании Вы всегда получите первоклассное обслуживание программы 1С по очень приятным ценам!
Завершение удаления помеченных объектов в 1с
Теперь давайте удалим объекты до конца. Нажимаем кнопку "Удалить". Система удалит все объекты которые были отмечены зелеными галочками.
Останутся только те которые помечены красными галочками, нажимаем "Закрыть", на этом процесс удаления объектов из 1с завершен. Если у Вас что-то не получилось мы готовы подключиться к Вашей 1с удалённо и помочь решить Ваши задачи.
1с удаление помеченных объектов, подробная видео-инструкция про удаление объектов 1с
Кто-то любит читать, а кто предпочитает смотреть. Именно для тех кто предпочитает смотреть мы сняли очень интересное видео которое содержит даже больше интересной информации по сравнению со статьей:
- Рассказываем для чего нужна пометка на удаление в 1с
- Показываем на примере как удалить в 1с объекты
- Даются полезные практические советы
- Показываем как удалять в 1с объекты помеченные красными галочками
- Также приводится много другой полезной информации
Мы надеемся что наша статья про удаление в 1с объектов помеченных на удаление очень Вам помогла, и ответила на все Ваши вопросы.
Читайте также: