ПоляГруппировкиКомпоновкиДанных.ПолучитьИдентификаторПоОбъекту

Методы · GetIDByObject

Получает идентификатор для переданного объекта.

Синтаксис

ПолучитьИдентификаторПоОбъекту(<Объект>)
Полное описание, параметры и ограничения

ПоляГруппировкиКомпоновкиДанных.ПолучитьИдентификаторПоОбъекту (DataCompositionGroupFields.GetIDByObject)

ПоляГруппировкиКомпоновкиДанных (DataCompositionGroupFields)

ПолучитьИдентификаторПоОбъекту (GetIDByObject)

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

Синтаксис:
ПолучитьИдентификаторПоОбъекту(<Объект>)
Параметры:

<Объект> (необязательный)
Тип: ПолеГруппировкиКомпоновкиДанных, АвтоПолеГруппировкиКомпоновкиДанных.
Объект, для которого требуется получить идентификатор.
Возвращаемое значение:
Тип: ИдентификаторКомпоновкиДанных, Неопределено.
Неопределено - переданный объект не является частью данного объекта.
Описание:

Получает идентификатор для переданного объекта.

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

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

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

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

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

Сгруппировать четыре строки по категории

Категория — обычная строка в запросе. Группировка создаёт дерево представления, а не группы справочника и не новые записи.

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

Модуль собственной управляемой формы внешней обработки. Вставляйте готовые процедуры с директивами на уровне модуля; каждый урок — в отдельной копии формы.

Подготовка

  1. В учебной базе 8.5.1.1343 создайте новую внешнюю обработку УчебныйСписок85, пустую управляемую основную форму. Режим совместимости — 8.3.19 или выше. Не переделывайте список рабочей конфигурации.

  2. В реквизитах формы добавьте Список типа ДинамическийСписок. Создайте один элемент ТаблицаФормы с именем ТаблицаТоваров и путём к данным Список. Колонки вручную не добавляйте: их создаёт код. Это не ТаблицаЗначений и не коллекция строк для Добавить().

  3. В событиях формы назначьте ПриСозданииНаСервере одноимённой процедуре из примера. Не используйте одновременно другой обработчик заполнения этого списка.

  4. При открытии код задаёт произвольный запрос из четырёх константных строк. Основная таблица не указана; таблицы базы, файлы и внешние сервисы не используются. Запись данных отсутствует.

  5. Каждый раз открывайте отдельную копию формы. Автоматическое сохранение настроек отключено: старый пользовательский отбор не должен вмешиваться в упражнение.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Список.ПроизвольныйЗапрос = Истина;
    Список.ОсновнаяТаблица = "";
    Список.ДинамическоеСчитываниеДанных = Ложь;
    Список.АвтоЗаполнениеДоступныхПолей = Истина;
    Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
    Список.ВидКлюча = ВидКлючаДинамическогоСписка.ЗначениеПоля;
    КлючевыеПоля = Новый Массив;
    КлючевыеПоля.Добавить("УчебныйНомер");

    Список.ПоляКлюча = Новый ФиксированныйМассив(КлючевыеПоля);
    Список.ТекстЗапроса = "ВЫБРАТЬ
|    1 КАК УчебныйНомер,
|    ""Книга"" КАК Наименование,
|    ""Канцелярия"" КАК Категория,
|    3 КАК Количество,
|    250 КАК Цена
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 2, ""Ручка"", ""Канцелярия"", 1, 30
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 3, ""Чай"", ""Продукты"", 2, 150
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 4, ""Вода"", ""Продукты"", 0, 70";
    Элементы.ТаблицаТоваров.ТолькоПросмотр = Истина;
    ГруппаКатегории = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ГруппаКатегории.Поле = Новый ПолеКомпоновкиДанных("Категория");
    ГруппаКатегории.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
    ГруппаКатегории.Использование = Истина;
    ИдентификаторГруппы = Список.Группировка.ПолучитьИдентификаторПоОбъекту(ГруппаКатегории);
    Сообщить(Список.Группировка.ПолучитьОбъектПоИдентификатору(ИдентификаторГруппы) = ГруппаКатегории);
    Сообщить(Список.Группировка.Элементы.Количество() = 1);

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

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

  1. Одно поле группировки Категория создаёт два узла: Канцелярия и Продукты. Тип Элементы подходит неиерархическому строковому полю.

  2. ИдентификаторКомпоновкиДанных адресует объект настройки; это не УчебныйНомер товара.

  3. Сначала разворачиваем группу на экране, затем выбираем детальную строку. Заголовок группы не следует трактовать как товар.

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

  1. Две проверки дают Истина.

  2. Раскройте Канцелярию: внутри Книга и Ручка. В Продуктах Чай и Вода; всего четыре детальные строки.

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

Двухуровневое представление категорий без изменения данных.

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

  1. Группировка списка не означает автоматический расчёт сумм ресурсов, как в отчёте СКД.

  2. Не подменяйте группу представления группой справочника.

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

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

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

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

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