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

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

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

Анализ архитектуры: как данные попадают в колонку журнала

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

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

Шаг 1. Исследование в Конфигураторе

Проанализируем настройки вашего журнала. Откроем Конфигуратор, найдем нужный журнал документов и перейдем на закладку «Графы». Найдем графу Сумма и откроем её свойства. Посмотрим, что указано в поле «Данные» или «Формула».

Если в поле «Данные» выбран конкретный реквизит, проверим его заполнение. Выясним, является ли он Общим реквизитом. Для общих реквизитов критически важна настройка «Сортировка» и «Отбор». Если реквизит не участвует в отборе, он может некорректно отображаться в некоторых режимах просмотра журнала.

Шаг 2. Проверка программных ограничений и прав доступа

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

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


Функция глПолучитьСуммуДокумента(Конт) Экспорт
    Если глПроверкаПраваПользователя(Конт.ТекущийДокумент(), "ПросмотрЦен") = 0 Тогда
        Возврат 0; // Или пустая строка
    КонецЕсли;
    Возврат Конт.Итог("Сумма");
КонецФункции

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

Шаг 3. Использование отладчика для локализации проблемы

Если программная логика запутана (конфигурация сильно переписана), воспользуемся отладчиком. Запустим систему под пользователем, у которого не отображается сумма. В Конфигураторе установим точку останова в функции, которая вызывается из журнала.

Посмотрим на значения переменных в момент вызова:

Шаг 4. Проверка интерфейсных особенностей и реестра Windows

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

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


// Пример кода с использованием FormEx
Сервис = СоздатьОбъект("Сервис");
Если глТекущийПользователь.Статус = "Кладовщик" Тогда
    Сервис.СкрытьКолонку(Контекст, "Сумма");
КонецЕсли;

Если такого кода нет, попробуйте сбросить настройки интерфейса пользователя. Для этого можно временно переименовать папку пользователя в каталоге базы данных или очистить ветку реестра HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<ИмяБазы>\V7Default\ColumnWidths.

Шаг 5. Целостность индексов и кеширование

Если проблема носит хаотичный характер (то появляется, то исчезает), проанализируем состояние индексных файлов. В файловой версии .dbf повреждение файла .cdx может привести к тому, что данные из табличных частей не будут суммироваться корректно для отображения в журнале.

Выполним следующие действия:

  1. Попросим всех пользователей выйти из базы.
  2. Удалим все файлы с расширением .cdx в каталоге базы данных.
  3. Запустим 1С в монопольном режиме для автоматической переиндексации.

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

Резюме и рекомендации

Подведем итог: если сумма в журнале 1С 7.7 видна не всем, мы действуем по следующему алгоритму:

Во-первых, определяем способ вывода суммы в свойствах графы журнала в Конфигураторе.

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

В-третьих, исследуем глобальный модуль на предмет функций, возвращающих результат в зависимости от интерфейса или прав доступа.

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

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

← На главную