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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • АКТУАЛЬНЫЕ РЕЛИЗЫ 1С
  • ПРИМЕРЫ КОДА НА ПЛАТФОРМЕ 1С
Справочники в 1С 8.x
  • Как создать элемент (группу) справочника?
  • Как найти элемент справочника?
  • Как удалить элемент справочника?
  • Как перебрать элементы справочника?
  • Как выбрать все элементы из определенной группы?
  • Как перебрать элементы подчиненного справочника с помощью запроса?
  • Как перебрать элементы подчиненного справочника с помощью выборки справочника?
  • Как открыть форму списка (элемента) справочника?
  • Как добавить запись в табличную часть элемента справочника?
  • Как удалить строки из табличной части справочника?
  • Как перебрать строки табличной части справочника?
  • Как создать элемент в нужной группе?
  • Как узнать, есть ли у текущего элемента подчиненные?
  • Как узнать количество подчиненных элементов у выбранного элемента справочника?
  • Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
  • Как получить всех родителей выбранного элемента справочника?
  • Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
  • Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
  • Как найти все элементы справочника, в которых не заполнен строковый реквизит?
  • Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
  • Как организовать программный выбор элемента справочника?
  • Как сохранить фотографию сотрудника в справочнике «Сотрудники»?

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

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

// Установить другие реквизиты.  
....

НовыйЭлемент.Записать(); 

НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); 

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

НовыйЭлемент.Наименование = "АКБ"; 
НовыйЭлемент.Код = "000000011"; 
НовыйЭлемент.Родитель = Родитель; 

// Установить другие реквизиты.  
....

НовыйЭлемент.Записать(); 

НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); 

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

НоваяГруппа.Наименование = "Модельная обувь"; 
НоваяГруппа.Родитель = Родитель; 

// Установить другие реквизиты.  
....

НоваяГруппа.Записать(); 


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

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

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

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

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

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

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

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

УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);         
Как перебрать элементы справочника?

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

	// Обращение к другим данным справочника. 
КонецЦикла; 

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

Результат = Запрос.Выполнить().Выбрать(); 

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

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

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

Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); 

Результат = Запрос.Выполнить().Выбрать(); 

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

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


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

Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); 

Результат = Запрос.Выполнить().Выбрать(); 

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

Процедура ПереборПодчиненыхЭлементов(Контрагент) 

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

	Запрос.УстановитьПараметр("Владелец", Контрагент); 

	Результат = Запрос.Выполнить(); 
	Выборка = Результат.Выбрать(); 

	Пока Выборка.Следующий() Цикл 
		ОчереднойПодчиненый = Выборка.Ссылка; 
	КонецЦикла; 

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

Процедура ПереборПодчиненыхЭлементов(Контрагент) 

	// Получить выборку по указанному контрагенту. 
	Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); 

	Пока Выборка.Следующий() Цикл 
		ОчереднойПодчиненый = Выборка.Ссылка; 
	КонецЦикла; 

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

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

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

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

// Заполнить реквизиты. 
НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; 

ЭлементОбъект.Записать();          
Как удалить строки из табличной части справочника?

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


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

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

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

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

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

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

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

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

	Группа.Код = КодГруппы; 
	Группа.Наименование = "Загруженные"; 
	Группа.Записать(); 

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

	// Предусмотреть прерывание алгоритма.

КонецЕсли; 

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

// Реквизиты заполняются в соответствии с задачей.  

Спр.Родитель = Группа.Ссылка; 
Спр.Записать(); 


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


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

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

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

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

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

Спр.Родитель = Родитель.Ссылка; 
Спр.Записать();          
Как узнать, есть ли у текущего элемента подчиненные?

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


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

Запрос.УстановитьПараметр("Владелец", Владелец); 

Если НЕ Запрос.Выполнить().Пустой() Тогда 
	// Есть подчиненные элементы!
КонецЕсли;           
Как узнать количество подчиненных элементов у выбранного элемента справочника?

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


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

Запрос.УстановитьПараметр("Владелец", Владелец); 

Выборка = Запрос.Выполнить().Выбрать(); 

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

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

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

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

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

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


Для Каждого ТекущийРодитель Из МассивРодителей Цикл 
	// Работа с текущим родителем. 
КонецЦикла;


ВЫБРАТЬ 
	Номенклатура.Ссылка КАК Ссылка 
ИЗ 
	Справочник.Номенклатура КАК Номенклатура 
ГДЕ 
	Номенклатура.Ссылка = &Ссылка 
ИТОГИ ПО 
	Ссылка ТОЛЬКО ИЕРАРХИЯ 




ТекущийЭлементНоменклатуры = ЭлементНоменклатура; 

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

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

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

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

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

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

Запрос.УстановитьПараметр("ЧастьНаименования", "%" + ПолеВводаПодстрока + "%");          
Как найти все элементы справочника, в которых не заполнен строковый реквизит?

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


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

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

Запрос.УстановитьПараметр("СтарыйРодитель", СтарыйРодитель); 

Результат = Запрос.Выполнить(); 


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

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

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


Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) 

	ПолученноеЗначение = ЗначениеВыбора; 
	// Дальнейшая обработка значения.  

КонецПроцедуры 


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


Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка) 

	// Запретить стандартную обработку. 
	СтандартнаяОбработка = Ложь; 

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

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

КонецПроцедуры 


Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) 

	// Отключить стандартную обработку (при необходимости). 
	СтандартнаяОбработка = Ложь; 

	ПолученноеЗначение = ВыбранноеЗначение; 
	// Дальнейшая обработка значения.  

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

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

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

Задайте вопрос программисту 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Форма = Справочники.Номенклатура.ПолучитьФормуСписка(); Форма.Открыть(); Форма = Справочники.ХранилищеДополнительнойИнформации.ПолучитьФорму(«ФормаСпискаФайловИИзображений»); Форма.Открыть(); Элемент = Справочники.Номенклатура.НайтиПоКоду(«00030»); Форма = Элемент.ПолучитьФорму(); Форма.Открыть();

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

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

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

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду(«Ю0006»); ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); ОбъектСправочника.ВидыДеятельности.Очистить(); ОбъектСправочника.Записать(); ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект(); // Создать структуру для отбора удаляемых строк. СтруктураОтбора = Новый Структура(«ВидДеятельности», ВыбранныйВидДеятельности); // Получить массив удаляемых строк. ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора); // Удалить строки. Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока); КонецЦикла; ОбъектСправочника.Записать();

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

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

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

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

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

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

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

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

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

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

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

Вариант 1:

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

Вариант 2:

ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ

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

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

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

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

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

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

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

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

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

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

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

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

Слушатель курса Разработка и оптимизация запросов в 1С:Предприятие 8.3 столкнулся с трудностями при обращении к конкретному объекту непосредственно в запросе. С аналогичной задачей может столкнуться каждый, поэтому мы решили опубликовать вопрос слушателя и ответ тренера из Мастер-группы курса.

Вопрос

В самом начале курса было показано, как найти объект на встроенном языке, например, НайтиПоНаименованию или НайтиПоКоду и передать его в запрос через параметр. А можно ли обратиться к объекту прямо в запросе, не используя параметр. Например, найти номенклатуру, зная её точное название  или артикул?

Ответ тренера

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

Выборка номенклатуры по конкретному значению артикула:

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Артикул = "Арт1234"

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

То есть, чтобы выбрать номенклатуру с единицей измерения “штука”, нельзя написать

Номенклатура.ЕдиницаИзмерения = "Шт" 

Правильным будет следующее условие:

Номенклатура.ЕдиницаИзмерения.Наименование = "Шт".

P.S.

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

После курса Вы сможете:

  • Строить сложные запросы с несколькими источниками данных
  • Уверенно задействовать вложенные запросы и временные таблицы
  • Использовать встроенный язык для обработки результатов запроса
  • Учитывать особенности соединений и объединений нескольких таблиц.
  • Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.

Содержание:

При реализации прикладных задач в программе 1С:Предприятие 8 у разработчика может возникнуть потребность использовать прикладные объекты ссылочного типа. У которых есть свойство «Наименование», но нет возможности с помощью встроенного языка 1С Предприятие обратиться «напрямую» к объекту базы данных 1С, как к предопределенному элементу справочника 1С т.к. они были созданы пользователем в информационной базе 1С 8.

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

1.     Метод «НайтиПоНаименованию» в конфигурации «Справочник»

Иногда в компаниях реквизит «наименование» элемента справочника формируется пользователем в строго установленной последовательности. В наименовании элемента справочника может присутствовать какое-нибудь свойства товара.

У объекта конфигурации Справочник есть метод НайтиПоНаимнованию (Рис. 1).

Рисунок №1.

         Наименование – тип Строка. Текст, по которому нужно найти.

         Точное соответствие – тип булево. Истина – искать точное соответствие за исключением пробелов в конце наименования. Ложь – искать соответствие по левой части наименования.

         Родитель – тип Справочник. В пределах которого нужно найти элемент справочника 1С.

         Владелец – тип Справочник. В пределах которого нужно найти элемент справочника 1С.

Рисунок № 2.    

Для иллюстрации будет приведен пример в демонстрационной базе 1С Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.112.34).

Запустим информационную базу в режиме Конфигуратор в 1С. Создадим обработку. В форме обработки создадим команду, реквизит формы (Рис. 3) и опишем действие команды (Рис. 4). Сохраним созданную обработку, как внешнюю обработку.

Рисунок №3.

Рисунок № 4.

Теперь можно запустить работу системы 1С: Предприятия 8.3 в пользовательском режиме. Открыть внешнюю обработку ввести текст в реквизит «Текст поиска». Введем текст «Шоколад» и нажмем команду «Найти».


Рисунок № 5.

Система нашла в справочнике «Номенклатура» первый попавшийся элемент. Система искала соответствие по левой части наименования.  

2.     Объект встроенного языка «Запрос»

Получить объект базы данных 1С также можно с помощью объекта встроенного языка «Запрос». Запустим информационную базу в режиме Конфигуратор в 1С. Изменим код встроенного языка 1С Предприятие в модуле формы внешней обработки (Рис. 6).

Рисунок № 6.

Сохраним изменения и запустим информационную базу в пользовательском режиме 1С.


Рисунок № 7.

Откроем внешнюю обработку, заполним реквизит «Текст поиска» (Рис. 7). Нажимаем команду «Найти». В результате на экран система выведет сообщения с наименованиями из справочника Номенклатура у которых левая часть наименования начинается с текста «Шоколад».

Специалист 1С компании «Кодерлайн»

Быков Владимир

Понравилась статья? Поделить с друзьями:
  • Как исправить ярлык для браузера
  • Как составить договор счет на транспортные услуги
  • Как найти рыбака в рдр 2
  • Как составить аннотацию к реферату
  • Как найти экстремум функции на промежутке