На что влияет галочка «Отбор» в свойствах вида субконто в 1С 7.7?

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

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

Техническая суть: индексация базы данных

Давайте проанализируем, что происходит «под капотом» системы, когда мы устанавливаем этот флажок. Основная задача настройки Отбор — управление индексами в таблице проводок (журнале операций). В 1С 7.7 все проводки хранятся в файле 1SENTRY.DBF (для файловой версии) или в соответствующей таблице SQL-базы.

Когда галочка «Отбор» включена, система создает дополнительный индекс по данному виду субконто. Это означает следующее:

  1. Для SQL-версии: В базе данных создается индекс по полям, содержащим вид субконто и его значение. Это позволяет серверу мгновенно находить нужные записи, не перебирая всю таблицу проводок целиком (избегая так называемого Full Scan).
  2. Для DBF-версии: В индексном файле создается соответствующее выражение, которое ускоряет поиск по конкретному значению субконто.

Проанализируем ситуацию: если в вашей базе данных миллионы проводок, поиск конкретной партии или договора без включенного отбора превращается в тяжелую задачу для дисковой подсистемы. Включение этой опции переводит операцию поиска из разряда «прочитать всё» в разряд «точечного обращения».

Влияние на пользовательский интерфейс (Журнал проводок)

Рассмотрим, как эта настройка проявляется в режиме «1С:Предприятие». Основное визуальное отличие заключается в работе Журнала проводок. Если у вида субконто (например, «Контрагенты») стоит галочка Отбор, пользователь получает возможность выполнять интерактивную фильтрацию:

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

Программная выборка и объект «Операция»

Для программиста наличие этой галочки открывает доступ к эффективному использованию методов объекта Операция. Разберем по шагам, как это работает в коде. Существует специализированный метод ВыбратьОперацииПоСубконто(), который предназначен для получения списка операций, в которых задействовано конкретное значение субконто.

Посмотрим на пример использования метода ВыбратьПоЗначению, который также опирается на этот механизм:


// Создаем объект Операция
обОперация = СоздатьОбъект("Операция");

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

Пока обОперация.ПолучитьОперацию() = 1 Цикл
    // Обработка найденной операции
    Сообщить("Найдена операция №" + обОперация.НомерДок);
КонецЦикла;

Важный момент: если галочка Отбор не установлена, использование подобных методов либо будет выдавать ошибку, либо (в зависимости от контекста) приведет к крайне медленной работе, так как системе придется сканировать весь период проводок последовательно.

Особенности партионного учета и неопределенных типов

Выясним причину, по которой без этой галочки алгоритмы ФИФО могут работать «на порядок дольше». В 1С 7.7 часто используются субконто с неопределенным типом или субконто типа «Документ». Если в системе ведется партионный учет, где субконто «Партия» — это документ поступления, то при списании товара системе нужно найти остатки и движения именно по этой конкретной партии.

Если для вида субконто «Партии» не стоит отбор, то любая попытка программно «выцепить» движения по конкретной партии из журнала проводок заставит систему перечитывать огромные объемы данных. Именно поэтому для всех справочников, участвующих в сложных алгоритмах зачета (партии, заказы, счета на оплату), установка галочки Отбор обязательна.

Скорость построения отчетов

Хотя бухгалтерские итоги (остатки и обороты по счетам) хранятся в отдельных таблицах итогов и рассчитываются независимо от этой галочки, существует целый класс отчетов, которые работают напрямую с проводками. К ним относятся:

Построение таких отчетов по конкретному объекту при включенном отборе происходит практически мгновенно, так как 1С использует индекс для прямого доступа к записям.

Обратная сторона: замедление проведения документов

Необходимо понимать, что «бесплатных» индексов не бывает. Каждый установленный флажок Отбор создает дополнительную нагрузку на систему при записи данных. Проанализируем последствия:

Рекомендации по использованию

Рассмотрим основные правила, когда стоит и когда не стоит ставить эту галочку:

Ставьте галочку «Отбор», если:

  1. Пользователям нужно фильтровать журнал проводок по этому субконто вручную.
  2. Субконто содержит большое количество элементов (Контрагенты, Номенклатура, Сотрудники).
  3. Это субконто используется в алгоритмах подбора (ФИФО, ЛИФО, закрытие авансов, зачет взаимозачетов).
  4. Вам часто требуется формировать «Карточку субконто» по одному конкретному значению из тысяч.

Не ставьте галочку, если:

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

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

← На главную