Как очистить значение реквизита типа «Документ» в справочнике 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

В процессе работы с базами данных на платформе 1С:Предприятие 7.7 пользователи и разработчики часто сталкиваются с необходимостью очистить ранее заполненное поле ссылочного типа, например, реквизит типа «Документ» в справочнике. Выясним, какими способами можно решить эту задачу быстро, корректно и без повреждения структуры данных.

Способ 1. Использование горячих клавиш и меню (интерактивно)

Если вам требуется очистить значение в конкретном элементе справочника вручную непосредственно в интерфейсе программы, воспользуйтесь одним из следующих вариантов:

  1. Горячие клавиши: Перейдите в нужное поле ввода на форме (установите на него фокус) и нажмите комбинацию клавиш Shift + F4. Это стандартное системное сочетание клавиш в 1С 7.7 для очистки значений в полях ввода ссылочного типа.
  2. Главное меню программы: Если вы забыли комбинацию клавиш, обратите внимание на системное меню. Активизируйте нужное поле ввода, после чего перейдите в верхнем меню по пути: Действия — Значение.... Это действие откроет диалог выбора значения, где также можно очистить текущую ссылку.

Важное ограничение: Описанные интерактивные действия не сработают, если для элемента формы (поля ввода) программно или в конфигураторе установлены свойства Доступность в значение 0 или ТолькоПросмотр в значение 1. Также редактирование будет заблокировано, если вся форма открыта в режиме «Только просмотр» через вызов метода Форма.ТолькоПросмотр(1).

Способ 2. Программное изменение значения реквизита

Если необходимо очистить реквизиты сразу у множества элементов справочника, ручной ввод не подходит. В этом случае мы создаем внешнюю обработку и пишем код, выполняющий обход элементов в цикле. В 1С:Предприятие 7.7 существует два основных программных подхода для очистки ссылочного поля:

Вариант А. Присвоение пустой строки

В отличие от платформы 1С v8.х, в версии 7.7 для очистки ссылки достаточно присвоить реквизиту пустую строку. Платформа автоматически преобразует ее в пустое значение нужного типа:


Спр = СоздатьОбъект("Справочник.ИмяСправочника");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Спр.РеквизитДокумент = "";
    Спр.Записать();
КонецЦикла;

Вариант Б. Использование функции ПолучитьПустоеЗначение()

Данный подход считается более строгим и правильным с точки зрения стандартов разработки. Мы явно инициализируем пустое значение нужного типа. Здесь важно учитывать, как именно задан тип реквизита в конфигураторе:

Спр.РеквизитДокумент = ПолучитьПустоеЗначение("Документ");

Спр.РеквизитДокумент = ПолучитьПустоеЗначение("Документ.Реализация");

После присвоения нового значения обязательно вызывайте метод Записать(), чтобы зафиксировать изменения в базе данных. Помните, что запись элемента может вызвать ошибку блокировки данных, если этот элемент в данный момент открыт и редактируется другим пользователем в сети.

Особый случай: Очистка периодических реквизитов

Проанализируем ситуацию, когда реквизит справочника настроен как периодический (хранит историю изменений по датам). Простое присвоение пустого значения или интерактивное нажатие клавиш очистит значение только на текущую рабочую дату, но вся история изменений останется в базе. Для полной очистки истории такого реквизита необходимо программно использовать объект Периодический.

Разберем этот процесс по шагам:

  1. Создаем объект для работы с периодическими реквизитами.
  2. Связываем его с нужным реквизитом конкретного элемента справочника с помощью метода ИспользоватьОбъект().
  3. Находим или выбираем записи истории и удаляем их методом Удалить().

Рассмотрим пример программного кода для удаления истории значений периодического реквизита:


ПП = СоздатьОбъект("Периодический");
// Связываем с периодическим реквизитом конкретного элемента справочника "Спр"
ПП.ИспользоватьОбъект("РеквизитДокумент", Спр.ТекущийЭлемент());
// Перебираем и удаляем все записи в истории данного реквизита
Пока ПП.ВыбратьЗначения() = 1 Цикл
    Если ПП.ПолучитьЗначение() = 1 Тогда
        ПП.Удалить();
    КонецЕсли;
КонецЦикла;

Способ 3. Использование групповых обработок без написания кода

Если вы не хотите писать собственный программный код, можно воспользоваться готовыми административными инструментами. В большинстве типовых конфигураций 1С 7.7 (или на дисках ИТС) поставляется универсальная обработка «Групповая обработка справочников и документов». С ее помощью можно выполнить следующие действия:

  1. Настроить фильтр по нужным элементам справочника, в которых требуется произвести очистку.
  2. Выбрать действие по изменению реквизита.
  3. Указать пустое значение для реквизита типа «Документ» и запустить массовое выполнение операции.
← На главную