1с как выбрать группу справочника
Для получения подчиненных элементов иерархического справочника в языке запросов предусмотрена конструкция В ИЕРАРХИИ :
В данном примере будут получены все записи справочника Номенклатура , находящиеся в группе &Группа , включая ее саму, ее подчиненные группы и элементы, принадлежащие подчиненным группам.
Если же нас интересуют только элементы и группы, находящиеся непосредственно в заданной группе, то такие элементы мы можем получить, установив условие на поле Родитель :
Такой запрос выберет группы и элементы, находящиеся в подчинении группы со ссылкой &Группа .
Проверка наличия подчиненных элементов у элемента справочника
Для проверки наличия подчиненных записей элемента справочника можно пользоваться запросом, аналогичным представленному:
В данном примере ссылка элемента, для которого необходимо проверить наличие дочерних элементов, записывается в параметр запроса &Родитель . После выполнения такого запроса необходимо проверить результат на пустоту. Если результат не пустой, то подчиненные записи есть. Иначе — нет.
Получение всех родителей элемента
В языке запросов не предусмотрено специальных средств для получения всех родителей элемента. Для выполнения задачи можно воспользоваться иерархическими итогами, однако получение иерархических итогов оптимизировано для построения итогов большого количества записей, и не вполне эффективно для получения родителей одного элемента. Для более эффективного получения всех родительских записей элемента, рекомендуется перебирать в цикле его родителей небольшими порциями.
Если число уровней в справочнике ограничено и невелико, то возможно получение всех родителей одним запросом без цикла.
Вывод иерархического справочника в отчет
Для вывода иерархического справочника в отчет с сохранением иерархии необходимо пользоваться запросом аналогичным следующему:
Данный запрос выбирает все записи из справочника и производит упорядочивание по иерархии. Результат будет упорядочен по наименованию, с учетом иерархии.
Для того, чтобы группы справочника размещались выше элементов необходимо в данном запросе заменить предложение УПОРЯДОЧИТЬ ПО на следующее:
Результат по-прежнему будет упорядочен по иерархии, однако группы будут располагаться выше элементов.
Возможна также замена предложения УПОРЯДОЧИТЬ ПО на предложение АВТОУПОРЯДОЧИВАНИЕ . В этом случае результат будет упорядочен в соответствии с настройками справочника, т.е. если в справочнике указано, что группы должны располагаться выше элементов, то они будут расположены выше.
Получить иерархическую структуру справочника также возможно и при помощи итогов:
Получение итогов по иерархии
Для получения итогов по иерархии в запросе необходимо в предложении ИТОГИ ПО указать ключевое слово ИЕРАРХИЯ после указания поля, по которому будет рассчитываться итоги. Пример отчета «Обороты номенклатуры» с получением итогов по иерархии:
В результате данного запроса будут рассчитаны итоги не только для каждой номенклатуры, но и для групп, к которым принадлежит та или иная номенклатура.
В случае, когда не нужны итоги по элементам, а нужны итоги только по группам, необходимо использовать в итогах конструкцию ТОЛЬКО ИЕРАРХИЯ :
В результате данного запроса будут итоговые записи только для групп номенклатуры.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
1C Предприятие 8.2
Толстый клиент. Обычное приложение.
Обычная форма
===================
Есть иерархический справочник Справочник с группами: Группа1,Группа2,Группа3
Для справочника Справочник создаю обычную форму списка. Пусть будет ФормаСпискаГруппы1
Вопрос: как теперь открыть форму ФормаСпискаГруппы1 так, чтобы в ней сразу открылась Группа1.
(а другие группы как при фильтрах не пропускались)
===================
1c7.7 добавление новой записи в определенную группу
Ситуация такая: есть несколько баз. в различных базах код группы разный, название может совпадать.
Как сделать чтобы пользователь при регистрации добавлялся в определенную группу автоматически?
Здравствуйте. Подскажите пожалуйста такую вещь: Как мне сделать чтобы пользователь после.
Программно открыть определенную папку
Здравствуйте! Интересует такой вопрос. Как программно открывать определенную папку? .
как теперь открыть форму ФормаСпискаГруппы1 так, чтобы в ней сразу открылась Группа1.
(а другие группы как при фильтрах не пропускались)
Да. Это единственный способ (табличное поле - не контейнер строк). Ищите пути программного снятия отбора после открытия. зацепиться можно за активизацию строки списка, например. установить флажок Открытие приоткрытии. Приактивизациистроки по флажку снимать отбор, сбрасывать флажок
Добавлено через 50 секунд
но это забекарит восстановление предыдущих отборов
ПКМ на списке - Установить отбор
Ссылка = В ГРУППЕ (выбранная группа)
В режиме ИНТЕРПРАЙС
Добавлено через 33 минуты
А как сделать такой же отбор программно смотри тут
Разграничение прав доступа пользователя по организации
Если делать, что то похожее на то, что в вышеуказанной теме, то у меня это выглядит как
Мне не понятно что такое справочник?
В моем коде Группа1="Поставщики", а Справочник называется "Контрагенты"
Вот, я когда пытаюсь получить ссылку, то пытаюсь обратиться к справочнику, но похоже неправильно мыслю.
Того, чего я хочу - не происходит. Как открывалась форма со всеми группами, так и открывается
Добавлено через 13 минут
Разобрался. Связь по типу нужно правильно выбрать.
Но теперь открывает только группы, а элементы не показывает
Добавлено через 3 минуты
Набираешь в СП Отбор и смотришь, что это за коллекция и как можно работать с элементамиОтбора.
Учись самостоятельно находить информацию и разбирать ее.
наличие связи по родителю с деревом
режим иерархии
наличие колонки родитель
какой решающий - не помню. Попробуйте
Последний ответ Dethmontt сработал.
То, что нюансы есть запомню.
Спасибо за помощь.
Добавлено через 16 минут
из-за того что способы описания в СП для меня сложнее чем сам язык 1С, то я по нему даже не пытаюсь учиться. Кому-то он должен быть удобен, но точно не мне.
Перед тем как что-то спросить, я сначала пробую это что-то сделать, потом ищу в различных местах, снова пробую это сделать. И если я вижу, что я в тупике или вижу вариант решения, но сомневаюсь в его правильности, то уже сокращаю вопрос и задаю его. А Когда совсем не спрашивать, то можно такому научиться, что у других волосы дыбом вставать начнут от криворукости такого рода самоучки. Переучиваться, наверное, должно быть сложнее.
Как программно выделить определенную строку DataGridView
Среда Visual Basic STUDIO’2010 Professional Как поставить фокус на ячейку с координатами.
Как программно заархивировать определенную папку на компе?
Добрый день. Собственно, вопрос в теме. Есть база, результатом работы которой являются изменения.
Как программно раскрыть определенную ветвь в дереве?
Подскажите как программно расскрыть определенную ветвь в дереве JTree _tree; . TreePath.
Необходимо программно обработать группу rft файлов
добрый день. Эту свою тему копирую сюда, в надежде что тут много живых :) В общем задача такая.
Порядок действий такой:
1. В поле ввода "Номенклатура" добавь событие ПриНачалеВыбора.
2. Установи в них СтандартнаяОбработка = Ложь;
3. Получи форму выбора нужного справочника
4. Установи отбор по родителю
5. Открой форму для выбора
Теперь подробнее:
Заходим в Свойства реквизита - для которогу нужно настроить выбор из группы, это может быть реквизит табличной части или просто реквизит на форме, и Задаем Событие - Начало Выбора
Далее пишем ее код:
Код 1C v 8.х
Запускаем, пробуем, радуемся
Похожие FAQ
Еще в этой же категории
Создание и запись нового элемента справочника 14
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Как программно открыть и выбрать элемент справочника, выбор элемента справочника? 7
Просто открыть: // Получить форму выбора справочника как подчиненную форме документа ФормаСписка = Справочники.Номенклатура.ПолучитьФормуСписка( , ЭтаФорма); // Открыть полученную форму ФормаСписка.Открыть(); Открыть для выбора элемента: Ф Как сделать подбор элементов справочника в табличную часть документа? 7
Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа? В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть! Со Посмотреть все в категории Справочники
Справочники в 1С 8.3 это списки схожих по принадлежности к учету данных. Служат для хранения условно-постоянной информации, поддержки внутрифирменных или общих классификаторов, формирования списков возможных значений субконто, то есть для организации аналитического учета.
Каждый из справочников обладает своими свойствами и функциями, установленными разработчиками. Используются практически во всех объектах учета как разрез учета или справочная информация.
✔ Работа со Справочниками
// Создаём новый элемент справочника Страны с наименованием "Россия"
СтранаРоссия = Справочники . Страны . СоздатьЭлемент ();
СтранаРоссия . Наименование = "Россия" ;
СтранаРоссия . Записать ();
// Создаём новую группу справочника "Страны у океана"
ГруппаСтраныУОкеана = Справочники . Страны . СоздатьГруппу ();
ГруппаСтраныУОкеана . Наименование = "Страны у океана" ;
ГруппаСтраныУОкеана . Записать ();
// Переносим элемент справочника Россия в другую группу "Страны у океана"
СтранаРоссия . Родитель = ГруппаСтраныУОкеана . Ссылка ;
СтранаРоссия . Записать ();
// Меняем элемент справочника по ссылке "Испания"
ИспанияСсылка = Справочники . Страны . НайтиПоНаименованию ( "Испания" );
Если Не ИспанияСсылка . Пустая () Тогда
// Изменим и запишем численность жителей в стране
СтранаИспания = ИспанияСсылка . ПолучитьОбъект ();
СтранаИспания . ЧисленностьНаселения = 46600000 ;
СтранаИспания . Записать ();
КонецЕсли;
// Получаем и проверяем пустую ссылку типа справочник
ПустаяСсылка = Справочники . Страны . ПустаяСсылка ();
Если ПустаяСсылка . Пустая () Тогда
Сообщить ( "Ссылка действительно пустая." );
КонецЕсли;
// Узнаём принадлежность элемента справочника группе (с учетом уровней иерархии)
БеларусьСсылка = Справочники . Страны . НайтиПоНаименованию ( "Беларусь" );
ГруппаСтраныУОкеанаСсылка = Справочники . Страны . НайтиПоНаименованию ( "Страны у океана" );
// Проверяем принадлежит ли город Беларусь группе "Страны у океана"
Если БеларусьСсылка . ПринадлежитЭлементу ( ГруппаСтраныУОкеанаСсылка ) Тогда // Булево Истина
Сообщить ( "Элемент Беларусь находится в группе Страны у океана." );
Иначе //Ложь
Сообщить ( "Элемент Беларусь не находится в группе Страны у океана." );
КонецЕсли;
// Копируем существующий элемент справочника "Беларусь"
КопияБеларуси = БеларусьСсылка . Скопировать ();
КопияБеларуси . Наименование = КопияБеларуси . Наименование + " КОПИЯ" ;
КопияБеларуси . УстановитьНовыйКод ();
КопияБеларуси . Записать ();
// Выясняем уровень вложенности элемента справочника
Сообщить ( КопияБеларуси . Уровень ()); // Возвращает уровень = 1
// Блокируем элемент справочника перед изменениями (от изменения другими пользователями или режимами)
СтранаБеларусь = БеларусьСсылка . ПолучитьОбъект ();
Если Не СтранаБеларусь . Заблокирован () Тогда
СтранаБеларусь . Заблокировать ();
// Меняем заблокированный элемент "Беларусь"
СтранаБеларусь . ЧисленностьНаселения = 10000000 ;
СтранаБеларусь . Записать ();
// Не забываем разблокировать для других режимов и пользователей
СтранаБеларусь . Разблокировать ();
КонецЕсли;
// Заполняем новый элемент справочника на основании
// Примечание: в модуле справочника Страны определена процедура ОбработкаЗаполнения
СтранаКазахстан = Справочники . Страны . СоздатьЭлемент ();
СтранаКазахстан . Заполнить ( Справочники . Страны . НайтиПоНаименованию ( "Италия" ));
СтранаКазахстан . Наименование = "Казахстан" ;
СтранаКазахстан . Записать ();
// Помечаем на удаление элемент справочника "Казахстан"
СтранаКазахстан . УстановитьПометкуУдаления (Истина,Ложь); // пометка удаления
// Примечание: включая подчиненные (если речь о группе справочника)
Очень часто в 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
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Читайте также: