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

Работая в конфигурациях 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

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

Загрузка…

  • Как создать элемент (группу) справочника?
  • Как найти элемент справочника?
  • Как удалить элемент справочника?
  • Как перебрать элементы справочника?
  • Как выбрать все элементы из определенной группы?
  • Как перебрать элементы подчиненного справочника с помощью запроса?
  • Как перебрать элементы подчиненного справочника с помощью выборки справочника?
  • Как открыть форму списка (элемента) справочника?
  • Как добавить запись в табличную часть элемента справочника?
  • Как удалить строки из табличной части справочника?
  • Как перебрать строки табличной части справочника?
  • Как создать элемент в нужной группе?
  • Как узнать, есть ли у текущего элемента подчиненные?
  • Как узнать количество подчиненных элементов у выбранного элемента справочника?
  • Как узнать количество подчиненных элементов у выбранного элемента справочника, если подчиненных справочников нексолько?
  • Как получить всех родителей выбранного элемента справочника?
  • Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
  • Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
  • Как найти все элементы справочника, в которых не заполнен строковый реквизит?
  • Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
  • Как организовать программный выбор элемента справочника?
  • Как сохранить фотографию сотрудника в справочнике «Сотрудники»?

Как создать элемент (группу) справочника?

НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент();
НовыйЭлемент.Наименование = "военный билет"; 
// Установить другие реквизиты.  
// .....
НовыйЭлемент.Записать(); 

НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); 
// Получить ссылку на группу, в которой будет находиться новый элемент
Родитель = Справочники.Банки.НайтиПоКоду("000000001"); 
НовыйЭлемент.Наименование = "АКБ"; 
НовыйЭлемент.Код = "000000011"; 
НовыйЭлемент.Родитель = Родитель; 
// Установить другие реквизиты 
// .....
НовыйЭлемент.Записать(); 

НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); 
// Получить ссылку на группу, в которой должна находиться создаваемая группа
Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Обувь", Истина); 
НоваяГруппа.Наименование = "Модельная обувь"; 
НоваяГруппа.Родитель = Родитель; 
// Установить другие реквизиты  
// .....
НоваяГруппа.Записать(); 

// Создать новый элемент в корне справочника
НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); 
НовыйЭлемент.Наименование = "IT отдел";  
НовыйЭлемент.Записать(); 

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

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

// Поиск по коду
РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду("00030"); 
Если РезультатПоиска.Пустая() Тогда 
    // Выполнить действия, предусмотренные в случае, когда элемент не найден.  
КонецЕсли; 

// Поиск по наименованию
РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию("Кроссовки"); 

// Поиск по реквизиту
РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "К-120002");

Как удалить элемент справочника?

// Найти ссылки на удаляемый элемент. 
МассивСсылок = Новый Массив; 
МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент); 
НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); 

Если НайденныеСсылки.Количество() > 0 Тогда 
    Сообщить("Нельзя удалять элемент, на него имеются ссылки"); 
Иначе 
    УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект(); 
    УдаляемыйЭлемент.Удалить(); 
КонецЕсли; 

УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);

Как перебрать элементы справочника?

Выборка = Справочники.Номенклатура.ВыбратьИерархически(); 
Пока Выборка.Следующий() Цикл 
    Наименование = Выборка.Наименование; 
    // Обращение к другим данным справочника
    // .....
КонецЦикла; 

Запрос = Новый Запрос(
    "ВЫБРАТЬ 
    |    Ссылка, 
    |    Наименование 
    |ИЗ 
    |    Справочник.Номенклатура 
    |АВТОУПОРЯДОЧИВАНИЕ"
); 
Результат = Запрос.Выполнить().Выбрать(); 
Пока Результат.Следующий() Цикл 
    Наименование = Результат.Наименование;  
КонецЦикла;

Как выбрать все элементы из определенной группы?

Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель); 
Пока Выборка.Следующий() Цикл 
    Наименование = Выборка.Наименование;
КонецЦикла; 

Запрос = Новый Запрос(
    "ВЫБРАТЬ 
    |    Ссылка, 
    |    Наименование 
    |ИЗ 
    |    Справочник.Номенклатура 
    |ГДЕ 
    |    Родитель = &Родитель 
    |АВТОУПОРЯДОЧИВАНИЕ"
); 
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); 
Результат = Запрос.Выполнить().Выбрать(); 
Пока Результат.Следующий() Цикл 
    Наименование = Результат.Наименование;  
КонецЦикла; 

Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель); 
Пока Выборка.Следующий() Цикл 
    Наименование = Выборка.Наименование;  
КонецЦикла; 

Запрос = Новый Запрос(
    "ВЫБРАТЬ 
    |    Ссылка, 
    |    Наименование 
    |ИЗ 
    |    Справочник.Номенклатура 
    |ГДЕ 
    |    Родитель В ИЕРАРХИИ(&Родитель) 
    |АВТОУПОРЯДОЧИВАНИЕ"
); 
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); 
Результат = Запрос.Выполнить().Выбрать(); 
Пока Результат.Следующий() Цикл 
    Наименование = Результат.Наименование;  
КонецЦикла;

Как перебрать элементы подчиненного справочника с помощью запроса?

Процедура ПереборПодчиненыхЭлементов(Контрагент) 
    Запрос = Новый Запрос(); 
    Запрос.Текст =
    "ВЫБРАТЬ 
    |    КонтактныеЛица.Ссылка 
    |ИЗ 
    |    Справочник.КонтактныеЛица КАК КонтактныеЛица 
    |ГДЕ 
    |    КонтактныеЛица.Владелец = &Владелец"; 
    Запрос.УстановитьПараметр("Владелец", Контрагент); 
    Результат = Запрос.Выполнить(); 
    Выборка = Результат.Выбрать(); 
    Пока Выборка.Следующий() Цикл 
        ОчереднойПодчиненый = Выборка.Ссылка; 
    КонецЦикла; 
КонецПроцедуры

Как перебрать элементы подчиненного справочника с помощью выборки справочника?

Процедура ПереборПодчиненыхЭлементов(Контрагент) 
    // Получить выборку по указанному контрагенту
    Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); 
    Пока Выборка.Следующий() Цикл 
        ОчереднойПодчиненый = Выборка.Ссылка; 
    КонецЦикла; 
КонецПроцедуры

Как открыть форму списка (элемента) справочника?

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

Элемент = Справочники.Номенклатура.НайтиПоКоду("00070"); 
Форма = Элемент.ПолучитьФорму(); 
Форма.Открыть();

Как добавить запись в табличную часть элемента справочника?

ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект(); 
НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить(); 
// Заполнить реквизиты
НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; 
// .....
ЭлементОбъект.Записать();

Как удалить строки из табличной части справочника?

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006"); 
ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); 
ОбъектСправочника.ВидыДеятельности.Очистить(); 
ОбъектСправочника.Записать(); 

ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект(); 

// Создать структуру для отбора удаляемых строк
СтруктураОтбора = Новый Структура("ВидДеятельности", ВыбранныйВидДеятельности); 

// Получить массив удаляемых строк
ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора); 

// Удалить строки
Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл 
    ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока); 
КонецЦикла; 

ОбъектСправочника.Записать();

Как перебрать строки табличной части справочника?

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006"); 
Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл 
    Сообщить(ТекущаяСтрока.ВидДеятельности); 
КонецЦикла;

Как создать элемент в нужной группе?

КодГруппы = "330100"; 
ПоискПоПолномуКоду = Ложь; // значение по умолчанию 
Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); 

Если Группа.Пустая() Тогда 
    Группа = Справочники.Номенклатура.СоздатьГруппу(); 
    Группа.Код = КодГруппы; 
    Группа.Наименование = "Загруженные"; 
    Группа.Записать(); 
ИначеЕсли НЕ Группа.ЭтоГруппа Тогда 
    Сообщить("Найден элемент справочника с указанным кодом!"); 
    // Предусмотреть прерывание алгоритма...
КонецЕсли; 

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

Группа = Справочники.Номенклатура.Загруженные; 

КодЭлемента = "330100"; 
ПоискПоПолномуКоду = Ложь; // Значение по умолчанию 
Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду); 

Если Родитель.Пустая() Тогда 
Родитель = Справочники.Номенклатура.СоздатьЭлемент(); 

Родитель.Код = КодЭлемента; 
Родитель.Наименование = "Загруженные"; 

Родитель.Записать(); 
КонецЕсли; 

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

Как узнать, есть ли у текущего элемента подчиненные?

Выборка = Справочники.Номенклатура.Выбрать( , Владелец); 
Если Выборка.Следующий() = Истина Тогда 
    // Есть подчиненные элементы.
КонецЕсли;

Запрос = Новый Запрос(); 
Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1 
    |    ЕдиницыИзмерения.Ссылка 
    |ИЗ 
    |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения 
    |ГДЕ 
    |    ЕдиницыИзмерения.Владелец = &Владелец"; 
Запрос.УстановитьПараметр("Владелец", Владелец); 
Если НЕ Запрос.Выполнить().Пустой() Тогда 
    // Есть подчиненные элементы!
КонецЕсли;

Как узнать количество подчиненных элементов у выбранного элемента справочника?

Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец); 
КоличествоЭлементов = 0; 
Пока Выборка.Следующий() Цикл 
    КоличествоЭлементов = КоличествоЭлементов + 1; 
КонецЦикла; 

Запрос = Новый Запрос(); 
Запрос.Текст =
    "ВЫБРАТЬ 
    |    КОЛИЧЕСТВО(*) КАК КоличествоЗаписей 
    |ИЗ 
    |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения 
    |ГДЕ 
    |    ЕдиницыИзмерения.Владелец = &Владелец"; 
Запрос.УстановитьПараметр("Владелец", Владелец); 
Выборка = Запрос.Выполнить().Выбрать(); 

Если Выборка.Следующий() Тогда 
    КоличествоЗаписей = Выборка.КоличествоЗаписей; 
КонецЕсли;

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

ВЫБРАТЬ
    СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов 
ИЗ 
    (ВЫБРАТЬ 
        КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных 
    ИЗ 
        Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения 
    ГДЕ
        ЕдиницыИзмерения.Владелец = &Владелец 

    ОБЪЕДИНИТЬ ВСЕ 

    ВЫБРАТЬ 
        КОЛИЧЕСТВО(*) 
    ИЗ 
        Справочник.СерииНоменклатуры КАК СерииНоменклатуры 
    ГДЕ
        СерииНоменклатуры.Владелец = &Владелец
    ) КАК ВложенныйЗапрос

Как получить всех родителей выбранного элемента справочника?

МассивРодителей = Новый Массив; 
Родитель = СсылкаНаЭлемент.Родитель; 

Пока НЕ Родитель.Пустая() Цикл
    МассивРодителей.Добавить(Родитель);
    Родитель = Родитель.Родитель; 
КонецЦикла; 

Для Каждого ТекущийРодитель Из МассивРодителей Цикл
    // Работа с текущим родителем
КонецЦикла;
ВЫБРАТЬ 
    Номенклатура.Ссылка КАК Ссылка 
ИЗ 
    Справочник.Номенклатура КАК Номенклатура 
ГДЕ 
    Номенклатура.Ссылка = &Ссылка 
ИТОГИ ПО 
    Ссылка ТОЛЬКО ИЕРАРХИЯ 
ТекущийЭлементНоменклатуры = ЭлементНоменклатура; 

Запрос = Новый Запрос(
    "ВЫБРАТЬ 
    |    Номенклатура.Родитель, 
    |    Номенклатура.Родитель.Родитель, 
    |    Номенклатура.Родитель.Родитель.Родитель, 
    |    Номенклатура.Родитель.Родитель.Родитель.Родитель, 
    |    Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель 
    |ИЗ 
    |    Справочник.Номенклатура КАК Номенклатура 
    |ГДЕ 
    |    Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"; 

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

    Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл 
        ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; 
        Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда 
            Прервать; 
        Иначе 
            Сообщить(ТекущийЭлементНоменклатуры); 
        КонецЕсли; 
    КонецЦикла; 

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

Как получить запросом «полный» код элементов справочника, если тип кода — Строка?

ВЫБРАТЬ 
    Контрагенты.Ссылка, 
    ВЫБОР 
        КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код 
        КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА 
            Контрагенты.Родитель.Код + "/" + Контрагенты.Код 
        ИНАЧЕ Контрагенты.Родитель.Родитель.Код + "/" + Контрагенты.Родитель.Код + 
            "/" + Контрагенты.Код 
    КОНЕЦ КАК ПолныйКод 
ИЗ 
    Справочник.Контрагенты КАК Контрагенты

Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?

Запрос = Новый Запрос(
    "ВЫБРАТЬ 
    |    Контрагенты.Ссылка КАК Ссылка 
    |ИЗ 
    |    Справочник.Контрагенты КАК Контрагенты 
    |ГДЕ 
    |    (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа) 
    |ИТОГИ ПО 
    |    Ссылка ТОЛЬКО ИЕРАРХИЯ"
); 
Запрос.УстановитьПараметр("ЧастьНаименования", "%" + ПолеВводаПодстрока + "%");

Как найти все элементы справочника, в которых не заполнен строковый реквизит?

ВЫБРАТЬ 
    ФизическиеЛица.Ссылка 
ИЗ 
    Справочник.ФизическиеЛица КАК ФизическиеЛица 
ГДЕ 
    (ФизическиеЛица.ИНН = "") 

ВЫБРАТЬ 
    ФизическиеЛица.Ссылка 
ИЗ 
    Справочник.ФизическиеЛица КАК ФизическиеЛица 
ГДЕ 
    (ФизическиеЛица.СтраховойНомерПФР = "") ИЛИ (ФизическиеЛица.СтраховойНомерПФР = " - -")

Как перенести все элементы справочника «Контрагенты» из одной группы в другую?

Запрос = Новый Запрос; 
Запрос.Текст =
    "ВЫБРАТЬ 
    |    Контрагенты.Ссылка 
    |ИЗ 
    |    Справочник.Контрагенты КАК Контрагенты 
    |ГДЕ 
    |    Контрагенты.Родитель = &СтарыйРодитель"; 
Запрос.УстановитьПараметр("СтарыйРодитель", СтарыйРодитель); 
Результат = Запрос.Выполнить(); 

Выборка = Результат.Выбрать(); 
Пока Выборка.Следующий() Цикл 
    Контрагент = Выборка.Ссылка.ПолучитьОбъект(); 
    Контрагент.Родитель = НовыйРодитель; 
    Контрагент.Записать(); 
КонецЦикла;

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

// Получить форму выбора справочника как подчиненную форме документа 
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); 

// Открыть полученную форму 
ФормаВыбора.Открыть(); 

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) 
    ПолученноеЗначение = ЗначениеВыбора; 
    // Дальнейшая обработка значения...
КонецПроцедуры 

ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); 
Выбрано = ФормаВыбора.ОткрытьМодально(); 

Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка) 
    // Запретить стандартную обработку. 
    СтандартнаяОбработка = Ложь; 
    // Получить форму выбора справочника как подчиненную полю ввода
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , Элемент); 
    // Открыть полученную форму 
    ФормаВыбора.Открыть(); 
КонецПроцедуры 

Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) 
    // Отключить стандартную обработку (при необходимости)
    СтандартнаяОбработка = Ложь; 
    ПолученноеЗначение = ВыбранноеЗначение; 
    // Дальнейшая обработка значения...
КонецПроцедуры

Как сохранить фотографию сотрудника в справочнике «Сотрудники»?

Процедура ЗагрузитьФотографию(Элемент)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Фильтр = "Текст (*,*)|*.*";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок = "Выберите картинку";
    Если ДиалогОткрытияФайла.Выбрать() Тогда 
        ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
        ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка);
        Фотография = ЭлементХранилища;
    КонецЕсли;
КонецПроцедуры

ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
элХранилища = Новый ХранилищеЗначения(ВыбФайл);
Фотография = элХранилища;

Поиск ссылок на объект

Я
   Юрий Михалыч

11.11.08 — 11:44

Можно както посмотреть стандартную процедуру Поиска ссылок на объект?

   Юрий Михалыч

1 — 11.11.08 — 11:44

для 8ки

   ДенисЧ

2 — 11.11.08 — 11:45

Что значит «посмотреть» ?

   nop

3 — 11.11.08 — 11:45

Можно, вот

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

   Юрий Михалыч

4 — 11.11.08 — 11:46

(3) Шпасиба

   Юрий Михалыч

5 — 11.11.08 — 11:47

(3) ой, мне для 8ки

   Sadovnikov

6 — 11.11.08 — 11:48

Глобальный контекст

НайтиПоСсылкам (FindByRef)

Синтаксис:

НайтиПоСсылкам(<Список ссылок>)

Параметры:

<Список ссылок> (обязательный)

Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.

Возвращаемое значение:

Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений, состоящей из колонок с индексами: 0 — искомая ссылка; 1 — ссылка на объект, если найдена ссылка в объектной таблице; ключ записи, если ссылка найдена в независимом регистре сведений; ссылка на документ-регистратор для всех остальных необъектных таблиц; 2 — объект метаданных, которому соответствуют данные из колонки 1.

Описание:

Осуществляет поиск ссылок на объекты, переданные в параметре <Список ссылок>.

Пример:

Ссылки = НайтиПомеченныеНаУдаление();

ТабСсылок = НайтиПоСсылкам(Ссылки);

Для Каждого Ссылка из ТабСсылок Цикл

   Сообщить («» + СокрЛП(Ссылка[0]) + » » + СокрЛП(Ссылка[1]));

КонецЦикла;

   ДенисЧ

7 — 11.11.08 — 11:49

Мда… Массовое воровство СП набирает обороты… Кризис… Жрать нечего, пытаются жрать СП, хотя его курить надо…

   Юрий Михалыч

8 — 11.11.08 — 11:50

(2) Посмотреть — значит найти. Это процедура в контекстном меню выбирается для объектов конфигурации.

   Юрий Михалыч

9 — 11.11.08 — 11:54

Нипанятно…

А если мне надо найти все ссылки на объект метаданных например справочника  как мне надо написать?

сцылка = Справочники.Контрагенты.ПолучитьСсылку();

Ссылки= Новый Массив;

Ссылки.Добавить(сцылка) ;

СсылкиСС = НайтиПоСсылкам(Ссылки);

Вот так?

   MRAK

10 — 11.11.08 — 11:57

на ИТС есть обработка удаления помеченных…

   Юрий Михалыч

11 — 11.11.08 — 12:00

да на кой х мне помеченные?

   dimoff

12 — 11.11.08 — 12:02

(9) Нет, все элементы справочника собрать в массив

   Immortal

13 — 11.11.08 — 12:02

алгоритм посмотреть и не задавать глупых вопросов

   Mitriy

14 — 11.11.08 — 12:04

(11) а на кой х справшивать?

   Юрий Михалыч

15 — 11.11.08 — 12:13

(10) за какой месяц ИТС?

   Mitriy

16 — 11.11.08 — 12:19

(15) любой, поиском УдалениеПомеченныхОбъектов.epf, а еще тоже интересная в этом смысле ПоискИЗаменаЗначений.epf (там же)

   афаф

17 — 11.11.08 — 12:19

// Как то так, я думаю…

   Массив = Новый Массив;

   Массив.Добавить(МояСсылка);

   Сообщить(«Старт в «+ТекущаяДата());

   ТабСсылок = НайтиПоСсылкам(Массив);    

   Для Каждого Ссылка1 из ТабСсылок Цикл

         Сообщить (»  » + СокрЛП(Ссылка1[0]) + » » + СокрЛП(Ссылка1[1]));

   КонецЦикла;

   Сообщить(«Конец в «+ТекущаяДата());

   Юрий Михалыч

18 — 11.11.08 — 12:36

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

   Mitriy

19 — 11.11.08 — 12:40

упс…

   MRAK

20 — 11.11.08 — 12:42

ужос мля… вопросы учимся правильно задавать…

   Юрий Михалыч

21 — 11.11.08 — 12:44

(20) смотри (8)

   NcSteel

22 — 11.11.08 — 12:46

(21) Цикл по методанным.

   Юрий Михалыч

23 — 11.11.08 — 13:00

Массив = Новый Массив;

Массив.Добавить(«Справочники.Конрагенты»);

Массив.Добавить(«Документы»);

Для Каждого ТекЭлемент Из Массив Цикл

   Для Каждого ТекМета Из Метаданные[ТекЭлемент] Цикл

       Сообщить(ТекМета.Имя);

   КонецЦикла;

КонецЦикла;

не выходит каменный цветок

  

Юрий Михалыч

24 — 11.11.08 — 14:03

ап

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти плавание тел
  • Как исправить опечатку в вотсапе
  • Как составить психологический портрет моего друга
  • Как живут бобры найти
  • Как найти ирину в тик токе

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии