Почему список документов «Ввести на основании» в 1С:УПП различается на разных компьютерах?

Программист 1С v8.3 (Обычные формы)
← На главную

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

Анализируем влияние функциональных опций

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

Важно понимать, что функциональные опции — это данные, хранящиеся в базе, а не в метаданных конфигурации. Поэтому сравнение CF-файлов никогда не покажет разницы. Для проверки нам необходимо:

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

Проверяем версию и легальность платформы

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

Рассмотрим порядок действий для исключения этого фактора:

  1. Проверим версию платформы на обоих компьютерах. Она должна быть идентичной (например, 8.3.18.1289). Разные релизы могут по-разному отрисовывать обычные формы.
  2. Убедимся, что на стороне клиента установлена официальная лицензия. Если подозрения подтверждаются, установим чистую версию платформы с сайта ИТС.
  3. Проверим разрядность платформы (x32 против x64). В редких случаях разрядность влияет на загрузку определенных библиотек, отвечающих за интерфейс.

Исследуем расширения конфигурации

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

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

Программируем проверку модификации подменю

Разберем ситуацию, когда список команд формируется программно. В УПП 1.3 часто используется код в модулях форм или общих модулях, который анализирует права, настройки организации или даже наличие определенных записей в регистрах сведений перед выводом меню «Заполнение» или «Ввести на основании».

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


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    // Универсальный механизм УПП для формирования кнопок
    РаботаСДиалогами.СформироватьПодменюЗаполнить(ЭтаФорма);
    // Здесь может быть фильтрация по настройкам пользователя
    Если Не НастройкаУчета.ИспользоватьСложноеПроизводство Тогда
        // Программное удаление кнопок из командной панели
        ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ПодменюВвестиНаОсновании.Кнопки.Удалить(0);
    КонецЕсли;
КонецПроцедуры

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

Пользовательские настройки интерфейса

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

Для устранения этой причины попробуем следующее:

  1. Создадим в базе клиента абсолютно нового пользователя с аналогичными правами.
  2. Зайдем под ним и проверим состав меню.
  3. Если у нового пользователя список полный — значит, проблема в настройках конкретного пользователя. В этом случае поможет полная очистка настроек через «Администрирование» — «Настройки пользователей».

Тестирование и исправление базы данных

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

Рассмотрим шаги по техническому обслуживанию:

  1. Запустим «Тестирование и исправление» в Конфигураторе.
  2. Обязательно выберем пункты: «Реиндексация таблиц информационной базы» и «Проверка логической целостности».
  3. Если база серверная, попробуем выгрузить её в DT и загрузить обратно или очистить серверный кэш на стороне кластера 1С.

Режим работы клиента (Толстый / Тонкий)

Уделим внимание режиму запуска. УПП 1.3 может запускаться как в обычном приложении, так и в управляемом (если это предусмотрено настройками). Список «Ввести на основании» в обычных формах строится на основе метаданных напрямую, а в управляемом приложении — через командный интерфейс, настройки которого хранятся отдельно. Убедимся, что и разработчик, и клиент используют Толстый клиент (обычное приложение).

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

← На главную