Как программно ограничить выбор видов документов в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Почему нельзя ограничить существующий журнал?

Журнал документов в 7.7 — это объект метаданных, состав которого строго задан в Конфигураторе. Механизм фильтрации, встроенный в платформу, не предполагает «скрытия» отдельных видов документов из уже существующего журнала программным путем. Попытки фильтровать записи через перебор всех документов в журнале приведут к критическому падению производительности, так как журнал оперирует индексами, а не динамическими выборками.

Решение 1: Создание специализированного журнала

Самый правильный и архитектурно верный способ — это создание отдельного журнала, в который будут включены только необходимые виды документов (например, только ПоступлениеТоваров и ПоступлениеМатериалов). Этот журнал будет обладать высокой производительностью, так как платформа сама проиндексирует входящие в него виды документов.

  1. Откройте Конфигуратор и создайте новый объект Журнал документов.
  2. Добавьте в состав этого журнала нужные виды документов.
  3. В коде обработки, где требуется выбор, вызывайте этот журнал с помощью метода ОткрытьФорму или ВыбратьДокумент.

Решение 2: Использование Таблицы значений (ТЗ) или Списка значений

Если создание нового объекта метаданных нежелательно (например, из-за политики внесения изменений в конфигурацию), воспользуйтесь механизмом таблиц значений. Этот подход позволяет создать «виртуальный» список выбора прямо на форме вашей обработки.

Рассмотрим по шагам реализацию этого метода:

  1. Создайте на форме обработки элемент управления Таблица или выведите форму с Таблицей значений.
  2. Программно выберите документы нужных видов за определенный период, используя запрос к базе данных или метод ВыбратьДокументы.

Пример кода для заполнения таблицы значений документами определенных видов:


// Создаем объект для выборки
Док = СоздатьОбъект("Документ");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Документ", "Документ");

// Выбираем документы
Док.ВыбратьДокументы(НачалоПериода, КонецПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл
    // Проверяем вид документа
    Если (Док.Вид() = "ПоступлениеТоваров") Или (Док.Вид() = "ПоступлениеМатериалов") Тогда
        ТЗ.НоваяСтрока();
        ТЗ.Документ = Док.ТекущийДокумент();
    КонецЕсли;
КонецЦикла;

После формирования такой таблицы, пользователь может выбрать строку, и выбранный документ будет передан в вашу процедуру обработки. Это решение работает максимально быстро, так как вы сами управляете содержимым списка и не перегружаете систему стандартными журналами.

Решение 3: Механизм подбора

Если стандартный функционал 1С 7.7 требует именно интерфейса подбора, вы можете реализовать собственную форму, открываемую через метод ОткрытьПодбор. Этот метод позволяет передать контекст вызывающей формы в форму подбора, чтобы после выбора документа в списке, данные автоматически возвращались в основную обработку.

Важное примечание: при разработке старайтесь избегать сложных отборов по графам журналов, так как в 7.7 эти операции требуют создания дополнительных индексов в конфигураторе. Использование ТаблицыЗначений для формирования списка выбора — это «золотой стандарт» разработки на платформе 7.7, позволяющий сохранить высокую скорость работы и гибкость кода без необходимости изменения структуры базы данных.

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

← На главную