Почему при переходе из отчета в список документов 1С не виден нужный документ у одного пользователя?

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

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

В этой статье разберем причинно-следственные связи этой проблемы и проанализируем доступные способы ее решения.

Причины возникновения проблемы

Проанализируем, почему платформа 1С ведет себя подобным образом. При работе пользователя в режиме «1С:Предприятие» платформа автоматически сохраняет персональные настройки форм списков и журналов документов (установленные отборы, фильтры по датам, порядок сортировки и видимость колонок). Данная информация фиксируется в пользовательском хранилище настроек (ХранилищеПользовательскихНастроек) и локальном кэше сеанса.

Если конкретный пользователь ранее установил в самом журнале документов отбор по периоду (например, 4-й квартал), а затем пытается выбрать документ за 1-й квартал из сформированного отчета, платформа открывает форму выбора списка с восстановлением ранее сохраненных настроек этого пользователя. В результате список отсекает документы, не входящие в сохраненный период 4-го квартала, и искомый документ визуально исчезает из списка.

Способ 1. Очистка кэша и сохраненных настроек пользователя

Рассмотрим наименее инвазивное решение, не требующее изменения конфигурации. Так как проблема проявляется изолированно у одного сотрудника, в первую очередь выполним сброс пользовательских настроек формы:

  1. Перейдем в настройки конкретного пользователя в режиме «1С:Предприятие» через административные функции управления пользовательскими настройками.
  2. Удалим сохраненные настройки для формы списка или формы выбора соответствующего документа или журнала.
  3. Предложим пользователю открыть форму списка документов и выполнить команду сброса настроек (через меню «Все действия» или «Еще» — Установить стандартные настройки).
  4. При необходимости очистим локальный кэш пользователя.

Способ 2. Программный сброс отбора по дате в форме выбора

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

Разберем пример кода для формы списка документов в обычных формах:


// В обработчике при открытии формы очищаем отбор по дате
Если ЭлементыФормы.ДокументСписок.Отбор.Найти("Дата") <> Неопределено Тогда
    ЭлементыФормы.ДокументСписок.Отбор.Дата.Использование = Ложь;
КонецЕсли;

Для управляемых форм при работе с динамическим списком проанализируем управление отбором в событии ПриСозданииНаСервере:


// Отключение фильтрации по дате в динамическом списке при открытии формы
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОтбора.Использование = Ложь;

Способ 3. Прямое открытие формы документа вместо формы выбора

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

Вместо открытия промежуточного списка через кнопку выбора вызовем форму самого документа напрямую с помощью функции ОткрытьФорму, передав ссылку на документ в параметре Ключ:


ПараметрыОткрытия = Новый Структура("Ключ", ВыбраннаяСсылкаНаДокумент);
ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта", ПараметрыОткрытия);

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

← На главную