Как удалить элемент справочника
Программная работа со справочниками в 1С 8.3
Программно можно создавать новые элементы, изменять существующие, удалять, искать элементы по коду, наименованию, реквизитам и т.п. Но нельзя программно добавить новый справочник в конфигурацию. Это выполняется только интерактивно в дереве метаданных.
СправочникиМенеджер
Объект СправочникиМенеджер предназначен для управления всеми справочниками конфигурации. Через цикл можно получить доступ к менеджеру каждого справочника:
Также можно обратиться к менеджеру справочника через точку или через квадратные скобки:
Также через СправочникиМенеджер можно проверить является ли ссылка справочником:
Программное создание элемента справочника
Для программного создания элементов есть метод СоздатьЭлемент. Для программного создания групп — метод СоздатьГруппу:
Программное изменение элементов справочника
Для того чтобы изменить реквизиты уже существующего элемента справочника нужно через ссылку получить объект методом ПолучитьОбъект, через объект изменить значения реквизитов и записать измененный объект в базу данных:
Программное копирование элемента справочника
Методом Скопировать можно создать копию элемента справочника. Данный метод можно вызывать как у ссылки, так и у объекта:
Программное удаление элемента справочника
Для удаления применяются два метода: УстановитьПометкуУдаления и Удалить. Метод УстановитьПометкуУдаления только установит пометку на удаление, сам элемент не будет удален из базы данных. Метод Удалить удалит элемент из базы данных без проверки ссылочной целостности. То есть, если на этот элемент были ссылки в других местах, то теперь вместо ссылки будет надпись «Объект не найден». Не рекомендуется пользоваться методом Удалить. Важно отметить, что вызов метода УстановитьПометкуУдаления вызывает запись объекта. Дополнительно записывать объект не нужно.
Удаление элемента справочника
Доброго времени суток, друзья. Этой статьей я хочу рассказать Вам, как удалить элементы справочника в системах 1С, так как иногда это вызывает определенные трудности у некоторых пользователей. Происходит это потому, что удаление элементов справочников происходит в два этапа: пометка на удаление и собственно удаление объекта из базы. И если с первым шагом разберутся все, поскольку интерфейс программ 1С на этом этапе понятен даже на интуитивном уровне, то вот удалить объект окончательно не так-то и просто. Итак, давайте же разбираться!
1. Пометка на удаление
Для пометки на удаление нам надо выбрать элемент справочника, который мы хотим удалить. Нажимаем правой кнопкой мыши и выбираем пункт «Пометить на удаление», подтверждаем наши действия кнопкой «Да». После этого на иконке элемента появляется красный крестик, означающий, что, наш документ помечен на удаление. Как и было объявлено, так как процесс ничем не отличается от удаления файлов в Windows.
2. Как удалить помеченные объекты?
Теперь второй пункт – как удалить помеченные объекты? Чтобы удалить помеченные на удаление объекты, переходим в «Администрирование → Обслуживание → Удаление помеченных объектов». Нам откроется окно мастера настройки удаления файлов, помеченных как удаленные. В этом окне мы будем выбирать режим удаления. В зависимости от режима элементы будут удалены все или выборочно. В зависимости от объема удаляемых данных, процесс удаления может занять от нескольких секунд до нескольких часов. Рекомендую удалять объекты в период наименьшей активности пользователей. В системе есть возможность удалять объекты по расписанию. Настраивается просто: путем установки галочки напротив строки с удалением по расписанию. Если не подходит предложенное системой расписание, то под себя расписание можно настроить в «Настроить расписание». После выбора элементов справочника и необходимых параметров, нажимаем кнопку далее.
Теперь система может найти элементы справочника, помеченные на удаление. В появившемся окне появляется перечень всех элементов, помеченных как удаленные. Если какой-то элемент удалять не нужно, то достаточно снять галочку напротив него. После выбора элементов, нажимаем кнопку «Удалить».
3. Повторное удаление выбранных объектов
Итак, система начинает удаление элементов справочника. Далее появляется результат процесса удаления. Это может быть сообщение об успешном удалении элементов в программе, либо окно с информацией о том, удаление каких элементов не произошло. В левой части окна отображается элемент, который система не смогла удалить, а в правой, связанный с этим элементом объект. Для успешного удаления выбранных объектов, все связанные элементы должны быть помечены на удаление, либо перепривязаны к другим элементам. После анализа удаляемых элементов и связанных с ним объектов, помечаем на удаление связанные объекты, либо привязываем их к другим элементам. Затем нажимаем «Повторное удаление», и система выполнит удаление оставшихся элементов.
После завершения работы мастера, появится сообщение об успешном удалении элементов в 1С.
Программирование в 1С для всех
У любого справочника 1С (кроме подчиненных) можно создавать предопределенный элемент или предопределенную группу этого справочника (если справочник иерархический). Предопределенные элементы справочника это элементы созданные разработчиком в конфигураторе, с которыми пользователь может работать. Пользователю уже не нужно самостоятельно создавать этот элемент справочника, он уже будет создан в базе по умолчанию при установке. Также разработчикам очень удобство работать с предопределенными элементами в том, что разработчик к ним может обращаться напрямую, используя менеджер справочника. В этой статье мы научимся работать с предопределенными элементами.
При разработке справочников, рекомендую, первым делом подумать будут ли предопределенные элементы у этих справочников, и создать их заранее, до того как этот справочник будет внедрен в опытную эксплуатацию.
К примеру, мы в нашей конфигурации для целей учета создали справочник Валюты, поскольку мы живем в Российской федерации, то валюта Рубль всегда будет в нашей конфигурации, которая используется на территории РФ. Поэтому наиболее логичнее её сделать в виде предопределенного элемента. Поэтому создадим для справочника Валюты предопределенный элемент Рубль. Для того, чтобы добавить предопределенный элемент необходимо выделить нужный справочник, вызвать контекстное меню и выбрать в этом меню команду «Открыть предопределенные данные».
Откроется список предопределенных элементов (и групп, если справочник иерархический), в котором можно добавлять новые элементы. Причем заметьте, при добавлении мы можем указать только наименование элемента и его код, если у справочника есть реквизиты, то мы эти реквизиты мы сможем заполнить только в пользовательском режиме.
Обращаю внимание на имя предопределенного элемента. Имя должно быть уникально в пределах этого справочника, и к нему применяются правила установки имен для объектов метаданных (отсутствие пробелов, спецсимволов кроме подчеркивания и т.д.). Пользователь не видит имени предопределенного элемента, он работает только с наименованием. С именем может работать разработчик, получая ссылку на конкретный предопределенный элемент, используя менеджер справочника.
Если справочник иерархический, то можно также создать и предопределенные группы, для этого в командной панели формы списка предопределенных элементов имеется команда «Добавить группу».
Если мы зайдем в форму списка справочника Страны в пользовательском режиме «1С: Предприятия», то обнаружим, что уже имеются группы и элементы с точкой внизу. Так платформа помечает предопределенные элементы и группы.
Замечу, что все реквизиты у предопределенных элементов присутствуют также как и у обычных, и в них можно записывать какие-либо значения.
Получить предопределенный элемент справочника 1С
Используя менеджер справочника, можно обратиться к предопределенному элементу. Делается это следующим образом.
Обращаю Ваше внимание, что получить ссылку на предопределенный элемент можно только в серверном контексте. Чтобы получить ссылку на предопределенный элемент в клиентском контексте управляемой формы необходимо использовать метод ПредопределенноеЗначение, где в кавычках нужно указать путь к этому элементу.
Имейте в виду, что и при помощи метода ПредопределенноеЗначение и при помощи прямого обращения посредством менеджера объекта мы получим ссылку на элемент, с которой можем работать как с обычной ссылкой на элемент справочника: присваивать её какому-нибудь реквизиту, получать объект из этой ссылки и т.д.
Создать предопределенный элемент справочника 1С
Мы уже научились создавать предопределенные элементы справочника в конфигураторе, но можно ли создать предопределенный элемент программно? И да, и нет.
Мы можем из простого элемента сделать предопределенный, и наоборот предопределенный элемент сделать простым.
Для этих целей у справочников имеется стандартный реквизит ИмяПредопределенныхДанных.
Если мы получим ссылку на предопределенный элемент, то этот реквизит заполнен.
Если же мы возьмем какой-то не предопределенный элемент, то этот реквизит будет пустой.
Если мы этому реквизиту присвоим какое-нибудь имя (помня об уникальности имен предопределенных элементов в контексте конкретного справочника), то мы программно «создадим» предопределенный элемент, но только в том случае если это имя уже существует в списке предопределенных элементов справочника, которые были заданы в конфигураторе 1С!
Например, тот же элемент «Тунис» справочника «Страны» у нас простой.
В какой-нибудь обработке напишем код, в котором попробуем сделать из этого элемента предопределенный элемент.
Если мы попытаемся его сейчас выполнить, то у нас возникнет ошибка «Предопределенный элемент не существует».
Такая ошибка возникла потому, что мы пытаемся указать имя предопределенного элемента, которого нет.
Если же мы у предопределенного элемента реквизиту ИмяПредопределенныхДанных присвоим пустую строку, то такой элемент станет простым, если же этому реквизиту обратно присвоим имя предопределенного элемента, то простой элемент станет предопределенным.
Сделаем на обработке две команды. Первая будет снимать предопределенность у элемента справочника с именем «Китай», а вторая устанавливать.
Теперь обратно установим.
Заметьте, что имя предопределенного элемента может быть только из списка имен предопределенных элементов справочника.
У нас до снятия элемент «Китай» был предопределенным.
А после снятия это стал простой элемент.
Удалить предопределенный элемент справочника 1С
Начиная с платформы 1С 8.3 предопределенные элементы можно удалять в пользовательском режиме.
Если сейчас этот элемент удалить через стандартную обработку «Удаление помеченных объектов», то он исчезнет из базы.
Для того, чтобы пользователь мог удалить (поставить пометку на удаление) предопределенный элемент, хотя бы у одной роли, которая есть в профиле пользователя должно быть установлено соответствующее право.
Что делать, если мы ошиблись и хотим опять «вернуть» предопределенный элемент? Есть несколько способов. Но самый простой это создать новый элемент справочника в пользовательском режиме и присвоить ему имя удаленного предопределенного элемента, как мы это уже делали.
Остальные статьи по теме конфигурирования:
Более подробно и основательно работа со справочниками, документами и другими объектами метаданных дается в моей книге:
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
2 thoughts on “ Предопределенные элементы справочников 1С 8.3 ”
У любого справочника 1С можно создавать предопределенный элемент или предопределенную группу — если у справочника есть владелец, то создать предопределенный элемент нельзя.
Программирование в 1С для всех
Из этой статьи вы узнаете, как в удалить в 1С объект при помощи программного кода, а также как поставить пометку на удаление.
В предыдущей статье, я рассказывал, как интерактивно удалить в 1С объект, и что для этого нужно настроить в правах конфигурации:
Программное удаление справочника в 1С
Для того чтобы программно удалить экземпляр справочника в 1С, необходимо воспользоваться методом Удалить объекта справочника. Для демонстрации разберу пример: разместим на форме обработки реквизит с ссылкой на справочник Контрагенты.
И при выполнении команды формы обработки, будем удалять этот экземпляр справочника.
В этом коде удаление экземпляра справочника я производил в серверном контексте. Сначала при помощи метода ПолучитьОбъект() из ссылки был получен экземпляр объекта справочника, а потом этот экземпляр удален при помощи метода Удалить(). В реквизит Контрагент управляемой формы я записал пустую ссылку, чтобы отображение ссылки удаленного объекта не вводило в заблуждение.
Замечу, что программное удаление произошло при таких правах на объект.
Право «Интерактивное удаление» снято, то есть мы не можем непосредственно удалять экземпляр этого объекта, но мы можем удалить его программно (благодаря установленному праву Удалить).
Замечу, что при программном удалении объекта контроль ссылочной целостности не происходит! Поэтом не следует злоупотреблять этой возможностью!
Программное удаление документа в 1С
Документ программным способом удаляется также, как и справочник: нужно воспользоваться методом Удалить() экземпляра объекта документа. Например, на форме этой обработки я размещу реквизит с ссылкой на документ.
А при выполнении команды документ будет удаляться.
Как и в случае справочника, программное удаление документа стало возможным благодаря установленному праву «Удалить».
Пометка на удаление программно в 1С
Для того, чтобы программно пометить на удаление объект необходимо воспользоваться методом объекта УстановитьПометкуУдаления.
Для документов он имеет следующий синтаксис: УстановитьПометкуУдаления( ), где параметр ПометкаУдаления имеет тип булево.
Если — Истина, то пометка будет установлена, если Ложь – пометка будет снята.
Переделаем предыдущий пример: на форме разместим две команды.
Одна команда будет устанавливать пометку на удаление у документа в реквизите, вторая снимать.
В этом коде, в процедуре УстановитьНаСервере() мы устанавливаем пометку на удаление, передав в метод УстановитьПометкуУдаления параметр Истина, а в процедуре СнятьНаСервере() снимаем пометку, передав Ложь.
Для объектов справочников метод УстановитьПометкуУдаления имеет следующий синтаксис:
Параметр ВключаяПодчиненные имеет тип Булево, и если установлено Истина, то будут помечены на удаление подчиненные элементы (если справочник иерархический), а также все объекты подчиненного справочника (если есть).
В обработчиках команд будем устанавливать и снимать пометку на удаление.
У справочника Контрагенты включим иерархию.
И также сделаем подчиненный справочник.
Если мы установим пометку для группы с флажком подчиненные.
То будет помечена группа и все входящие в неё объекты.
А без установленного флага Подчиненные будет помечена только группа.
Тоже самое с объектами из подчиненного справочника. При установленном флаге Подчиненные.
Будет помечен на удаление и сам элемент справочника, и объекты подчиненного ему справочника.
А иначе, будет помечен только сам элемент.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Удаление. Почему не удаляется документ или элемент справочника в 1С
Сегодня мы с вами поговорим про удаление документов, а также вообще любых объектных данных 1С Бухгалтерии (что такое объектные данные и чем они отличаются от прочих я рассказываю в своём на примерах). Иногда встречаются ситуации (да, пожалуй, и не иногда), когда требуется удалить какой-то документ, но он не хочет удаляться. Посмотрим, почему это происходит и как это исправить.
Как удалить документ в 1С Бухгалтерии
Для начала рассмотрим, как вообще происходит удаление объектов в 1С Бухгалтерии 8. Прежде всего следует сказать, что ни один объект (документ 1С, элемент справочника и так далее) нельзя удалить непосредственно, как, например, мы удаляем ненужные файлы в Windows. Процесс удаления документов в 1С устроен немного иначе.
В некоторых версиях 8.3 есть возможность прямого удаления элементов, в том числе и предустановленных(!). Никогда этим не пользуйтесь, тем более что отменить данную операцию невозможно!
Чтобы удалить ненужный вам элемент справочника, или документ, сначала его нужно пометить на удаление. Это можно сделать при помощи клавиши Delete на клавиатуре или соответствующей кнопки на панели инструментов. Ниже пример из 1С Бухгалтерии 8.3:
Перед нажатием кнопки удаления следует убедиться, что в списке выделен нужный объект. В процессе выполнения операции программа запросит подтверждение действия.
После подтверждения объект будет отмечен в списке красным крестиком слева, как на рисунке ниже. Кстати, про крестик, но уже другой, есть ещё одна здесь на ArtemVM.info.
Снять пометку на удаление можно так же, как и поставить её.
При пометке на удаление документа, его проведение отменяется.
Чтобы окончательно избавиться от помеченных на удаление объектов базы 1С Бухгалтерии, нужно запустить обработку «Удаление помеченных объектов». Для 1С Бухгалтерии 8.3 для этого следует зайти в главное меню.
А для 1С Бухгалтерии 8.2 для удаления помеченных объектов нужно зайти в меню «Операции / Удаление помеченных объектов». или в раздел «Администрирование».
Запомните: удаленные объекты нельзя восстановить. Никак.
Чтобы работа в 1С:Бухгалтерии 8.3 не приносила неожиданностей, изучите программу по нашему (240 уроков, 42 часа видео). Рассматривается ведение учёта (сквозная задача) и устройство программы.
Почему не удаляется документ
Однако, довольно часто встречаются ситуации, когда помеченный на удаление объект невозможно окончательно удалить. Программа по каким-то причинам не может это сделать. Почему?
В 1С Бухгалтерии документ или элемент справочника нельзя удалить, если на них есть хотя бы одна ссылка.
Таким образом, если какой-то документ «не хочет» удаляться, то значит что на него ссылаются другие документы в базе 1С. Что значит ссылаются? Очень просто. Это значит, что в другом документе есть поле, в котором данный «неудаляемый документ» выбран в качестве значения. Пример для 1С Бухгалтерии 8.2 приведён ниже.
Подведём итоги
Если у вас не удаляется какой-либо документ, элемент справочника или что-то ещё, что удаляется посредством установки пометки на удаление, то нужно последовательно удалить все ссылки на удаляемый объект. Только в этом случае не будет препятствий к его окончательному удалению.
Разумеется, если объекты, с которыми связан данный документ, вам нужны, то про удаление можно забыть. К примеру, был склад. Потом его ликвидировали. Однако удалить его из базы 1С Бухгалтерии уже не получится, поскольку он используется во многих документах. Впрочем, после от ненужных документов избавиться всё-таки можно.
Особенности работы с объектами, помеченными на удаление, удаление ссылок на объекты и прочие смежные вопросы я рассматриваю в онлайн курсе по 1С Бухгалтерии. После прохождения учебного курса все ваши вопросы по 1С исчезнут.