СправочникМенеджер.<Имя справочника>.СоздатьГруппу

Методы · CreateFolder

Создает новую группу справочника.

Синтаксис

СоздатьГруппу()

Примеры платформы

НовыйОбъект = Справочники["Контрагенты"].СоздатьГруппу();
НовыйОбъект.Наименование = "Покупатели";
НовыйОбъект.Записать();
Полное описание, параметры и ограничения

СправочникМенеджер.<Имя справочника>.СоздатьГруппу (CatalogManager.<Catalog name>.CreateFolder)

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)

СоздатьГруппу (CreateFolder)

Доступен, начиная с версии 8.0.

Синтаксис:
СоздатьГруппу()
Возвращаемое значение:
Тип: СправочникОбъект.<Имя справочника>.

Описание:

Создает новую группу справочника.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

НовыйОбъект = Справочники["Контрагенты"].СоздатьГруппу();
НовыйОбъект.Наименование = "Покупатели";
НовыйОбъект.Записать();

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

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

Собственное дерево Бумага → Книги → Учебная книга записывается только внутри отменяемой транзакции. Методы вызываются на ссылках, не на переменных объектов.

Где и как запускать

Полный серверный модуль своей новой пустой конфигурации Учебная85, платформа 8.5.1.1343. Собственные ссылки/объекты, временная запись только с откатом; здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Для этого блока УчебныеТовары не подчинён владельцу, не имеет предопределённых элементов и дополнительных обработчиков. Модули объекта/менеджера пусты, подписок и расширений нет. Иерархия групп и элементов допускает два уровня ниже корня.

  6. Точную платформу 8.5.1.1343 проверяет код. Ссылки и объекты создаются самим уроком; UUID не подменяется знакомым кодом из УТ/КА2/УНФ/БП.

  7. Свойства ссылки readonly, свойства полученного объекта могут быть записываемыми. Ссылка.Скопировать возвращает новый объект, но сам метод не записывает его в базу.

  8. Непустой UUID/ссылка не подтверждает наличие записи. Для плановой ссылки проверяется ПолучитьОбъект=Неопределено, а данные отсутствующей записи не читаются.

  9. ВерсияДанных — непрозрачная строка платформы, не число, дата, версия конфигурации или номер обновления. Урок не декодирует и не назначает её вручную.

  10. Здесь в 1С примеры не запускались. Проверены исходники и установленная справка; записи/формы в ваших базах этим заполнением не создавались.

  11. Весь модуль вставьте в серверный общий модуль УчебныеСсылки. Его серверная экспортная процедура ВыполнитьПример вызывается из своей процедуры формы с &НаСервереБезКонтекста. Не вставляйте готовую процедуру внутрь другого обработчика.

  12. В транзакционных опытах временно записываются только собственные новые товар/группы, затем выполняется ОтменитьТранзакцию и при успехе, и при ошибке. Не заменяйте откат фиксацией и не вызывайте этот модуль внутри чужой транзакции.

  13. Запускайте строго в новой пустой базе Учебная85, с пустыми модулями объектов и без подписок. Здесь временно записываются только созданные самим примером объекты.

  14. Отмена транзакции выполняется и при успехе, и при ошибке. Не заменяйте её фиксацией и не запускайте внутри транзакции вызывающего кода.

  15. Откат базы не отменяет письма, HTTP-запросы и другие внешние действия обработчиков. Поэтому копия рабочей конфигурации с неизвестными обработчиками не заменяет эту подготовку.

Процедура ВыполнитьПример() Экспорт
    
    Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
        ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Запустите учебную задачу вне чужой транзакции";
    КонецЕсли;
    Ссылка = Справочники.УчебныеТовары.ПолучитьСсылку(Новый УникальныйИдентификатор);
    НачатьТранзакцию();
    Попытка
        Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
        Товар.УстановитьСсылкуНового(Ссылка);
        Корень = Справочники.УчебныеТовары.СоздатьГруппу();
        Корень.Наименование = "Бумага";
        Корень.УстановитьНовыйКод("У");
        Корень.Записать();
        Вложенная = Справочники.УчебныеТовары.СоздатьГруппу();
        Вложенная.Наименование = "Книги";
        Вложенная.Родитель = Корень.Ссылка;
        Вложенная.УстановитьНовыйКод("У");
        Вложенная.Записать();
        Товар.Наименование = "Учебная книга";
        Товар.Родитель = Вложенная.Ссылка;
        Товар.УстановитьНовыйКод("У");
        Товар.Записать();
        СсылкаТовара = Товар.Ссылка;
        СсылкаКорня = Корень.Ссылка;
        СсылкаВложенной = Вложенная.Ссылка;
        Сообщить(СсылкаТовара.ПолноеНаименование() = "Бумага/Книги/Учебная книга");
        Сообщить(СсылкаТовара.ПолныйКод() = Корень.Код + "/" + Вложенная.Код + "/" + Товар.Код);
        Сообщить(СсылкаКорня.Уровень() = 0);
        Сообщить(СсылкаВложенной.Уровень() = 1);
        Сообщить(СсылкаТовара.Уровень() = 2);
        Сообщить(СсылкаТовара.ПринадлежитЭлементу(СсылкаКорня));
        Сообщить(СсылкаТовара.ПринадлежитЭлементу(СсылкаВложенной));
        Сообщить(Не СсылкаТовара.ПринадлежитЭлементу(СсылкаТовара));
        Сообщить(СсылкаТовара.Родитель = СсылкаВложенной);
        Сообщить(СсылкаКорня.ЭтоГруппа И СсылкаВложенной.ЭтоГруппа И Не СсылкаТовара.ЭтоГруппа);
        ОтменитьТранзакцию();
    Исключение
        Если ТранзакцияАктивна() Тогда
            ОтменитьТранзакцию();
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    Сообщить(Не ТранзакцияАктивна());
    Сообщить(Ссылка.ПолучитьОбъект() = Неопределено);
КонецПроцедуры

Разбор по шагам

  1. Создать и временно записать две свои группы и один собственный товар.

  2. Получить три настоящие ссылки после записи; родителя передавать ссылкой.

  3. ПолноеНаименование и ПолныйКод включают родителей через /; коды берутся фактические, числовые суффиксы не угадываются.

  4. Корень имеет уровень 0, вложенная группа 1, товар 2. Не вызывать Уровень у пустой ссылки.

  5. Принадлежность учитывает все уровни; сам элемент не подчинён самому себе.

  6. Проверить признаки групп и затем отменить все три собственные записи.

Как проверить результат

  1. Десять проверок собственного дерева Истина, после чего товар отсутствует и транзакция закрыта.

  2. Уровень читается только у существующих внутри транзакции записей.

  3. Нет поиска/удаления существующих групп по совпадающему названию; откат относится только к собственным новым записям.

Ожидаемый результат

Получен осмысленный путь собственного товара с точными правилами методов ссылок.

На что обратить внимание

  1. Объект и ссылка не взаимозаменяемы: только объект используется для изменения данных, ссылка идентифицирует запись.

  2. Ссылки на отсутствующий или отменённый объект не следует читать как существующий товар.

  3. Никакие чужие объекты не ищутся по первому совпадению/первой строке и не удаляются по названию.

  4. Свойства ссылки не присваиваются, а непрозрачная ВерсияДанных не декодируется.

  5. Откат базы не отменяет внешние действия обработчиков, поэтому допускается только подготовленная своя пустая конфигурация без таких обработчиков.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Проверить путь товара через две собственные группы

В одной отменяемой транзакции создаём Бумага → Книги → Учебная книга. Полное наименование, полный код, уровень и принадлежность читают именно это дерево.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. Запускайте строго в новой пустой базе Учебная85, с пустыми модулями объектов и без подписок. Здесь временно записываются только созданные самим примером объекты.

  7. Отмена транзакции выполняется и при успехе, и при ошибке. Не заменяйте её фиксацией и не запускайте внутри транзакции вызывающего кода.

  8. Откат базы не отменяет письма, HTTP-запросы и другие внешние действия обработчиков. Поэтому копия рабочей конфигурации с неизвестными обработчиками не заменяет эту подготовку.


Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
    ВызватьИсключение "Запустите учебную задачу вне чужой транзакции";
КонецЕсли;
Ссылка = Справочники.УчебныеТовары.ПолучитьСсылку(Новый УникальныйИдентификатор);
НачатьТранзакцию();
Попытка
    Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
    Товар.УстановитьСсылкуНового(Ссылка);
    Корень = Справочники.УчебныеТовары.СоздатьГруппу();
    Корень.Наименование = "Бумага";
    Корень.УстановитьНовыйКод("У");
    Корень.Записать();
    ГруппаКниг = Справочники.УчебныеТовары.СоздатьГруппу();
    ГруппаКниг.Наименование = "Книги";
    ГруппаКниг.Родитель = Корень.Ссылка;
    ГруппаКниг.УстановитьНовыйКод("У");
    ГруппаКниг.Записать();
    Товар.Наименование = "Учебная книга";
    Товар.Родитель = ГруппаКниг.Ссылка;
    Товар.УстановитьНовыйКод("У");
    Товар.Записать();
    Сообщить(Товар.ПолноеНаименование() = "Бумага/Книги/Учебная книга");
    Сообщить(Товар.ПолныйКод() = Корень.Код + "/" + ГруппаКниг.Код + "/" + Товар.Код);
    Сообщить(Товар.Уровень() = 2);
    Сообщить(Товар.ПринадлежитЭлементу(Корень.Ссылка));
    Сообщить(Товар.ПринадлежитЭлементу(ГруппаКниг.Ссылка));
    Сообщить(Не Товар.ПринадлежитЭлементу(Товар.Ссылка));
    Сообщить(Корень.ЭтоГруппа);
    Сообщить(ГруппаКниг.ЭтоГруппа);
    Сообщить(Не Товар.ЭтоГруппа);
    ОтменитьТранзакцию();
Исключение
    Если ТранзакцияАктивна() Тогда
        ОтменитьТранзакцию();
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;
Сообщить(Не ТранзакцияАктивна());
Сообщить(Ссылка.ПолучитьОбъект() = Неопределено);

Разбор по шагам

  1. СоздатьГруппу создаёт группы, СоздатьЭлемент — товар. Родитель всегда получает ссылку, не объект группы.

  2. Сначала записываем собственные группы внутри транзакции, чтобы методы чтения родителей могли найти их в базе.

  3. УстановитьНовыйКод вычисляет следующий код с префиксом У. Не ожидаем конкретный числовой суффикс.

  4. Полные представления включают всех родителей слева направо через /. Уровень корня 0, вложенной группы 1, товара 2.

  5. ПринадлежитЭлементу учитывает все уровни; сам объект не считается подчинённым самому себе. Все три записи намеренно откатываются.

Как проверить результат

  1. Девять сравнений в транзакции Истина. После неё ещё два: транзакция закрыта, собственный товар отсутствует.

  2. В списке не осталось созданных этим запуском групп Бумага и Книги.

Ожидаемый результат

Проверена реальная иерархия временно записанных учебных объектов с откатом.

На что обратить внимание

  1. Не используйте этот урок в типовой базе или при ограничении иерархии, запрещающем такой уровень.

  2. ПолныйКод — представление пути, не новый уникальный код для обмена.

  3. Фиксированные наименования не используются для поиска/удаления существующих групп.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.