Почему пропала команда "Ввод на основании" в 1С:Управление торговлей 11.4 и как ее вернуть?

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

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

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

Основные причины исчезновения команды "Ввод на основании"

Рассмотрим основные факторы, которые могут влиять на видимость и работоспособность команды "Ввод на основании":

  1. Влияние версии платформы и конфигурации: Некоторые версии технологической платформы 1С:Предприятие, особенно 8.3.18.1208, известны своей нестабильностью и могут вызывать проблемы с отображением команд. При этом на разных конфигурациях или даже разных базах на одной и той же платформе поведение может отличаться. Проблема часто проявляется после обновлений конфигурации, особенно при переходе на новые релизы. Это связано с изменениями в архитектуре и использовании Библиотеки стандартных подсистем (БСП). В новых версиях БСП механизмы работы с подключаемыми командами могут требовать программной доработки, даже если раньше функционал работал "из коробки".
  2. Изменения в БСП: Обновления БСП могут приводить к тому, что недостаточно просто указать документы-основания в метаданных; необходимо программно регистрировать команды и обрабатывать заполнение новых документов.
  3. Расширения конфигурации: Если функционал "Ввод на основании" был реализован через расширение, то после обновления конфигурации или платформы эти доработки могут перестать работать корректно. Код, который ранее программно добавлял команды, может потребовать актуализации в соответствии с новыми механизмами БСП. При добавлении команд через расширение важно правильно настроить их группу, чтобы они отображались в стандартном подменю, а не как отдельная кнопка.
  4. Пользовательские настройки и кэш: Иногда проблема может быть связана с поврежденным кэшем пользователя или некорректными настройками командного интерфейса. В редких случаях проблема проявляется только у одного пользователя.
  5. Отображение и пользовательский интерфейс: Платформа 1С позволяет настраивать командный интерфейс формы. Команда "Ввод на основании" может быть отображена как крупная отдельная кнопка или как элемент подменю. Изменение отображения команды (например, перетаскивание из меню на панель) может быть выполнено в режиме настройки формы.

Решения проблемы: Как вернуть команду "Ввод на основании"

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

1. Проверка и настройка командного интерфейса формы

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

  1. Откройте документ, для которого пропала кнопка, в режиме предприятия.
  2. Перейдите в режим настройки формы (обычно это кнопка "Еще" -> "Изменить форму...").
  3. В окне настройки формы разверните элементы командной панели.
  4. Найдите подменю "Создать на основании" (или "Ввод на основании"). Убедитесь, что требуемая команда там присутствует и отмечена галочкой.
  5. Настройка отображения: Если вы хотите, чтобы команда отображалась как отдельная "большая кнопка", а не элемент подменю, вы можете перетащить ее из подменю непосредственно на панель команд. Также в настройках формы для каждой команды можно выбрать тип отображения (например, "Картинка", "Текст", "Картинка и текст"). Измените отображение команды с пиктограммы на длинную кнопку, если пользователи привыкли к такому виду.

2. Программное добавление команды через расширение

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

Мы используем механизм подписки на событие или модификацию процедур модуля менеджера документа-основания. Рассмотрим пример, где мы хотим добавить команду создания документа "Корректировка заказа поставщику" на основании другого документа.

Шаг 1: Добавление команды для документа-основания

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

Например, если документ "Корректировка заказа поставщику" является тем, который вводится на основании:

В расширении для модуля менеджера документа-основания (например, Документы.ЗаказПоставщику) мы можем добавить следующий код:


&После("ДобавитьКомандыСозданияНаОсновании")
Процедура СД_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
    Документы.КорректировкаЗаказаПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры

Здесь СД_ДобавитьКомандыСозданияНаОсновании – это наше название процедуры в расширении. Важно, чтобы она вызывала метод добавления команды, специфичный для документа, который мы хотим создать на основании.

Шаг 2: Реализация функции добавления команды для вводимого документа

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

Пример кода:


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

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

Важно: для корректной работы механизма "Ввод на основании" в расширениях необходимо правильно указать объекты-основания в метаданных расширения и использовать обработчик события ОбработкаЗаполнения в модуле объекта нового документа для автоматического заполнения реквизитов из документа-основания. Если кнопка появилась, но создаваемый на основании документ пуст, это как раз указывает на проблему с процедурой ОбработкаЗаполнения().

3. Решение проблем, связанных с конкретным пользователем

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

  1. Очистка кэша пользователя: Удаление временных файлов кэша 1С часто решает проблемы с некорректным отображением интерфейса. Мы можем сделать это, удалив папки кэша (обычно расположены в `C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1CE\...\` и `C:\Users\<ИмяПользователя>\AppData\Local\1C\1CE\...\`). Более безопасный способ – это запустить 1С с очисткой кэша или удалить базу из списка и добавить заново.
  2. Повторное создание пользователя: Если очистка кэша не помогает, радикальным, но эффективным решением может быть удаление учетной записи пользователя из конфигуратора, а затем создание ее заново в режиме предприятия. Этот метод помог пользователям в аналогичных ситуациях с 1С:Розница.
  3. Проверка прав доступа: Убедитесь, что у пользователя, под которым происходит работа, есть полные права или необходимые роли для работы с соответствующими документами (как документом-основанием, так и создаваемым на его основании) и метаданными.

4. Влияние версии платформы и общие рекомендации

Мы выяснили, что версия платформы может играть значительную роль в появлении данной проблемы. В частности, платформы 8.3.18, такие как 8.3.18.1208, упоминались как потенциально нестабильные. Однако, встречаются и противоположные случаи, когда обновление до 8.3.18, наоборот, решало проблемы с командами. Мы рекомендуем:

  1. Обновление платформы: Если вы используете известную проблемную версию платформы, попробуйте обновиться до более стабильного или рекомендованного 1С релиза.
  2. Тестирование и исправление информационной базы: Регулярное проведение "Тестирования и исправления" информационной базы в режиме конфигуратора помогает выявить и устранить повреждения структуры базы данных, что также может влиять на работу интерфейса и логики.
  3. Анализ программного кода типовой конфигурации: Если проблема не решается стандартными средствами или программными доработками в расширении, возможно, потребуется более глубокий анализ кода в модулях формы и модулях менеджера документов типовой конфигурации. Обратите внимание на процедуры, которые программно управляют добавлением команд, например, СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании, которая может влиять на видимость стандартной кнопки "Создать на основании". Если ваш документ обрабатывается в этой процедуре, стандартная кнопка может исчезнуть.

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

← На главную