Что означает стандартный реквизит этогруппа у справочников
[ Вопрос дня ] Почему не доступны стандартные реквизиты объектов в конструкторе запросов в расширении?
Доброго дня, коллеги!
А вы теряли стандартные реквизиты в конструкторе запросов в расширении? Сколько времени ушло на поиск решения проблемы? А наш слушатель получил ответ оперативно. Теперь данной хитростью делимся с вами! Безвозмездно 🙂
Вопрос
Ответ
Добрый день! Нужно в расширении указать, что этот справочник является иерархическим (то есть указать в расширении свойство Иерархический как контролируемое):
Тогда конструктор запроса покажет поле ЭтоГруппа.
Или давайте рассмотрим на примере, на пустой базе. Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:
Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:
Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:
После этого в конструкторе запроса появляется поле Владелец:
На форме объекта в расширении можно отобразить владельца:
Урок 2 Разработка справочников
Урок 2
Продолжим разрабатывать конфигурацию 1С из 1 урока.
Вернемся в режим разработчика и добавим следующий реквизит.
ПолноеНаименование с типом Строка.
Вы спросите, зачем нужно повторяться, ведь есть же предопределенный реквизит НАИМЕНОВАНИЕ. Дело в том, что если вы попробуете ввести длину Наименования, например, 300 символов, то программа ответит ошибкой. Длина наименования не может превышать 150 символов. Но бывают такие случаи, когда необходимо, чтобы наименование было длиннее. Поэтому создадим данный реквизит и укажем длину 300 символов. Здесь можно указать признак Неограниченная длина (см. рис 1.30)
Добавим еще один реквизит Услуга с типом Булево. По сути Булево выглядит как галка, которая может принимать значение Истина или Ложь (см. Рис 1.31).
Теперь перейдем в режим 1С Предприятия и посмотрим что получилось (см. Рис 1.32).
Если вы не видите добавленных реквизитов, возможно форму нужно растянуть.
Что еще необходимо добавить для того чтобы описать товар? Стол измеряется штуками, стул и холодильник тоже. А если появится такой товар, как Мука. В чем измерять? Для этого добавим реквизит ЕдиницаИзмерения. Но тип строка тут будет неудобен. Для этого заведем новый справочник и назовем его ЕдиницыИзмерения (см. Рис 1.33).
В нем ничего менять не будем. А в справочнике НОМЕНКЛАТУРА заведем новый реквизит ЕдиницаИзмерения, и укажем тип СправочникСсылка.ЕдиницыИзмерения (см. Рис 1.34).
Можно использовать кнопку ВЫБРАТЬ ИЗ СПИСКА, а можно кнопку ВЫБРАТЬ, и тогда откроется окно в виде дерева конфигурации (см. Рис 1.35).
Перейдем в пользовательский режим. Откроем новый справочник ЕДИНИЦЫ ИЗМЕРЕНИЯ, и создадим элемент с наименованием КГ (см. Рис 1.36)
Теперь откроем элемент справочника Мука и заполняем реквизит Единица Измерения. (см. Рис 1.37)
При нажатии на кнопку выпадающего списка, появляется список недавно выбранных элементов, также возможно показать все элементы. Можно открыть форму элемента справочника ЕДИНИЦЫ ИЗМЕРЕНИЯ (см. Рис 1.38).
Бывают такие элементы справочника, которые создает разработчик. В режиме Конфигуратор перейдем к справочнику ЕдиницыИзмерения и откроем вкладку ПРОЧЕЕ (см. Рис. 1.39).
Здесь откроем ПРЕДОПРЕДЕЛЕННЫЕ элементы и добавим новый элемент – Штуки (см. Рис 1.40).
Теперь откроем программу в режиме пользователя. Обратите внимание, в справочнике Единицы Измерения появился новый элемент. Он имеет специальный значок, означающий, что данный элемент предопределен разработчиком.(см. Рис. 1.41).
Таким образом, можно создавать элементы справочника еще на этапе программирования.
Рассмотрим подробнее палитру свойств реквизита ЕдиницаИзмерения справочника Номенклатура. Для этого необходимо в режиме Конфигуратор дважды кликнуть по нужному реквизиту, или с помощью контекстного меню, выбрать команду СВОЙСТВА. Теперь рассмотрим свойства Значение по умолчанию и Проверка заполнения. Если значение по умолчанию заполнено, тогда, при создании нового элемента, в поле автоматически подставится выбранное значение, а при желании его можно исправить. Заполним его, открываем список выбора и выбираем Штуки (см. рис 1.42).
Свойству ПРОВЕРКА заполнения укажем признак ВЫДАВАТЬ ОШИБКУ. И перейдем в режим 1С Предприятия, посмотрим результаты изменений. Теперь, при создании нового элемента, единица измерения заполняется Штуками. Если очистить это поле и попробовать записать, то появится сообщение об ошибке и элемент не запишется. Приглядевшись повнимательнее, можно увидеть, что поля Единица Измерения и Номенклатура подчеркнуты красным, это значит, они обязательны для заполнения (см. Рис 1.43).
Поэтому, вернувшись к палитре свойств, настроим свойства в соответствии с картинкой (Рис. 1.45)
Что они означают? МНОГОСТРОЧНЫЙ РЕЖИМ, предназначен для строки неограниченной длины. РАСШИРЕННОЕ РЕДАКТИРОВАНИЕ расширяет возможности редактирования. Установив эти признаки, перейдем в режим 1С Предприятия и понаблюдаем за изменениями. Теперь строка стала шире, можно увидеть весь объем текста, и можно воспользоваться элементарными командами редактирования. При большом количестве символов появляется полоса прокрутки (см. Рис 1.46).
В данный момент справочник НОМЕНКЛАТУРА содержит несколько элементов, но представим, что магазин набрал обороты, и в запасе имеется сто позиций. Существуют огромные магазины, которые оперируют десятью тысячами позиций и более. Чтобы отсортировать справочник, а так же для удобства пользователей сделаем его иерархическим. Для этого возвращаемся в КОНФИГУРАТОР. В окне свойств справочника НОМЕНКЛАТУРА ищем закладку ИЕРАРХИЯ, и устанавливаем признак ИЕРАРХИЧЕСКИЙ СПРАВОЧНИК (см. Рис 1.47).
Перейдя в режим пользователя увидим, что на панели появилась кнопка СОЗДАТЬ ГРУППУ (см. Рис 1.48).
По нажатию открылось окно создания группы. У группы отсутствуют реквизиты присущие элементам справочника, поэтому форма немного отличается. Заполним наименование и запишем группу (см. Рис 1.49).
Теперь в списке появился новый элемент Мебель. Обратите внимание на значок группы, рядом с добавленным элементом. Таким же образом создадим группы Техника и Продукты питания. (см. Рис. 1.50).
По правой кнопке переместим элементы в нужные соответствующие группы (см. Рис 1.51).
Реквизит РОДИТЕЛЬ у элемента можно изменить, таким образом изменится расположение элемента.
Перейдя на закладку иерархия, проследим еще одну настройку ОГРАНИЧЕНИЕ КОЛИЧЕСТВА УРОВНЕЙ ИЕРАРХИИ (см. Рис. 1.54).
Означает сколько уровней вложенности может быть у справочника. Например, если установить значение равное двум, то пользователь в папке не сможет создать еще один уровень подпапок. Поэтому по умолчанию оставляем неограниченное количество уровней вложенности, потому что при большом количестве элементов по другому работать невозможно.
Теперь давайте познакомимся с иерархией элементов, но на примере другого справочника. Любая организация, сколь угодно большая, состоит из нескольких подразделений: бухгалтерия, отдел кадров, отдел продаж и т.д. Давайте заведем справочник ПОДРАЗДЕЛЕНИЯ. Добавляем новый справочник и присваиваем наименование ПОДРАЗДЕЛЕНИЯ (см. Рис 1.55).
Перейдя в режим 1С Предприятия, создадим несколько элементов в справочнике Подразделения. Можно заметить, что несколько элементов могут подчиняться другому родительскому элементу. Родительский элемент также может быть выбран (см. Рис 1.57). Такие справочники не часто используются в типовых конфигурациях. Это не очень удобно, так как непонятно является ли элемент родителем или нет.
Теперь вернемся к справочнику НОМЕНКЛАТУРА, реквизит УСЛУГА, откроем палитру свойств данного реквизита, раздел ИСПОЛЬЗОВАНИЕ. По умолчанию использование ДЛЯ ЭЛЕМЕНТА, установим значение ДЛЯ ГРУППЫ И ЭЛЕМЕНТА (см. Рис 1.58).
Перейдем в пользовательский режим и откроем группу, здесь отобразился нужный реквизит(см. Рис 1.59).
Таким образом можно регулировать состав реквизитов в группах справочников.
Так как наша организация занимается торговлей, поэтому не помешает справочник КОНТРАГЕНТЫ. Создадим новый справочник. Длину наименования также увеличим до пятидесяти символов. Добавим реквизиты ПолноеНаименование, тип – строка 300; ИНН, тип – строка 12. Контрагенты это поставщики и покупатели, те организации или люди, с кем наша организация осуществляет торговые отношения. Поэтому возникает необходимость разграничения юридических и физических лиц. Пришла пора познакомится еще с одним видом объектов конфигурации – ПЕРЕЧИСЛЕНИЕМ. Это перечень чего-либо недоступный для редактирования пользователям, в отличии от справочника. Пройдем по дереву конфигурации, и найдем объект ПЕРЕЧИСЛЕНИЕ и создадим новое. Добавим два значения: Юридическое лицо и Физическое лицо (см. Рис 1.60).
В справочнике КОНТРАГЕНТЫ добавим реквизит ЮРФИЗЛИЦО, тип ПеречислениеСылка.ЮрФизЛицо. Переходим в пользовательский режим и создаем новый элемент справочника КОНТРАГЕНТЫ (см. Рис 1.61).
У контрагента может быть множество данных, связанных с контактной информацией: юридический адрес, фактический адрес, телефон, электронная почта и т.д.
Такие данные удобно было бы хранить в таблице, и 1с предоставляет такую возможность. К каждому справочнику можно добавить любое количество таблиц, которые называются табличные части. Откроем форму справочника в режиме разработчика и добавим новую табличную часть (см. Рис. 1.62)
Дадим название табличной части – КОНТАКТНАЯИНФОРМАЦИЯ.
Добавим колонки этой таблице. В конфигураторе они называются «Реквизиты табличной части», так же, по кнопке добавить (см. Рис 1.63).
Перейдя в режим пользователя дополним элемент справочника Контрагенты.
Заполним табличную часть (см. Рис 1.64)
По правой кнопке здесь можно использовать функции, такие же, как у всего элемента справочника. Кнопка ЕЩЕ также присутствует (см. Рис 1.65).
Вид контактной информации неудобно каждый раз писать вручную, гораздо удобнее выбирать из списка, поэтому перейдем в режим Конфигуратора и добавим еще один справочник ВИДЫКОНТАКТНОЙИНФОРМАЦИИ, наименование увеличим до 50 символов. На закладке Прочее создадим предопределенные элементы:
Теперь вернемся к справочнику КОНТРАГЕНТЫ и изменим тип реквизита ВидКонтактнойИнформации на нужный (см. Рис 1.66).
Открывать окно редактирования элемента можно прямо из дерева конфигурации по двойному щелчку или выбрав в контекстном меню команду Свойства.
Перейдя в пользовательский режим, укажем нужный вид контактной информации(см. Рис 1.67). На данный момент справочник заполнен предопределенными элементами, но пользователь может дополнить список при желании.
Теперь можно заполнять табличную часть и другими видами контактной информации.
Познакомимся еще с одной закладкой формы создания справочника ВЛАДЕЛЬЦЫ.
Бывают ситуации, когда элементы одного справочника должны подчинятся элементам другого справочника. Например, создадим справочник ДОГОВОРЫКОНТРАГЕНТОВ. По логике этот справочник должен подчиняться справочнику КОНТРАГЕНТЫ, поэтому перейдем на закладку ВЛАДЕЛЬЦЫ и укажем справочник КОНТРАГЕНТЫ (см. Рис 1.68).
Запустим режим пользователя и посмотрим что же получилось. Откроем справочник Контрагенты и увидим, что появилась закладка Договоры контрагентов.При открытии мы увидим список договоров данного контрагента. Также здесь можно создать новый договор (см. Рис 1.69).
Обращаю ваше внимание, что это был еще один предопределенный реквизит справочника.
При создании нового элемента программа самостоятельно присваивает коды, за это отвечает закладка НУМЕРАЦИЯ.
Рассмотрим ее внимательнее.
Автонумерация-генерирует новые коды. Если отключить это свойство, заполнять код нужно будет вручную.
Контроль уникальности- контролирует уникальность нового кода в справочнике. Если, по какой- либо причине код нового элемента станет неуникальным, система не даст записать этот элемент.
Уникальность может быть различной:
В пределах всего справочника
В пределах подчинения. Такая нумерация актуальна для иерархического справочника. Нумерация будет начинаться с единицы в каждой группе справочника. Такой вид используется очень редко, потому что часто элементы перемещаются между группами, и тогда уникальность нарушится и система не даст переместить элемент.
В пределах подчинения владельцу. Этот вид нумерации достаточно распространен (см.Рис 1.70).
Установим у справочника ДОГОВОРЫКОНТРАГЕНТОВ серию кодов В ПРЕДЕЛАХ ПОДЧИНЕНИЯ ВЛАДЕЛЬЦУ. Перейдем в режим 1С Предприятие и попробуем заполнить справочник Договоры (см. Рис 1.71).
Дополним справочник Договоры необходимыми реквизитами.
НОМЕР – тип строка, длинна 10 символов.
Обратите внимание на тип Даты. Здесь может быть тип Дата, Время, Дата и время (см. Рис 1.72). Оставим значение по умолчанию.
Переходим к процессу удаления. В системе существует специальная обработка непосредственного удаления объектов, помеченых на удаление. Обработка анализирует возможность удаления, и, если нет ссылок в других объектах, удаляет его. Для рассмотрения данной функции нажмите на кнопку ГЛАВНОЕ МЕНЮ (см. Рис 1.75).
Пункт меню ВСЕ ФУНКЦИИ. Этот пункт переключаемый, если вы не нашли его, Сервис – Параметры – Отображать команду “Все функции” (см. Рис 1.76).
Далее будем следовать инструкциям конструктора.
Полное удаление – будет предпринята попытка удаления все помеченных объектов. Второй вариант – это, когда пользователь отмечает в списке те объекты, которые необходимо удалить. Попробуем выполнить полное удаление. Программа при этом выдаст сообщение, что не все объекты удалены (см. Рис 1.78).
При нажатии на кнопку Далее откроется список ссылок, которые система не смогла удалить. В нашем случае, это единица измерения Кг. Также будет видно, что ссылается она на элемент справочника Номенклатура – Мука. Если программа не удалила элемент, значит удалять его нельзя. Давайте посмотрим что может случится при удалении элемента, когда на него ссылаются другие объекты. Перейдем в пользовательский режим, уберем пометку удаления на элементе Кг и выберем пункт по кнопке ЕЩЕ, УДАЛИТЬ (см. Рис. 1.79).
Если вам нужна обратная связь, то вы можете записаться на наши курсы с поддержкой. Вы будете получать ответы на ваши вопросы и мы будем проверять ваши домашние задания.
Узнать подробности можете на следующей странице: http://work-1c.ru/Training_Programmer_1C/
Бесплатный звонок 8 800 2344322. Звоните и мы вас проконсультируем.
Научим программировать на 1С, поможем устроиться на работу!
Это к вопросу, как могло все поломаться.
Что касается вопроса, зачем разработчики БСП все это затеяли, то к моему сожалению, никакой информацией я не располагаю. Возможно это сделано для распределенных систем, дабы гарантировать, что одинаковые по смыслу предопределенные элементы справочников в разных базах будут существовать с одинаковыми идентификаторами, при том вне зависимости от конфигурации. Плюс для нас, разработчиков в том, что добавление новых предопределенных, несет в себе меньше рисков при дальнейшем обновлении. Код ведь обновлять легче.
Но все это мои догадки, к сожалению ничем не подкрепленные.
О сколько нам открытий чудных
Готовят просвещенья дух
И Опыт, сын ошибок трудных,
И Гений, парадоксов друг,
И Случай, бог изобретатель.
В любом случае, «предопределять» объект в коде и потом смущать администраторов считаю дурным тоном. Пока что у меня все работает, причем ИМО более правильно. Эту УТ обновляем не очень часто, поэтому вопрос откладывается.
В демо базе БСП они используют этот же код.
В поисках того, какой же идентификатор мне нужно написать для своего документа, попалась эта публикация.
Решение, к сожалению, не подошло.
Так и не понятно, какой всё-таки идентификатор нужно использовать? Любой (т.е. придумать GUID самому) или какой-то конкретный?
(13) упс, не тот скрин приложила (в этом ошибка, которую я потом исправила, но всё равно не работало).
В итоге еще и баг БСП нашла, который некорректно обрабатывал добавляемый предопределенный элемент в справочник Наборов, если это группа (т.е. задано Набор.ЭтоГруппа = Истина;), которая используется для случая, описанного в ИТС как «Особые случаи настройки наборов свойств. Настройка объектов с разными наборами свойств у разных групп объектов». Настроила всё в точности по инструкции, но элемент записывался в справочник наборов упорно не как группа, в итоге при попытке добавить дочерний элемент (из спец.справочника на базе которого формировались наборы реквизитов) выходила ошибка на строке в модуле БСП «УправлениеСвойствами» «НаборСвойствОбъект.Записать(); по причине: Значение поля «Входит в группу» должно быть группой».
Для исправления ищем Общий модуль БСП УправлениеСвойствамиСлужебный, процедура СоздатьНаборСвойств:
Заменяем строку:
Если СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0 Тогда
НА
Если (СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0) И Не СвойстваНабора.ЭтоГруппа Тогда
14. ellavs 806 15.07.19 13:27
(13) упс, не тот скрин приложила (в этом ошибка, которую я потом исправила, но всё равно не работало).
В итоге еще и баг БСП нашла, который некорректно обрабатывал добавляемый предопределенный элемент в справочник Наборов, если это группа (т.е. задано Набор.ЭтоГруппа = Истина;), которая используется для случая, описанного в ИТС как «Особые случаи настройки наборов свойств. Настройка объектов с разными наборами свойств у разных групп объектов». Настроила всё в точности по инструкции, но элемент записывался в справочник наборов упорно не как группа, в итоге при попытке добавить дочерний элемент (из спец.справочника на базе которого формировались наборы реквизитов) выходила ошибка на строке в модуле БСП «УправлениеСвойствами» «НаборСвойствОбъект.Записать(); по причине: Значение поля «Входит в группу» должно быть группой».
Для исправления ищем Общий модуль БСП УправлениеСвойствамиСлужебный, процедура СоздатьНаборСвойств:
Заменяем строку:
Если СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0 Тогда
НА
Если (СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0) И Не СвойстваНабора.ЭтоГруппа Тогда
Спасибо вам огромное за этот комментарий! Мне олн очень помог!
(17) О том, нужно ли придумывать GUID самому.
Вряд ли я ответил на Ваш вопрос. Можете раскрыть его?
печально слышать такое.
— разработчики типовых /отраслевых такое используют, базы разлетаются по всей стране. кто их будет обновлять в далеком поселке пгт. Агинское?
обновление для БП 3.0, ЗУП 3.Х сейчас вообще пользователи запускают.
если конфигурация корректно отработает ошибку, то пож-та делайте, а если вылетит в критическую ошибку?
Фирма 1С зарегистрировала ошибку 00-00221247 по данному факту, описанному в статье. Вот ссылка на закрытый форум https://partners.v8.1c.ru/forum/topic/1833581