Как найти ссылку на элемент справочника

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

Для запуска обработки зайдите в меню Сервис и настройки – Все функции.

Отметим, что начиная с версии платформы 8.3.17 команда Все функции переименована в Функции технического специалиста.

В открывшемся окне введите слово Поиск, выделите пункт Поиск ссылок на объекты и нажмите Открыть.

Другой способ открытия обработки – через ветку Стандартные.

В поле Объект нажмите на значок с тремя точками.

Выделите в списке объект, на который нужно найти ссылки, и нажмите ОК.

Затем выберите конкретный элемент.

Запустите поиск по кнопке Найти ссылки.

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

При нажатии на любую ссылку откроется окно справочника или документа.

Кнопка Вывести список отобразит найденные ссылки в табличном или текстовом документе.

Далее вы можете сохранить список в удобном формате. Для этого нажмите на три точки и выберите меню Файл – Сохранить.

Мы рассмотрели, как быстро найти ссылки на объекты.

Кроме этого, в 1С есть обработка, которая не только находит ссылки, но и массово заменяет объекты и удаляет дубли. Обработка называется Поиск и удаление дублей. Отметим, что она не повторяет обработку Поиск ссылок на объект, а дополняет штатный функционал платформы по удалению объектов. Подробнее об этой обработке читайте в статье.

См. также:

  • Поиск и удаление дублей 1С 8.3
  • Поиск и замена значений 1С 8.3
  • Как удалить помеченные на удаление документы в 1С 8.3
  • Групповое перепроведение документов в 1С 8.3 Бухгалтерия 3.0
  • Групповая обработка справочников и документов в 1С 8.3
  • Сбилась нумерация документов в 1С 8.3: как исправить

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Оцените публикацию

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд

(1 оценок, среднее: 5,00 из 5)

Загрузка…

Мы уже познакомились с таким понятием, как объект в 1С , следующим шагом будет логично познакомиться с таким понятием, как ссылка в 1С.

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

Мы помним, что в платформе 1С 8.3. существуют три вида объектов. Это объекты метаданных, общие объекты и универсальные коллекции значений.

Подробно об объектах в 1С

Так вот, ссылка может быть только у объектов метаданных.

Замечу что, ссылка указывает не на сам объект, а на экземпляр объекта. Хотя, очень часто употребляют выражения «ссылка объекта», «ссылка на объект» и т.п.

Все ссылки объектов имеют тип СправочникСсылка.<НазваниеОбъекта>, ДокументСсылка.<НазваниеОбъекта> и т.д.

Ссылку можно использовать в качестве переменной, и также ссылку можно указывать, как реквизит других объектов метаданных.

Например, в моей конфигурации есть справочник Контрагенты.

Справочник в конфигурации 1С

А также какой-то документ, пусть будет Оплата. И я могу какому-то реквизиту документа Оплата присвоить тип — ссылка на справочник Контрагент.

Ссылка на справочник у реквизита документа 1С

Это значит, теперь в документе Оплата можно хранить  информацию о контрагенте, который сделал оплату.

Ссылка на справочник у реквизита документа 1С

Если мы используем ссылку в качестве реквизита какого-то объекта, то при редактировании  экземпляра, на который указывает ссылка, сам реквизит не изменится.

Поясню на примере. Я выше создал документ Оплата и реквизит Оплативший для этого документа с типом СправочникСсылка.Контрагенты.

Если я  переименую элемент справочника Контрагенты.

Элемент справочника 1С

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

Документ 1С

Что это значит? Это не значит, что реквизит Оплативший  элемента и сам элемент справочника Номенклатура поменялся автоматически. Нет, это значит, что данный реквизит хранит указатель на экземпляр объекта, который отображается посредством наименования. Поменяли наименование, поменялось только отображение, если бы поменяли какой-нибудь другой реквизит справочника Контрагенты, то пользователь бы ничего не заметил.

Получить ссылку 1С

Каким образом программно получить ссылку на экземпляр объекта, который уже есть в базе?

Сделать это можно несколькими способами: найти по коду, найти по наименованию, найти по реквизиту и найти по нескольким реквизитам через запрос. Я рассмотрю первые два метода.

Для демонстрации этих методов, на основной форме документа Оплата я создам команду «Установить контрагента», которую размещу в командной панели формы.

Команда основной формы 1С

При выполнении этой команды я буду в поле Оплативший записывать определенного контрагента.  Для этого я создам обработчики команды на клиенте и на сервере.

Обработчики команды 1С

Первый способ получения ссылки: найти по коду, для поиска по коду необходимо использовать функцию менеджера объекта НайтиПоКоду.

Объект.Оплативший = Справочники.Контрагенты.НайтиПоКоду("000000002");

Функция НайтиПоКоду вернёт ссылку на экземпляр объекта справочник Контрагенты, которому соответствует код 000000002. Почему мы задали код в виде строки, а не в виде цифры, например? Чтобы понять это, нужно открыть непосредственно редактор справочника  Контрагенты в конфигураторе, перейти на закладку «Данные» и посмотреть, какой тип кода у этого справочника.

Тип кода справочника 1С

Тип кода у справочника Контрагенты — строка, поэтому код мы ищем по строковому значению.

Таким образом, данный код:

Справочники.Контрагенты.НайтиПоКоду("000000002")

возвращает ссылку на справочник Контрагенты, код у которого 000000002. Если такой нет, возвращается пустая ссылка (о них ниже), если с таким кодом несколько элементов, то возвращается один из них, какой конкретно — предугадать невозможно, платформа выберет элемент по своим внутренним идентификаторам.

Рассмотрим синтаксис этой  функции для менеджера справочника:

НайтиПоКоду(<Код>,<ПоискПоПолномуКоду>,<Родитель>,<Владелец>)

Где:

Код – непосредственно тот код, по которому мы ищем наш элемент;

ПоискПоПолномуКоду — если стоит параметр Истина, то поиск будет вестись по кодам всей иерархии, т.е. Вам необходимо будет указывать код каждой группы, куда входит элемент через флеш. Например, так: 001/005/110, где слева будет располагаться самая верхняя группа, а справа непосредственно код элемента.

Данное поле необязательно, по умолчанию – Ложь;

Родитель – для иерархических справочников можно указать группу, тогда поиск будет вестись внутри группы. Данное поле необязательно;

Владелец – для подчиненных справочников можно указать владельца, тогда поиск будет вестись только среди элементов, подчиненных данному владельцу. Данное поле необязательно.

Второй способ получения ссылки: найти по наименованию, для поиска по наименованию необходимо использовать функцию менеджера объекта НайтиПоНаименованию.

Объект.Оплативший = Справочники.Контрагенты.НайтиПоНаименованию("ООО Поставка");

Этот способ можно применить только для тех объектов, у которых имеется стандартный реквизит Наименование.

Например, у справочников этот реквизит имеется.

Стандартный реквизит Наименование справочника 1С

А у документов его нет.

Отсутствие стандартного реквизита Наименование документа  1С

В случае этой функции, поиск ведется по тому значению, которое в поле Наименование объекта

Синтаксис функции для менеджера справочника следующий:

НайтиПоНаименованию(<Наименование>,<ТочноеСоответствие>,<Родитель>,<Владелец>)

Где:

 «Наименование» – непосредственно то наименование, по которому мы ищем наш элемент;

«ТочноеСоответствие» — если стоит параметр Ложь, то поиск будет вестись не точно, т.е. когда левая часть наименования элемента и строка поиска будут совпадать (например, Металл и Металл 01), то поиск выдаст результат. Если стоит Истина, то будут найдены только те элементы, наименование которых будет точно совпадать со строкой поиска.

Данное поле необязательно, по умолчанию – Ложь.

Помните это, что по умолчанию поиск ведется не точно;

Параметры «Родитель» и «Владелец» точно такие же, как для процедуры НайтиПоКоду.

Пустая ссылка 1С

У Вас уже, наверное, назрел вопрос: что будут возвращать методы НайтиПоКоду, НайтиПоНаименованию, если такой элемент справочника не был найден. Они будут возвращать Пустую ссылку. Пустая ссылка — это пустое значение какого-нибудь справочника или документа. У менеджеров справочника или документа есть методы, которые возвращают пустую ссылку соответствующих объектов.

Выглядит он так:

ПустаяНоменклатура= Справочники.Номенклатура.ПустаяСсылка();

ПустаяОплата = Документы.Оплата.ПустаяСсылка();

Переменные ПустаяНоменклатура и ПустаяОплата содержат в себе пустые ссылки на каждый объект.

Обращаю Ваше внимание, что для каждого вида справочника и каждого документа будет своя собственная пустая ссылка.

Данный метод очень удобно использовать, когда нам необходимо знать, найден ли элемент справочника по коду (названию) или нет.

Например, доработаем код выше: если элемента с таким названием нет, то выведем сообщение.

ПоставкаОплативший = Справочники.Контрагенты.НайтиПоНаименованию("ООО Поставка");

Если ПоставкаОплативший = Справочники.Контрагенты.ПустаяСсылка() Тогда 
	Сообщить("Не найден контрагент по наименованию ООО Поставка");
иначе
	Объект.Оплативший = ПоставкаОплативший;
КонецЕсли;	

ПустаяСсылка() – это метод менеджера объекта. Также есть метод ссылки объекта Пустая(), который возвращает тип булево. Истина — если это пустая ссылка. Код выше можно переделать:

ПоставкаОплативший = Справочники.Контрагенты.НайтиПоНаименованию("ООО Поставка");

Если ПоставкаОплативший.Пустая() Тогда 
	Сообщить("Не найден контрагент по наименованию ООО Поставка");
иначе
	Объект.Оплативший = ПоставкаОплативший;
КонецЕсли;	

Метод Пустая() удобно использовать работая в клиентском контексте (в том числе на тонком клиенте), потому что менеджер объекта это «тяжелый» объекта и с ним можно работать только в серверном контексте. Т.е. установку контрагента можно сделать таким способом:

&НаСервере
Процедура УстановитьКонтрагентаНаСервере()
	
	ПоставкаОплативший = Справочники.Контрагенты.НайтиПоНаименованию("ООО Поставка");
	Если Не ПоставкаОплативший = Справочники.Контрагенты.ПустаяСсылка() Тогда 
		Объект.Оплативший = ПоставкаОплативший;
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьКонтрагента(Команда)
	УстановитьКонтрагентаНаСервере();
	Если Объект.Оплативший.Пустая() Тогда 
		ПоказатьПредупреждение(,"Не найден контрагент по наименованию ООО Поставка");	
КонецЕсли;	
КонецПроцедуры

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

Пустая ссылка в 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Работая в конфигурациях 1С, иногда приходится сталкиваться с ситуациями, когда нужно понять, в каких документах, регистрах, либо справочниках применяется определенный объект (к примеру, контрагент, ОС, банковский счет, кредитное учреждение и прочее). Эти сведения требуются для того, чтобы проверить ведение учетных данных в базе. Также они пригодятся при появлении определенных неточностей или несоответствии информации. Для этого в программе 1С 8.3 предусмотрена особая обработка – «Поиск ссылок на объект». Разберем особенности ее использования на примере конфигурации 1С: Бухгалтерия, редакция 3.0.

Поиск ссылок на объект в 1С: Бухгалтерия

Открыть обработку через меню «Функции для технического специалиста» (до редакции решения 8.3.17 – Все функции).

Рис. Настройки налогов и отчетов. Функции для технического специалиста в 1С

В перечне найти «Стандартные» – «Поиск ссылок на объекты»:

Рис. Функции для технических специалистов. Стандартные. Поиск ссылок на объекты в 1С

В появившемся окне в поле «Объект» через 3 точки выбрать объект, требующий анализа.

Рис. Поиск ссылок на объект. Выбор типа данных в 1С

Например, необходима проверка того, какие документы корректировались определенным пользователем. Для этих целей в поле «Объект» выбрать «Пользователь»:

Рис. Поиск ссылок на объект. Пользователь в 1С

Появляется дополнительное окно с указанием всех пользователей этой конфигурации.

Рис. Ссылки на объекты в программе 1С. Выбор пользователя

По нажатию кнопки «Найти ссылки» конфигурация выдаст все справочники, документы, регистры, где записан интересующий нас пользователь.

Рис. Поиск ссылок на объект. Найти ссылки в 1С

Кроме того, в доступных ссылках можно отыскать определенный документ, например, «Начисление заработной платы», нажав на кнопку «Найти».

Рис. Поиск ссылки на объект. Начисление зарплаты в 1С

В итоге получится следующее:

Рис. Поиск ссылок на объект. Перечень в 1С

То есть в рассматриваемом примере под необходимым пользователем создавался лишь один документ начисления заработной платы. Эти данные помогут руководителю контролировать работников.

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

 +7 

   

Распечатать

Как найти существующие ссылки на объекты?

Для 8.х НайтиПоСсылкам (FindDataByRef)
Синтаксис:
НайтиПоСсылкам (< Список ссылок> )
Параметры:
<Список ссылок> Обязательный
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, состоящая из ко­лонок с индексами: 0 — Искомая ссылка; 1 — Ссылка на объект, который содержит искомую ссылку.
Описание:
Осуществляет поиск ссылок на объекты.

Код 1C v 8.х

 //Примеры:
Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам (Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
Сообщить (" " + Сокр(Ссылка[0]) + " " + Сокр(Ссылка[1]));
КонецЦикла;
//или
Массив = Новый Массив;
Массив.Добавить(СвылкаНаИскомыйОбъект);
СсылкиНаОбъект = НайтиПоСсылкам(Массив);
Для каждого элем из СсылкиНаОбъект цикл
Сообщить(элем);
ОбработкаПрерыванияПользователя();
КонецЦикла;

Функция НайтиПоСсылке имеет особенность: для корректной её работы необходимо, чтоб все объекты были доступны на чтение. Если у вас есть роли, имеющие ограничение на чтение, то вызов функции НайтиПоСсылке можно выполнять только в привилегированном модуле, иначе может возникать ошибка такого рода:
НайтиПоСсылкам(Ссылки) {(1)}: Ошибка при вызове метода контекста (НайтиПоСсылкам): У пользователя недостаточно прав на исполнение операции над базой данных.

Для 7-рки — НайтиСсылки
Находит ссылки на объекты, переданные в списке значений.
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Англоязычныйсиноним:
FindReferences
Параметры:
<Объекты> Конкретное значение объекта илиобъект типа СписокЗначений, в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> Идентификатор объекта типа ТаблицаЗначений, в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. Объект — объект, на который ссылаются; 2. Ссылка — объект, который содержит ссылку; 3. Комментарий — комментарий кссылке.
Описание:
Процедура НайтиСсылки находит ссылки на переданные в списке объекты, и помещает их в таблицу значений.

Код 1C v 7.x

 СсылкиТЗ=СоздатьОбъект("ТаблицаЗначений");
НайтиСсылки(СсылкаНаТовар,СсылкиТЗ);
//В результате мы получаем ТЗ с ссылками на данный элемент

Программа 1С в своей структуре позволяет определить ссылочный тип данных для реквизитов справочников, документов, измерений регистров и т. д. Источником информации для таких элементов будут данные других объектов.

Обработка в программе 1С Поиск ссылок на объект позволяет найти в базе данных все места, где использован указанный объект. Функцию используют:

  • для проверки ссылки перед удалением, чтобы не повредить целостность базы;
  • быстрого поиска всех объектов, где использовался элемент, например, для его замены;
  • просмотра истории использования элемента в других объектах.

Механизм поиска ссылок встроен во все типовые конфигурации. Примеры рассмотрены на 1С 8.3 Бухгалтерия.

Содержание

  • 1 Запуск и использование обработки в режиме 1С:Предприятия
  • 2 Поиск ссылок на объект в конфигураторе
  • 3 Программный поиск ссылок на объекты
    • 3.1 Вам будет интересно

Запуск и использование обработки в режиме 1С:Предприятия

Чтобы начать поиск ссылок на объекты в 1С 8.3:

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

Поиск ссылок на объект в конфигураторе

В работу конфигуратора тоже встроен механизм поиска ссылок на объект. Только ссылки он ищет не в информационной базе среди данных, введенных пользователем, а в структуре конфигурации на использование выбранного объекта метаданных в других элементах конфигурации.

Для запуска нажатием правой кнопкой мыши по объекту вызовите контекстное меню и выберите команду Поиск ссылок на объект.

image022

В окне Поиск ссылок отметьте места, которые требуется проанализировать на наличие искомого объекта:

image024

В результат поиска не включаются макеты, на которых расположены одноименные с искомым объектом параметры. Для подобного анализа лучше воспользуйтесь Глобальным поиском.

image032

Исключения возникают, только если свойство ПараметрРасшифровки ячейки макета совпадает с наименованием источника поиска.

image034

Список мест в окне Поиск ссылок является фиксированным, его нельзя дополнить или изменить.

Результат поиска отображается в виде служебного сообщения.

image040

Поиск выполняется только по одному объекту, его нельзя применить к группе или нескольким выделенным объектам. Но можно использовать на реквизитах, табличных частях, командах, формах целиком и т. д. Для элементов формы функция не применяется.

Программный поиск ссылок на объекты

В 1С поиск ссылок на объект программно осуществляется с помощью встроенной в конфигуратор функции НайтиПоСсылкам(). Описание можно найти в Синтакс-помощнике: Глобальный контекст — Процедуры и функции работы с данными информационной базы.

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

Функция НайтиПоСсылкам() выполняется на сервере, встроена в платформу начиная с версии 8.3.5. Используется в коде стандартных обработках конфигураций — таких, как Удаление помеченных объектов, Скрытие конфиденциальной информации и др.

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

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

См. также:

  • Использование кнопки «Все функции» в 1С 8.3
  • Поиск и замена значений в 1С Бухгалтерия 8.3
  • Обнаружено неправомерное использование 1C — как убрать
  • Интерфейс 1С 8.3 Бухгалтерия 3.0
  • Как посмотреть, какая версия 1С 8.3 установлена
  • Как в 1С посмотреть историю изменения документа
  • Пропало главное меню в 1С 8.3
  • Как в 1С выделить несколько объектов
  • Как подключиться к 1С через тонкий клиент

Поставьте вашу оценку этой статье:

Загрузка…

Дата публикации: Дек 9, 2020

Поставьте вашу оценку этой статье:

Загрузка…

Понравилась статья? Поделить с друзьями:
  • Как найти дисплей в настройках на телефоне
  • Как найти момент для шутки
  • Как найти человека по love mail
  • Как найти главный период функции sin
  • Как найти площадь круга описанного около четырехугольника