1с как перебрать все реквизиты справочника

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

Я
   Miramaxx

28.05.09 — 09:54

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

Для каждого Реквизит Из Контрагенты.Метаданные().Реквизиты Цикл

Сообщить(Реквизит.Имя);

КонецЦикла;

Выдает ошибку, поле Имя не обнаружено.

Значение Реквизит пустое, тип Отбор

  

Партнерская программа EFSOL Oblako

   Ursus maritimus

1 — 28.05.09 — 09:55

Хто такой «Контрагенты»?

   DrHiHi

2 — 28.05.09 — 09:57

(0) а через отгадчик трудно какие данные есть в «Реквизит»??

   НП

3 — 28.05.09 — 09:58

Стать отладчиком на сообщение и посмотреть, что там в объекте Реквизит. Может быть, Наименование или Идентификатор какой-нибудь.

   Alexxei_K

4 — 28.05.09 — 09:59

НЕ Сообщить(Реквизит.Имя);

А  Сообщить(Реквизит.Представление());

   Ненавижу 1С

5 — 28.05.09 — 10:00

Для каждого Реквизит Из Объект.Метаданные().Реквизиты Цикл

   Miramaxx

6 — 28.05.09 — 10:10

сорри, это уже вариация на тему была

Для каждого Реквизит Из Объект.Метаданные().Реквизиты Цикл

   Сообщить(Реквизит.Имя);

КонецЦикла;

   Ненавижу 1С

7 — 28.05.09 — 10:21

(6) может не находит по коду и равен Неопределено?

   Miramaxx

8 — 28.05.09 — 10:26

(3) в Реквизит ничего нет. Значение — пусто, Тип — отбор

(4) данное поле не найдено

(7) находит, если в отладчике посмотреть Объект.Метаданные().Реквизиты то все реквизиты раскрываются

   hhhh

9 — 28.05.09 — 10:31

(8) тогда с какого перепоя ты пишешь

Контрагенты.Метаданные().Реквизиты    ???

   Miramaxx

10 — 28.05.09 — 10:32

(9) да грю же, это был один из вариантов)

   SMakcik

11 — 28.05.09 — 10:44

(0) обманываешь

   Miramaxx

12 — 28.05.09 — 11:29

:(((((

  

Miramaxx

13 — 28.05.09 — 14:19

нашеееееееел:

в реквизитах формы был определен реквизит с таким же именем и типом отбор :)

Быстрый старт в Python для 1С Разработчиков | 1s-to-python.ru

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

Содержание[Убрать]

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

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

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

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

Перебрать справочник используя объектную модель:



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

Перебрать используя запрос:



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

Недостаточно прав для комментирования

Andrey102019

5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

1

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

21.11.2019, 16:12. Показов 11926. Ответов 8

Метки 1с 8.3 оф (Все метки)


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

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Процедура КнопкаВыполнитьНажатие(Кнопка)
      МассивОбъектов = Новый Массив; 
МассивОбъектов.Добавить("Документы");
МассивОбъектов.Добавить("Справочники");
 
Для Каждого Элем из МассивОбъектов Цикл
    для Каждого ТекОбъект из Метаданные[Элем] Цикл
        Если СтрДлина(ТекОбъект) > 80 тогда
            Сообщить(ТекОбъект);    
        //что-то делаем
        КонецЕсли;
    КонецЦикла;
КонецЦикла;
    
КонецПроцедуры

Добавлено через 8 минут
видимо вот так можно обойти все реквизиты справочника, но теперь следующий вопрос, как

1C
1
2
3
для Каждого ТекОбъект из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
        а=0;   
    КонецЦикла;

проверить, что текущий ТекОбъект сам является ссылкой из Справочника Номенкалатура?



0



Tklwegsd

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

21.11.2019, 20:28

2

1C
1
ТекОбъект.Тип.СодержитТип(Тип("СправочникСсылка.Номенклатура"))



1



Andrey102019

5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

22.11.2019, 15:03

 [ТС]

3

как из реквизита прочитать значение?

1C
1
2
3
4
5
6
7
8
9
10
11
12
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТабЗнч= Новый ТаблицаЗначений;
    ТабЗнч.Колонки.Добавить("Объект",,"Объект");
    ТабЗнч.Колонки.Добавить("Реквизит",,"Реквизит");
    ТабЗнч.Колонки.Добавить("Значение",,"Значение");
    Для Каждого ТекОбъект из Метаданные.Справочники.хххххххххххххххххх.Реквизиты Цикл
                Стр=ТабЗнч.Добавить();
            Стр.Объект="ххххххх";
            Стр.Реквизит=ТекОбъект;
            Стр.Значение=Значение(ТекОбъект); //Вот это как то надо иначе???
    КонецЦикла;
КонецПроцедуры

Добавлено через 14 минут
наверно не правильно сформулировал, можно ли выполнить проверку каждого реквизита на вхождение в них части заданной строки?

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



0



Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

23.11.2019, 02:44

4



0



5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

25.11.2019, 13:07

 [ТС]

5

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

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

Зачем вы меня отправили в мою тему?



0



Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

27.11.2019, 00:16

6

Цитата
Сообщение от Andrey102019
Посмотреть сообщение

как из реквизита прочитать значение?

вот так

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Andrey102019, Как проверить есть ли в реквизитах справочника определенное наименование?

Добавлено через 22 секунды

Цитата
Сообщение от Andrey102019
Посмотреть сообщение

Зачем вы меня отправили в мою тему?

Затем и отправил что вопрос повторяется…



0



5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

27.11.2019, 09:22

 [ТС]

7

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Затем и отправил что вопрос повторяется…

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



0



Модератор

Эксперт 1С

3708 / 2905 / 572

Регистрация: 10.03.2011

Сообщений: 11,442

Записей в блоге: 1

27.11.2019, 23:24

8

Цитата
Сообщение от Andrey102019
Посмотреть сообщение

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

какой вариант, почему будет огромное время… Ничего не понял



0



5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

28.11.2019, 15:34

 [ТС]

9

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

какой вариант, почему будет огромное время… Ничего не понял

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

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Andrey102019, Как проверить есть ли в реквизитах справочника определенное наименование?

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



0



Показывать по
10
20
40
сообщений

Новая тема

Ответить

Mur

Дата регистрации: 27.12.2004
Сообщений: 22

Уважаемые, подскажите пожалуйста, как программно можно перебрать реквизиты справочника Сотрудники и занести их в список!<br><br>В итоге нужно чтобы получился список с реквизитами справочника! Благодарю!

Olex

Дата регистрации: 04.02.2005
Сообщений: 198

«ТабРеквизиты = СоздатьОбъект(«ТаблицаЗначений»);<br><br>ТабРеквизиты.ВставитьКолонку(«Реквизит»);<br><br>ТабРеквизиты.ВставитьКолонку(«РеквИдентиф»);<br><br>Для Сч = 1 По Метаданные.Справочник(«Сотрудники»).Реквизит() Цикл<br><br> ИденМД = Метаданные.Справочник(«Сотрудники»).Реквизит(Сч).Идентификатор;<br><br> ПредМД = Метаданные.Справочник(«Сотрудники»).Реквизит(Сч).Представление();<br><br> ТабРеквизиты.НоваяСтрока();<br><br> ТабРеквизиты.Реквизит = ПредМД;<br><br> ТабРеквизиты.РеквИдентиф = ИденМД;<br><br>КонецЦикла;<br><br>//И не забыть про Код и Наименование!!!»

Показывать по
10
20
40
сообщений

Как в цикле получить все элементы справочника 1С 8.2 — 8.3.

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

На примере получим все элементы справочника Номенклатура (Наименования) в цикле.

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

Пока Спр.Следующий() Цикл

Сообщить(Спр.Наименование);

КонецЦикла;

Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>

Изображение

Присоединяетесь к нашей группе телеграмм: Здесь вы получите ценную помощь от умного бота «Коли» (ChatGPT) + знания сотен ее участников.

Похожие записи

Помогите плиз, а то плохо соображаю седня, а дело сделать надо.Задачка:Перебираем все элементы справочника, выводим в строку сообщений строковое представление всех его реквизитов.Делаю так примерно:КонецЦикла;Понятно, что не работает, а как бы сделать чтобы работало? :)

Для ы=1 по Метаданные.Справочник(«СОТРУДНИКИ»).Реквизит цикл

А это потому что в ПолучитьАтрибут нужно передать идентификатор реквизита, а не его номер. Догадаешься как его получить?

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

Метаданные.Справочник(ВидСправочника).Реквизит(ИмяРеквизита).Периодический

Сыпасибо.Блин, так просто, почему же в ЖКК нет этого?

+А как узнать возможно ли ручное изменение имеющегося периодического реквизита?

При попытке скачать:Сообщение Извините, но данный файл либо отсутствует на сайте, либо поврежден.

Так ведь всегда сначала «жмешь», а уж потом читаешь. Сенькс.

Тэги:

Комментарии доступны только авторизированным пользователям

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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