Как реализовать аналог табличной части в справочнике 1С 7.7

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

В платформе 1С:Предприятие 7.7 у справочников штатно отсутствует механизм табличных частей. Полноценная табличная часть доступна только у документов, отчетов и обработок. Однако при решении практических задач — например, при формировании пакетов товаров, комплектов номенклатуры или спецификаций — часто требуется привязать многострочный список к конкретному элементу справочника.

Рассмотрим основные и наиболее эффективные способы обхода этого ограничения платформы 1С 7.7.

Способ 1. Использование подчиненного справочника

Это классический архитектурный подход в 1С 7.7, если по структуре данных требуется выполнять поиск, строить отчеты или использовать запросы к базе данных.

Разберем по шагам, как настроить такую схему:

  1. Создадим главный справочник (например, Пакеты).
  2. Создадим подчиненный справочник (например, СоставПакетов) и укажем в качестве его владельца справочник Пакеты.
  3. В подчиненном справочнике добавим реквизиты: Номенклатура (тип «Справочник.Номенклатура») и Количество (тип «Число»).
  4. На форму элемента главного справочника поместим кнопку для вызова списка подчиненного справочника или встроим форму списка подчиненного справочника прямо в форму элемента.

Преимущества: данные хранятся в структурированном виде, к ним можно легко обращаться из штатных запросов 1С 7.7 и формировать любую отчетность по вхождению товаров в комплекты.

Способ 2. Сериализация таблицы значений в строковый реквизит

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

Для реализации разберем следующий алгоритм:

  1. Добавим в справочник реквизит СоставСтрокой с типом «Строка» (неограниченной длины).
  2. На форму справочника поместим элемент управления «Таблица значений» с идентификатором ТЗСостав.
  3. В процедуре ПриОткрытии() распакуем сохраненную строку обратно в таблицу значений с помощью функции ЗначениеИзСтрокиВнутр().
  4. В процедуре ПриЗаписи() свернуную таблицу значений упакуем в строку с помощью ЗначениеВСтрокуВнутр().

Посмотрим на пример кода в форме элемента справочника:


// Процедура, вызываемая при открытии формы элемента
Процедура ПриОткрытии()
    ТЗСостав.НоваяКолонка("Товар", "Справочник.Номенклатура");
    ТЗСостав.НоваяКолонка("Количество", "Число", 10, 3);
    
    Если ПустаяСтрока(СоставСтрокой) = 0 Тогда
        // Восстанавливаем сохраненную таблицу значений из строки
        ТампТЗ = ЗначениеИзСтрокиВнутр(СоставСтрокой);
        ТампТЗ.ЗаполнитьЗапрос(ТЗСостав);
    КонецЕсли;
КонецПроцедуры

// Процедура, вызываемая при сохранении элемента
Процедура ПриЗаписи()
    // Сохраняем структуру и данные таблицы значений в текстовый реквизит
    СоставСтрокой = ЗначениеВСтрокуВнутр(ТЗСостав);
КонецПроцедуры

Преимущества: вся информация хранится внутри одного элемента справочника без создания дополнительных объектов метаданных.

Способ 3. Использование служебного непроводимого документа

Выясним причину, почему вместо справочника иногда целесообразно выбрать документ. В 1С 7.7 документы имеют полноценную штатную табличную часть со всеми стандартными интерактивными возможностями (добавление, удаление, перетаскивание строк).

Если «Пакет» представляет собой спецификацию или комплект, его можно оформить непроводимым документом (например, СпецификацияКомплекта). Табличная часть документа содержит полный перечень номенклатуры и количество, а шапка хранит наименование и общие свойства пакета.

Способ 4. Внешние компоненты (FormEx и 1С++)

Для продвинутой разработки в 1С 7.7 можно применить внешние библиотеки:

  1. FormEx: позволяет сделать интерактивной элемент «Таблица значений» на форме справочника (выбор элементов из выпадающего списка прямо в ячейках таблицы, удобное редактирование по клику).
  2. 1С++: дает возможность хранить данные в произвольных таблицах базы данных и работать с ними с помощью прямых SQL-запросов.

Резюме и рекомендации

Выбор конкретного решения зависит от поставленной задачи:

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

← На главную