Skip to main content

Общая информация

Ссылочное удаление (пометка удаления)

В конфигурации могут существовать связанные свойства у разных объектов. Предлагаемый алгоритм удаления: 

  • Объект помечается как удаляемый путем установки пометки на удаление (кнопка Del или контекстное меню). Все связанные объекты автоматически помечаются на удаление.
  • Основное меню - Все функции
    1c_admin_del_obj_1.jpg
  • Стандартные - Удаление помеченных объектов
    1c_admin_del_obj_2.jpg
  • Можно посмотреть удаляемые объекты выбрав Выборочное удаление. 
    1c_admin_del_obj_3.jpg
  • Можно выбрать удаляемые объекты и удалить.

Удаление элемента родительского справочника.

Есть элемент (Подчиненный) в подчиненном справочнике, у которого выставлен в качестве родителя удаляемый нами элемент (Основной). 

  • В случае удаление через "Удалить" (Shift-Del) оба элемента тихо удалятся. 
  • В случае установки пометки можно увидеть все удаляемые элементы.
  • При снятии пометки удаления с Основного, с Подчиненного тоже удаляется метка.
  • Однако проверка ссылочной целостности происходит только в момент установки пометки. То есть если пометить на удаление Основной, затем создать второй Подчиненный, будет выдано предупреждение "Вы хотите установить в качестве владельца элемент с пометкой удаления", но пометка удаления на втором подчиненном элементе не установится. При попытке удаления через предлагаемую процедуру появится ошибка и объект не будет удален.  1c_admin_del_obj_4.jpg
    Но при удалении через "Удалить" (Shift-Del) все элементы (и помеченный, и непомеченный) удалятся.
  • Если при просмотре удаляемых объектов убрать пометку с подчиненного, оставив основной, то удаление не произойдет и будет ошибка из предыдущего пункта.

Удаление элемента справочника в случае наличия ссылки на него в табличной части.

  • При установке пометки на удаление, в табличной части другого справочника элемент не помечается на удаление. В списке элементов будет отражен один элемент, однако при попытке удаления будет выдано предупреждение о наличии ссылок и элемент не будет удален и можно будет посмотреть список элементов, в которых есть ссылки.
  • При удалении через "Удалить" (Shift-Del) элемент будет удален, но в табличной части другого справочника в строке со ссылкой будет надпись "Объект не найден".
    1c_admin_del_obj_5.jpg
  • Для исправления предыдущей ситуации можно использовать Администрирование - Тестирование и исправление информационной базы
    1c_admin_del_obj_6.jpg
    В служебных сообщениях будет выведен список элементов с битыми ссылками. 1c_admin_del_obj_7.jpg
    Это считается медленной процедурой и требует монопольного доступа, можно использовать внешнюю обработку 

Типы данных встроенных классов

Раздел относится к классам Справочник, Документ, ПланВидовХарактеристик, ПланСчетов и ПланВидовРасчета. Идея общая для всех классов, рассмотрен пример класса Справочник.
При создании объекта появляются следующие типы (так их называют в документации) - СправочникМенеджер, СправочникСсылка, СправочникОбъект, СправочникВыборка. Эти слова используются часто. Но есть тьма вопросов, основной из которых - нахрена было сделано данное разделение терминологий. Ответ: понять и простить. 

Названия типов не связаны с их использованием в коде. 

СправочникМенеджер

Название типа
Отображение в коде
Назначение
СправочникиМенеджер Справочники Содержит все СправочникМенеджер и метод ТипВсеСсылки(), позволяющий получить ссылки на типы всех справочников для последующего сравнения с типом переменной.
СправочникМенеджер
Справочники.ИмяСправочника Это конкретный элемент СправочникиМенеджера. Понять и простить. 
 текноменкл = Справочники.Номенклатура;
 //текноменкл это справочникменеджер.

Общие действия, относящиеся к конкретному справочнику, а не к его конкретным объектам. Например, методы позволяют создать новый объект или найти объект по коду.

СправочникСсылка 

Хранит ссылку, идентифицирующую запись в таблице справочника. Внутренний идентификатор, хранящийся в реквизите Ссылка таблицы справочника. Через СправочникСсылка можно получить данные всего объекта через методы. При программной работе объект СправочникСсылка получают при поиске элемента справочника. Используется только для чтения данных. При получении ссылки на одну и ту же запись справочника разными способами, ссылки будут одинаковые (в отличие от объекта).
Получение СправочникОбъект из ссылки: 

ЗаписьНоменклатураСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Ручка");
ЗаписьНоменклатураОбъект = ЗаписьНоменклатураСсылка.ПолучитьОбъект();
// Здесь идут какие-то изменения
ЗаписьНоменклатураОбъект.Записать();

Одино из немногих свойств, содержащихся в СправочникСсылка, которого нет в СправочникОбъект - ПометкаУдаления.

СправочникОбъект.

Используется для создания, изменения и удаления объекта, для отображения и редактирования всех данных элемента справочника в форме элемента. Так как содержит весь объект, тяжелее ссылки. Очень похоже на передачу данных по ссылке и по значению. При каждом запросе на получение объекта создается новый временный объект. 

Объект может быть создан с помощью менеджера справочника. В этом случае создается новый объект, которого еще нет в базе данных. Если его записать, то появится новый объект в базе данных. Объект может быть получен из ссылки. В этом случае из базы данных считывается существующий объект, на который указывает ссылка. Объект также может быть получен из выборки (СправочникВыборка). В этом случае данные объекта заполняются данными, полученными в процессе считывания выборки.

Обращение к реквизитам на чтение аналогично СправочникСсылка. 

Получение ссылки из объекта: 

СсылкаНаОбъект = МойОбъект.Ссылка;

 

 

Регламентные задания

Разобраться, интересная статья  

Программное создание конфигурации.

Хер. Внешний обработчик может только уведомить об отсутствии чего-либо в конфигурации, создать кодом не получится. 

Тестирование

Через жопу. Статья о тестировании Используется уже другой (!) язык. Им видимо двух не хватало...

Git

Еще нужно разобраться, но вроде есть.