Как настроить отбор по категории или группе номенклатуры в запросе для расчета зарплаты в 1С:УНФ

Бухгалтер 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет
← На главную

В конфигурации 1С:Управление нашей фирмой (УНФ) механизм расчета заработной платы позволяет использовать произвольные запросы для вычисления показателей. Однако для пользователей, не обладающих навыками программирования (например, для бухгалтеров), задача добавления простого отбора по конкретному товару или группе товаров может стать серьезным препятствием. Рассмотрим подробно, как правильно сконструировать запрос, чтобы система учитывала продажи только определенных категорий или групп номенклатуры.

Различие между Группой и Категорией номенклатуры

Прежде чем приступать к написанию кода, проанализируем структуру данных в УНФ. Часто пользователи путают понятия «Группа» и «Категория», но в программе это разные сущности:

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

В зависимости от того, как именно вы ведете учет, запрос будет строиться по-разному. Разберем оба варианта.

Вариант 1. Отбор по категории номенклатуры (Правильный метод)

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

Рассмотрим пример запроса, где мы добавим условие на категорию непосредственно в параметры таблицы Продажи.Обороты:


ВЫБРАТЬ
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(
        &НачалоПериода,
        &КонецПериода,
        ,
        Ответственный = &Сотрудник
            И Номенклатура.КатегорияНоменклатуры = &КатегорияНоменклатуры
    ) КАК ПродажиОбороты

В данном случае мы обращаемся к реквизиту КатегорияНоменклатуры через точку от поля Номенклатура. Чтобы этот запрос заработал, в параметрах расчета зарплаты в пользовательском интерфейсе 1С должен быть создан и заполнен параметр &КатегорияНоменклатуры, куда вы выберете нужный элемент из справочника категорий.

Вариант 2. Отбор по наименованию («Костыль»)

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

Посмотрим на пример такого кода:


ВЫБРАТЬ
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(
        &НачалоПериода,
        &КонецПериода,
        ,
        Ответственный = &Сотрудник
            И Номенклатура.КатегорияНоменклатуры.Наименование = "Стекло"
    ) КАК ПродажиОбороты

Важно: Название в кавычках должно в точности до пробела совпадать с тем, что написано в справочнике категорий.

Вариант 3. Отбор по группе номенклатуры (с учетом иерархии)

Если товары разложены по папкам и вам нужно посчитать продажи по всей папке «ГПК Стекло» (включая все вложенные в нее подпапки), использование простого равенства = не поможет. Выясним причину: оператор «равно» ищет только прямое соответствие, но не видит содержимое папки.

Для работы с иерархией в 1С существует специальный оператор В ИЕРАРХИИ. Правильный запрос будет выглядеть так:


ВЫБРАТЬ
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.Продажи.Обороты(
        &НачалоПериода,
        &КонецПериода,
        ,
        Ответственный = &Сотрудник
            И Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)
    ) КАК ПродажиОбороты

Здесь &ГруппаНоменклатуры — это параметр, в который вы подставляете конкретную папку из справочника Номенклатура.

Почему колонка «Отбор» может быть неактивна?

Разберем технический нюанс, с которым часто сталкиваются бухгалтеры при редактировании запроса в 1С:УНФ. Если при открытии конструктора запроса вкладка или колонка «Отбор» недоступна для редактирования, это происходит по следующим причинам:

Рекомендации по оптимизации

Проанализируем несколько советов, которые помогут сделать ваши расчеты точнее и быстрее:

  1. Фильтруйте данные «внутри» таблицы: Всегда старайтесь прописывать условия (Ответственный, Номенклатура) внутри скобок после Продажи.Обороты. Это значительно ускоряет работу программы на больших базах, так как система отсекает ненужные записи еще на этапе чтения из базы данных, а не после получения всех строк.
  2. Избегайте сравнения строк: Использование Наименование = "Текст" — это крайняя мера. Если кто-то случайно нажмет лишний пробел в названии категории, зарплата сотрудника может обнулиться. Всегда лучше использовать параметры ссылочного типа.
  3. Проверка параметров: Перед сохранением запроса убедитесь, что все параметры, начинающиеся с символа & (кроме стандартных &НачалоПериода, &КонецПериода и &Сотрудник), добавлены в список доступных параметров в настройках начисления.

Таким образом, комбинируя знания о структуре справочников УНФ и синтаксисе языка запросов 1С, мы можем гибко настраивать расчеты любой сложности, обеспечивая корректное начисление заработной платы сотрудникам.

← На главную