1с установитьпометкуудаления надо записывать
Из этой статьи вы узнаете, как в удалить в 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С 7.7 или 8.1 - Меню-Операции - Удаление помеченных объектов.
в 1С 8.2 - Меню - Все функции. - Стандартные - Удаление помеченных объектов.
Код 1C v 8.2 УП
Код 1C v 8.х
Разместил: E_Migachev Версии: | 7.x | 8.x | 8.2 УП | Дата: 23.08.2009 Прочитано: 65550
Похожие FAQ
Еще в этой же категории
Создание и запись нового элемента справочника 12
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? 8
Порядок действий такой: 1. В поле ввода " Номенклатура" добавь событие ПриНачалеВыбора. 2. Установи в них СтандартнаяОбработка = Ложь; 3. Получи форму выбора нужного справочника 4. Установи отбор по родителю 5. Открой форму для выбора Теп Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Как программно открыть и выбрать элемент справочника, выбор элемента справочника? 7
Просто открыть: // Получить форму выбора справочника как подчиненную форме документа ФормаСписка = Справочники.Номенклатура.ПолучитьФормуСписка( , ЭтаФорма); // Открыть полученную форму ФормаСписка.Открыть(); Открыть для выбора элемента: Ф Посмотреть все в категории Справочники
Внимание. Непосредственное удаление справочника ведет к нарушению целостности данных. Например если удалить Контрагента по которому были сделаны документы, то в этих документах будет пустая ссылка.
Поэтому - лучше на удаляемые объекты ставить пометку на удаление, а непосредственное удаление делать встроенной функцией:
в 1С 7.7 или 8.1 - Меню-Операции - Удаление помеченных объектов.
в 1С 8.2 - Меню - Все функции. - Стандартные - Удаление помеченных объектов.
Код 1C v 8.2 УП
Код 1C v 8.х
Разместил: E_Migachev Версии: | 7.x | 8.x | 8.2 УП | Дата: 23.08.2009 Прочитано: 65551
Похожие FAQ
Еще в этой же категории
Создание и запись нового элемента справочника 12
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? 8
Порядок действий такой: 1. В поле ввода " Номенклатура" добавь событие ПриНачалеВыбора. 2. Установи в них СтандартнаяОбработка = Ложь; 3. Получи форму выбора нужного справочника 4. Установи отбор по родителю 5. Открой форму для выбора Теп Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Как программно открыть и выбрать элемент справочника, выбор элемента справочника? 7
Просто открыть: // Получить форму выбора справочника как подчиненную форме документа ФормаСписка = Справочники.Номенклатура.ПолучитьФормуСписка( , ЭтаФорма); // Открыть полученную форму ФормаСписка.Открыть(); Открыть для выбора элемента: Ф Посмотреть все в категории Справочники
Читайте также: