Как найти по коду в справочнике 1с

Найти элемент справочника в 1С 8 можно тремя способами:

1) Поиск по коду

Если известен код элемента справочника, и необходимо получить ссылку на него, то можно воспользоваться методом НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>) менеджера справочника. В простейшем случае необходимо передать данному методу код элемента справочника и в результате будет получена либо ссылка на элемент справочника, либо пустая ссылка, если элемент с таким кодом не найден. Следует заметить, что если в справочнике присутствует несколько элементов с указанным кодом, то будет возвращен тот, который найден первым.

Пример:

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

Описание параметров метода НайтиПоКоду:

  • <Код> (обязательный). Тип: Число, Строка. Описание: искомый код, строка или число в зависимости от настроек справочника в конфигураторе.
  • <ПоискПоПолномуКоду> (необязательный). Тип: Булево. Описание: определяет режим поиска по полному коду, истина — искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом “/”. Значение по умолчанию: Ложь.
  • <Родитель> (необязательный). Тип: СправочникСсылка. Описание: родитель, в пределах которого нужно выполнять поиск, если не указан, то поиск будет проводиться во всем справочнике.
  • <Владелец> (необязательный). Тип: СправочникСсылка. Описание: владелец, в пределах которого нужно выполнять поиск, если не указан, то поиск будет проводиться во всем справочнике.

2) Поиск по наименованию

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

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

Пример:

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

Описание параметров метода НайтиПоНаименованию:

  • <Наименование> (обязательный). Тип: Строка. Описание: строка, содержащая искомое наименование.
  • ТочноеСоответствие> (необязательный). Тип: Булево. Описание: определяет режим поиска по полному соответствию, поиск будет успешным, если строка поиска: в случае значения параметра Ложь — будет соответствовать левой части наименования, в случае значения параметра Истина — будет полностью совпадать с наименованием (за исключением “хвостовых” пробелов в наименовании). Значение по умолчанию: Ложь.
  • <Родитель> (необязательный). Тип: СправочникСсылка. Описание: родитель, в пределах которого нужно выполнять поиск, если не указан, то поиск будет проводиться во всем справочнике.
  • <Владелец> (необязательный). Тип: СправочникСсылка. Описание: владелец, в пределах которого нужно выполнять поиск, если не указан, то поиск будет проводиться во всем справочнике.

3) Поиск по произвольному реквизиту

Если известно значение какого либо реквизита справочника и необходимо получить ссылку на него, то можно воспользоваться методом НайтиПоРеквизита(<ИмяРеквизита>, <ЗначениеРеквизита>, <Родитель>, <Владелец>) менеджера справочника. В простейшем случае необходимо передать данному методу имя реквизита, его значение и в результате будет получена либо ссылка на элемент справочника, либо пустая ссылка, если элемент с таким значением указанного реквизита не найден. Следует заметить, что если в справочнике присутствует несколько элементов с таким значением указанного реквизита, то будет возвращен тот, который найден первым.

Пример:

НайденныйЭлемент = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул","А-255");

Описание параметров метода НайтиПоРеквизит:

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

У справочников в 1С есть встроенные функции для поиска в них элементов, к ним относится НайтиПоКоду, НайтиПоНаименованию и НайтиПоРеквизиту;

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

Синтаксис:

Справочники.<НазваниеСправочника>.НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>)

Параметры:

НазваниеСправочника — наименование справочника, к примеру Сотрудники.

Код — если код является строкой то задается в кавычках.

ПоискПоПолномуКоду — По умолчанию установлен в значении Ложь. Но если установить в истину то поиск будет вестись по полному коду элемента. Полный код состоит из всех кодов родителей(уровней) разделены «/». Пример: «00001/0002/0008″.  (необязательный)

Родитель — Ссылка на родителя. Поиск будет вестись только по тем элементам где указан данный родитель. (необязательный)

Владелец — Ссылка на элемент владельца справочника, указанного на закладке Владельцы. (необязательный)

Результат:

Если элемент не найден возвращается ПустаяСсылка, иначе ссылка на элемент.

Если существует несколько элементов, возвращается только 1.

Если код отсутствует в справочнике, т.е. установлена длина 0, то возвращается Неопределено.

Пример:

КодЭлемента = "000000001";
ТекСправочник = Справочники.Преподаватели;

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

 +6 

   

Распечатать

1С 8.3 : Поиск элемента, найти элемент справочника

Код 1C v 8.2 УП

 &НаКлиенте
Процедура ПоКнопкеНайти(Команда)
// Вставить содержимое обработчика.

Сообщить(НайтиКонтрагента("000000001"));

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

&НаСервере
Функция НайтиКонтрагента(КодКонтрагента)

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

КонецФункции;


Код 1C v 8.х

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

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


Код 1C v 7.x

  СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.НайтиПоКоду(123);
СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");
СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

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

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

Поиск элемента справочника по коду.

Я
   kanalex

10.09.13 – 17:18

Код = “00000000922”;

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

Почему такой код находит и возвращает ссылку на элемент справочника с кодом “000000009”?

Что это? Глюк платформы? или мой глюк?

Я не понимаю:(

   ДенисЧ

1 – 10.09.13 – 17:19

Сколько длина кода в конфигураторе задана?

   kanalex

2 – 10.09.13 – 17:19

(1) 11

   Maxus43

3 – 10.09.13 – 17:21

Контрагент = Справочники.Контрагенты.НайтиПоКоду(Код, Истина);

   Maxus43

4 – 10.09.13 – 17:22

хотя не, глюк

   Maxus43

5 – 10.09.13 – 17:22

запросом ищи, всё остальное ересь 🙂

   Тролль главный

6 – 10.09.13 – 17:22

(0) а почему ты так решил?

   kanalex

7 – 10.09.13 – 17:23

(3) это поиск по полному коду, включая коды родителей, насколько я помню

   fisher

8 – 10.09.13 – 17:23

Фигня какая-то…

Может и есть такой глюк.

В нормальных базах ведь не бывает кода “000000009” при длине кода 11.

   kanalex

9 – 10.09.13 – 17:24

(6) проверил в отладчике:)

   kanalex

10 – 10.09.13 – 17:24

(5) запросом – да….

придется

   Rie

11 – 10.09.13 – 17:24

(0) А длина кода – какая?

   kanalex

12 – 10.09.13 – 17:24

(8) код поправлен руками, судя по всему

   kanalex

13 – 10.09.13 – 17:25

(11) 11, я уже ответил

   Rie

14 – 10.09.13 – 17:25

(8) Дык это не в _базе_. Код у него – переменная. Значение которой…

   kanalex

15 – 10.09.13 – 17:25

(14) 000000009 – это в базе

   Тролль главный

16 – 10.09.13 – 17:26

Код это ведь реквизит у тебя? его длина какая?

   wms

17 – 10.09.13 – 17:26

(9)зачем отладчик? может глючит

в сервис-табло введи

Справочники.Контрагенты.НайтиПоКоду(“00000000922”) и посмотри значение

   kanalex

18 – 10.09.13 – 17:27

(17) ввел. получил элемент с кодом 000000009

   wms

19 – 10.09.13 – 17:27

код скопируй у элемента

   wms

20 – 10.09.13 – 17:27

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

а так

   kanalex

21 – 10.09.13 – 17:27

(16) в конфигураторе длина кода 11

   kanalex

22 – 10.09.13 – 17:28

тестирую базу…

   Rie

23 – 10.09.13 – 17:28

(13) Есть особенность одна при поиске НайтиПоКоду… Там параметров больше, чем один. Посмотри, что обозначают остальные.

   Euguln

24 – 10.09.13 – 17:29

(21) на всякий случай, а в конфигурации БД? Демоническое обновление было? Код 00000000922 в справочнике можно задать?

   Тролль главный

25 – 10.09.13 – 17:29

(21) найди отличия в следующих алгоритмах:

Код = “00000000922”;

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

и:

Контрагент = Справочники.Контрагенты.НайтиПоКоду(“00000000922”);

   kanalex

26 – 10.09.13 – 17:29

(23) сморел. второй отвечает за поиск по полному коду, включая коды всех родителей

   wms

27 – 10.09.13 – 17:29

+(23)кстати да что за справочник может подчиненный

   kanalex

28 – 10.09.13 – 17:30

Справочник Контрагенты в БП 2.0

   wms

29 – 10.09.13 – 17:30

индексы пож полители, переиндексируй

   kanalex

30 – 10.09.13 – 17:31

(29) тестирую базу…

   Euguln

31 – 10.09.13 – 17:31

(28) в типовой длина кода – 9

   wms

32 – 10.09.13 – 17:31

проверь с пом. запроса что возвращает

   kanalex

33 – 10.09.13 – 17:32

(32) тестирование закончится – проверю

   kanalex

34 – 10.09.13 – 17:32

(31) может быть…

   Classic

35 – 10.09.13 – 17:34

(25)

Прикольно 🙂

(0)

А где ты ентот код исполняешь?

   kanalex

36 – 10.09.13 – 17:35

в обработке внешней…

Знаю, что поиск по коду не слишком надежен, но на сегодня постановка задачи такова.

   Classic

37 – 10.09.13 – 17:36

(36)

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

   kanalex

38 – 10.09.13 – 17:37

(37) нет:)

В консоли кода тоже находит не тот элемент

   Glenas

39 – 10.09.13 – 17:37

(31) Тогда как был создан код с длинной 11? Может быть длинна была изменена после?

   Classic

40 – 10.09.13 – 17:38

(38)

Ну тогда индексы слетели

   kanalex

41 – 10.09.13 – 17:38

(40) индексируем…

   kanalex

42 – 10.09.13 – 17:39

(39) может и после… кто знает?:)

только все эти вопросы не о том.

   Rie

43 – 10.09.13 – 17:41

(42) О том. Очень сильно о том. “1С”, к слову, очень своеобразно относится к хвостовым пробелам в наименованиях и в кодах. И к типу кода, кстати, тоже.

   kanalex

44 – 10.09.13 – 17:41

(29) тестирование базы не помогло

   Glenas

45 – 10.09.13 – 17:42

(42) Если попробовать с другим кодом и Спр?

   kanalex

46 – 10.09.13 – 17:44

(45)

а = Справочники.Контрагенты.НайтиПоКоду(“00000000122”).код

возвращает 000000001

   Euguln

47 – 10.09.13 – 17:46

а тупо вбить код “00000000122” в справочник можно?

   kanalex

48 – 10.09.13 – 17:49

(0) аааа:)

вечер:)

длина кода 9….

11 в другом справочнике

   Glenas

49 – 10.09.13 – 17:49

(47) А поле ввода “Код” в Форме Элемента какую длину имеет, тип значения какой

   Glenas

50 – 10.09.13 – 17:50

(48) С этого и надо было начинать

   ДенисЧ

51 – 10.09.13 – 17:50

(50) Я с этого начала, а ТС начал мутить воду…

  

kanalex

52 – 10.09.13 – 17:50

сорри:)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

КонецЕсли; 

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

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

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


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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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


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


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




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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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


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

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

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


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


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

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

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

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

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


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

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

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

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

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

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

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

Добавить комментарий