Как убрать лишнее поле "Период" в отчете на СКД в 1С:Предприятии?

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

В процессе работы с отчетами на системе компоновки данных (СКД) в 1С:Предприятии пользователи часто сталкиваются с появлением нежелательного поля "Период" в форме отчета. Это поле обычно располагается справа, и при нажатии на него открывается редактирование отбора, что сбивает с толку и создает лишние элементы управления. Давайте разберем, почему такое происходит и какие шаги можно предпринять для устранения этой проблемы.

Эта проблема может возникать по нескольким причинам: от сохраненных пользовательских настроек, конфликтов параметров в схеме компоновки данных до особенностей обработки виртуальных таблиц в запросах. Мы рассмотрим различные подходы к решению, начиная от простых пользовательских действий и заканчивая более глубокой настройкой СКД в конфигураторе.

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

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

  1. Создание нового варианта отчета:
  2. Откройте отчет в режиме 1С:Предприятие.

    В меню отчета (обычно кнопка "Еще" или "Все действия") выберите пункт "Сохранить вариант". Присвойте новому варианту отчета другое, уникальное имя.

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

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

  3. Сброс стандартных настроек:
  4. Если создание нового варианта не помогло или вы хотите просто сбросить текущие настройки отчета, также в режиме 1С:Предприятие откройте отчет.

    Через меню "Еще" (или аналогичное) выберите пункт "Установить стандартные настройки". Этот действие сбросит все пользовательские изменения и вернет отчет к его исходному виду, заданному разработчиком или конфигуратором.

    Мы настоятельно рекомендуем попробовать эти шаги в первую очередь, так как они не требуют вмешательства в конфигуратор и могут быстро решить проблему.

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

Одной из наиболее распространенных причин появления дублирующегося или лишнего поля "Период" является некорректное взаимодействие между параметрами виртуальных таблиц в запросе СКД. Это особенно актуально, когда в запросе используются несколько виртуальных таблиц (например, ОстаткиИОбороты, Остатки, Обороты), каждая из которых имеет свои параметры периода (НачалоПериода, КонецПериода, Период).

Платформа 1С может автоматически создавать системный параметр "Период", если обнаруживает несвязанные параметры времени в виртуальных таблицах, даже если вы явно указали НачалоПериода и КонецПериода.

Давайте разберем, как это можно исправить:

  1. Откроем схему компоновки данных:
  2. Перейдите в конфигуратор и откройте схему компоновки данных вашего отчета.

  3. Перейдем на вкладку "Наборы данных":
  4. Найдите на этой вкладке каждый набор данных-запрос, который использует виртуальные таблицы (например, запрос к РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты).

  5. Настроим параметры виртуальной таблицы:
  6. Для каждого такого набора данных-запроса нажмите кнопку "Параметры виртуальной таблицы". Откроется окно, где вы увидите список доступных параметров для каждой виртуальной таблицы, используемой в запросе (например, Период, НачалоПериода, КонецПериода).

    Здесь вы должны явно указать, какой параметр запроса соответствует системным параметрам периода. Например, для параметра "Период" виртуальной таблицы вы можете выбрать параметр &НачалоПериода или &КонецПериода из списка параметров вашей СКД (или "Не использовать", если этот параметр не нужен).

    Важно: Если вы используете в запросе {(&НачалоПериода)} и {(&КонецПериода)}, убедитесь, что параметр "Период" виртуальной таблицы либо связан с одним из них, либо вообще не используется. Цель состоит в том, чтобы СКД не создавала свой собственный, дублирующий параметр "Период" из-за неопределенности.

  7. Рассмотрим пример запроса:
  8. Предположим, у вас есть запрос, похожий на следующий, как в сообщении 18:

    
    ВЫБРАТЬ
        СУММА(ХР.СуммаКонечныйОстаток) КАК Сумма,
        ХР.Счет КАК Счет,
        ХР.Организация КАК Организация
    ПОМЕСТИТЬ ВТ1
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Авто, , , , ) КАК ХР
    СГРУППИРОВАТЬ ПО
        ХР.Счет,
        ХР.Организация
    ;
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
        СУММА(ХР.СуммаКонечныйОстаток) КАК Сумма,
        ХР.Счет КАК Счет,
        ХР.Организация КАК Организация
    ПОМЕСТИТЬ ВТ2
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты({(&НачалоПеида)}, {(&КонецПериода)}, Авто, , , , ) КАК ХР
    СГРУППИРОВАТЬ ПО
        ХР.Счет,
        ХР.Организация
    ;
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
        ВТ1.Сумма КАК Сумма,
        ВТ1.Счет КАК Счет,
        ВТ1.Организация КАК Организация
    ПОМЕСТИТЬ ВТ_Общая
    ИЗ
        ВТ1 КАК ВТ1
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВТ2.Сумма,
        ВТ2.Счет,
        ВТ2.Организация
    ИЗ
        ВТ2 КАК ВТ2
    ;
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
        ВТ_Общая.Сумма КАК Сумма,
        ВТ_Общая.Счет КАК Счет,
        ВТ_Общая.Организация КАК Организация
    ИЗ
        ВТ_Общая КАК ВТ_Общая
    СГРУППИРОВАТЬ ПО
        ВТ_Общая.Сумма,
        ВТ_Общая.Счет,
        ВТ_Общая.Организация
    УПОРЯДОЧИТЬ ПО
        ВТ_Общая.Счет.Код,
        ВТ_Общая.Организация
    

    В этом запросе используются две виртуальные таблицы РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты. Даже если вы явно передаете НачалоПериода и КонецПериода, платформа может автоматически добавлять системный параметр "Период" для каждой из них, если не было явного указания в настройках параметров виртуальной таблицы. Убедитесь, что для каждой из виртуальных таблиц, используемых в запросе, вы настроили параметры виртуальной таблицы таким образом, чтобы не было конфликтов или неопределенностей, которые могут привести к автоматическому добавлению лишнего поля "Период".

    Обратите внимание на параметр Авто в запросе. Он определяет режим установки периода. Убедитесь, что этот режим соответствует вашей логике работы с периодами.

3. Управление доступностью и свойствами параметров СКД

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

  1. Ограничение доступности параметра:
  2. Откройте схему компоновки данных в конфигураторе.

    Перейдите на вкладку "Параметры".

    Найдите параметр "Период" (или НачалоПериода/КонецПериода, если они отображаются нежелательно) в списке параметров.

    Установите флажок "Ограничение доступности" для этого параметра. Это часто помогает скрыть параметры, которые система пытается вывести по умолчанию.

    Важно: Если вы видите параметр с именем "Период", но он не используется в запросе или не должен быть видимым для пользователя, "Ограничение доступности" является первым шагом к его скрытию.

  3. Настройка свойств элемента пользовательских настроек:
  4. Перейдите на вкладку "Настройки" в схеме компоновки данных.

    Здесь вы увидите дерево элементов пользовательских настроек. Разверните секцию "Параметры" или найдите сам параметр "Период", если он там присутствует.

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

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

    Важно различать ситуацию, когда вы добавляете свой параметр "Период мой" для отбора, и когда появляется нежелательный системный "Период". Манипуляции с галками, как правило, влияют на отображение именно ваших добавленных полей или системных полей, которые система 1С считает нужным показать.

  5. Проверка настроек "Отбор":
  6. Также на вкладке "Настройки" проверьте раздел "Отбор". Убедитесь, что там нет дублирующихся или некорректно настроенных отборов по периоду, которые могли бы приводить к появлению лишнего поля.

4. Глубокий анализ запроса и отладочные приемы

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

  1. Детальный анализ запроса СКД:
  2. Внимательно изучите весь текст вашего запроса в схеме компоновки данных. Убедитесь, что нет скрытых или неявных ссылок на параметр "Период" или другие параметры, которые могли бы приводить к его автоматическому добавлению системой.

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

  3. Использование консоли запросов/СКД:
  4. Для отладки сложных отчетов рекомендуется использовать внешние обработки, такие как "Консоль запросов" или "Консоль СКД". Эти инструменты позволяют выполнить запрос отдельно от отчета, посмотреть его параметры, настройки компоновщика и конечный результат. Это может помочь выяснить, какие параметры компоновщик данных в итоге получает и обрабатывает, и где именно появляется нежелательный "Период".

  5. Проверка кода в модуле объекта отчета:
  6. Если отчет является вашей собственной разработкой и форма генерируется динамически (как было в случае автора темы), мы рекомендуем внимательно проанализировать код в модуле объекта отчета или в модуле формы отчета.

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

  7. Проверка совместимости версии платформы:
  8. В редких случаях проблемы с отображением полей могут быть связаны с особенностями конкретной версии платформы 1С:Предприятие. Убедитесь, что вы используете актуальную и стабильную версию платформы, и проверьте, не было ли известных ошибок, связанных с СКД, в вашей версии.

  9. Повреждение кэша пользователя или базы данных:
  10. В самых редких случаях проблема может быть вызвана повреждением кэша пользователя или базы данных. Попробуйте очистить кэш 1С для вашего пользователя. Это можно сделать, удалив файлы в каталогах кэша (обычно расположены в AppData). Также можно попробовать выполнить тестирование и исправление базы данных в режиме конфигуратора (Администрирование -> Тестирование и исправление).

Решение проблемы с лишним полем "Период" в отчете СКД часто требует системного подхода, начиная от простых пользовательских настроек и заканчивая глубоким анализом структуры СКД и кода. Мы рассмотрели наиболее частые причины и эффективные способы их устранения, которые помогут вам добиться желаемого результата и получить чистый и функциональный отчет.

← На главную