Выберите элемент а не номенклатуру
Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия «Прораммист/разработчи 1С» Екатеринбург от Денис Спеиалист
Вчера в 13:10 - Вакансия Стажер Аналитик от Elizavetashkr
17 ноября 2023 г. - Вакансия Стажер Программист 1С от Elizavetashkr
17 ноября 2023 г.
1с выберите элемент а не группу почему
Есть в форме документа реквизит, в который должны выбираться группы или элементы справочника «Подразделения» (с неким отбором).
&НаКлиенте
Процедура ПодразделениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СписокПодразделений = ГСМОбщегоНазначения.ПолучитьСписокПодразделений();
Форма=ОткрытьФорму(«Справочник.Подразделения.Форма.ФормаВыбора»,,Элемент);
Если ЗначениеЗаполнено(СписокПодразделений) Тогда
ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Ссылка»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = СписокПодразделений;
КонецЕсли;
Все нормально открывается, но позволяет выбирать только элементы справочника, а при попытке выбрать группу пишет:
«Выберите элемент, а не группу!
Для раскрытия групп используйте «Crtl». бла-бла-бла. «
Для реквизита «Подразделение» в свойствах установлен выбор групп и позразделений.
Как заставить его выбирать и группы тоже?
>> Для реквизита «Подразделение» в свойствах установлен выбор групп и позразделений.
Иерархический справочник 1С
Очень часто в 1С 8.3. в справочнике необходимо настроить определенный порядок подчинения элементов. Для реализации подобных задач из простого справочника необходимо сделать иерархический справочник 1С.
В платформе 1С существует два вида иерархии – иерархия групп и элементов и иерархия элементов.
Иерархия групп и элементов
Для того, чтобы справочник имел иерархию групп и элементов, необходимо в редакторе справочника на закладке Иерархия установить флаг Иерархический справочник, а свойству Вид иерархии установить значение Иерархия групп и элементов.

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

При иерархии групп или элементов существуют группы (каталоги), в которые входят или другие группы, или элементы. И группы, и элементы являются экземплярами объекта справочника.
Группа это тоже экземпляр объекта справочника, по которому не ведется какой-либо учёт (как правило), и который может быть родителем другого экземпляра, т.е. в группу могут входить другие группы и элементы справочников.
Иерархия элементов
Иерархия элементов настраивается похожим способом: в редакторе справочника на закладке Иерархия устанавливается флаг Иерархический справочник, но свойству Вид иерархии следует установить значение Иерархия элементов.

После этого, каждый элемент может быть родителем другого элемента.

Родитель иерархического справочника 1С
У каждого элемента иерархического справочника должен быть родитель. В случае иерархии групп и элементов родитель это группа иерархического справочника, в случае иерархии элементов, родитель это элемент.
Родитель это стандартный реквизит справочника. Если иерархия отключена, то этот стандартный реквизит не доступен. Как у этого справочника Сотрудники.

А если иерархия включена, то этот реквизит доступен. Как у справочника Контрагенты.

Если форма элемента справочника автоматически генерируется платформой (т.е. она не создана), то этот реквизит отображается на управляемой форме. И, в случае иерархии групп и элементов в нем указана группа, в которую входит этот элемент.

Если группа не указана, то значит элемент верхнего уровня.

Также, родитель имеется у элементов справочника с иерархией элементов.

Создать элемент иерархического справочника 1С
Для того, чтобы создать группу справочника (в случае, иерархии групп и элементов), необходимо воспользоваться методом менеджера справочника СоздатьГруппу(). А для создания элемента следует воспользоваться методом СоздатьЭлемент(). Если мы хотим, чтобы вновь созданный элемент входил в какую-то группу, то следует в свойство Родитель этого элемента записать ссылку на нужную группу.
В коде ниже, создаем группу, а потом создаем элемент, который входит в эту группу:
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу(); НоваяГруппа.Наименование = "Магазины"; НоваяГруппа.Записать(); НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Бакалейный"; НовыйЭлемент.Родитель = НоваяГруппа.Ссылка; НовыйЭлемент.Записать();
Заметьте, группа в коде выше, группа верхнего уровня. У неё при создании не был задан Родитель.
В случае иерархии элементов всегда нужно создавать элементы, но также следует в свойстве Родитель созданного элемента указать ссылку на другой элемент, которому будет подчинен созданный.
РегионЗК = Справочники.Регионы.СоздатьЭлемент(); РегионЗК.Наименование = "Забайкальский край"; РегионЗК.Записать(); РегионЧО = Справочники.Регионы.СоздатьЭлемент(); РегионЧО.Наименование = "Читинская область"; РегионЧО.Родитель = РегионЗК.Ссылка; РегионЧО.Записать();
Изменить элемент иерархического справочника 1С
Если мы хотим поменять подчиненность элемента иерархического справочника, или вообще убрать её, т.е. сделать из элемента элемент верхнего уровня, то следует работать со стандартным реквизитом Родитель. В случае, изменения подчиненности, этому реквизиту нужно присвоить ссылку на другую группу.
ОбъектКонтрагент = Элемент.ПолучитьОбъект(); ОбъектКонтрагент.Родитель = Группа; ОбъектКонтрагент.Записать();
Если же мы хотим сделать элемент верхнего уровня, то этому реквизиту нужно присвоить пустую ссылку.
ОбъектКонтрагент = Элемент.ПолучитьОбъект(); ОбъектКонтрагент.Родитель = Справочники.Контрагенты.ПустаяСсылка(); ОбъектКонтрагент.Записать();
Поиск в иерархическом справочнике 1С
В платформе 1С имеется возможность искать в определенной группе иерархического справочника, для этого следует в методах НайтиПоНаименованию, НайтиПоКоду и НайтиПоРеквизиту заполнять параметр Родитель.
Например, поиск в определенной группе будет осуществляться так:
ЭлементНайденый = Справочники.Контрагенты.НайтиПоНаименованию(НазваниеКонтрагента,Истина,Группа); Если ЭлементНайденый.Пустая() Тогда Сообщить("Нет такого элемента"); Возврат КонецЕсли;
Где, третий параметр Группа — это ссылка на группу, внутри которой ищется элемент по указанному названию.
Выборка иерархического справочника 1С
В платформе 1С 8.3. существует возможность выбрать элементы иерархического справочника, которые входят в ту или иную группу, для этого следует воспользоваться методом Выбрать с заполненным параметром Родитель. В этом случае будут выбраны группы и элементы, которых входят непосредственно в указанную группу, но не будут выбраны группы элементы, которые входят в подчиненные группы. Чтобы выбрать элемент и группы, входящие в какую-то группу, следует воспользоваться методом ВыбратьИерархически.
Например, при таком коде:
Выборка = Справочники.Контрагенты.Выбрать(Группа); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Сообщить(Выборка.Наименование); КонецЦикла;
Будут выбраны элементы, входящие в указанную группу.
А в этом случае:
Выборка = Справочники.Контрагенты.ВыбратьИерархически(Группа); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Сообщить(Выборка.Наименование); КонецЦикла;
Будут выбраны элементы, которые входят и в указанную группу, и в подчиненные ей группы.
И Выбрать, и ВыбратьИерархически отбирают и группы, и элементы справочников. Поэтому, в коде выше было использовано свойство ссылки справочника ЭтоГруппа. Это свойство имеет значение Истина, если ссылка является группой справочника.
Читайте также по теме:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
И вступайте в мои группы:
One Reply to “Иерархический справочник 1С”
Стас Антонов :
1. Создать справочник Жанры, справочник ТВКаналы с реквизитами номер, название канала(изменить стандартный код и наименование с помощью синонима) и Характер канала, с типом справочник ссылка жанры, подчиненный ему справочник Программы , с типом время начала и время окончания. Сделать все реквизиты обязательными для заполнения.
2. Создать форму элемента для справочника Сотрудники с реквизитами: фамилия, имя, отчество с типом строка; Должность (тип справочник ссылка должность); группу основные сведения, в ней пол (перечисления. пол), дата рождения (дата.дата), семейное положение (перечисление или справочник . семейное положение), количество детей (число, неотрицательное, точность 0); группу место проживание, в ней город и адрес (строка); группа Сведения об образованиях , в ней образование (справочник или перечисление образование), место учебы (строка); привести форму к следующему виду, картинка может быть любая, но она должна быть отображена полностью и не растягивать форму.
Остатки по складам в перемещении товаров
К нам обратился клиент с интересной задачей: ему нужно было при оформлении Перемещения товаров видеть остатки не только по складу-отправителю, но и по определенной группе складов. Нужно это было для того, чтобы при оформлении перемещения понимать, какие товары отправить с текущего склада, а для каких создать отдельное перемещение с другого склада.
Задача упрощалась тем, что у нашего клиента была конфигурация «Комплексная автоматизация редакции 2.4», в которой уже реализовали просмотр остатков по нескольким складам. Для этого в документе продажи достаточно было указать не конкретный склад, а группу складов:

Тогда при открытии подбора товаров:

Выводятся остатки в разрезе складов:

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

Как мы решили эту проблему
Через механизм расширений (чтобы не снимать 1С с поддержки и не терять возможность легко обновляться) на форму Перемещения товаров было добавлено поле «Склад для подбора»:

А при открытии формы подбора, если это поле заполнено, выводятся все склады группы, как и в Заказе клиента:

При этом типовой функционал полностью сохранен. Если поле «Склад для подбора» не заполнить, то откроется типовая форма подбора с одним складом:

Приобрести решение «Остатки по складам в перемещении товаров»
Заинтересовало данное решение? Заказывайте решению любым удобным для вас способом на нашем сайте или по телефону! Решение написано для конфигурации «Комплексная автоматизация редакции 2.4», но в короткие сроки может быть адаптирована под любую другую конфигурацию. Также у нас есть готовое решение, которое выводит остатки по складам в документах.
И вы можете заказать у нас любые другие доработки 1С
