Разработка и Конфигурация · 10 мин
Как добавить команду движения документа в 1С
Как добавить команду движения документа в 1С: настройка через конфигуратор, командный интерфейс формы и код. Пошаговая инструкция для разных конфигураций.
Команда движения документа в 1С позволяет пользователю прямо из формы документа открыть список записей, которые этот документ сформировал в регистрах — например, проводки по бухгалтерскому регистру или записи по регистрам накопления. В типовых конфигурациях такая команда обычно уже есть, но при доработке, создании собственного документа или изменении формы её приходится добавлять вручную.
Способ добавления зависит от того, что именно требуется: вывести стандартную команду «Движения документа» на форму, добавить переход к конкретному регистру или создать собственную команду с программной обработкой. Ниже разобраны все три сценария для управляемых форм, а также вариант для обычных форм старых конфигураций.
Перед любыми изменениями конфигурации сделайте резервную копию информационной базы. Даже простая правка формы может привести к ошибкам открытия документа, если удалить нужный элемент или нарушить структуру командной панели.
Что такое команда движения документа и когда она нужна
При проведении документ записывает данные в регистры: бухгалтерии, накопления, сведений, расчёта. Набор этих записей называется движениями документа. Просмотр движений нужен бухгалтерам для проверки проводок, а разработчикам — для отладки процедуры проведения.
В управляемом приложении платформа автоматически формирует для документа стандартные команды перехода к связанной информации. Если документ является регистратором хотя бы одного регистра, в форме документа появляется команда перехода к движениям — обычно она доступна через кнопку «Ещё» или панель навигации формы.
Команда может отсутствовать на видном месте по нескольким причинам: форма доработана и командная панель очищена, документ создан самостоятельно и команда не выведена, либо у пользователя нет прав на просмотр регистра. В первых двух случаях проблема решается настройкой формы, в третьем — настройкой ролей.
Проверка: есть ли команда в командном интерфейсе
Прежде чем что-то менять в конфигураторе, проверьте, не скрыта ли команда в пользовательском режиме. Откройте документ в режиме «Предприятие» и нажмите кнопку «Ещё» в правой части командной панели формы. Во многих типовых конфигурациях команда «Движения документа» находится именно там.
Если команды нет и в меню «Ещё», проверьте настройки формы: в меню «Ещё» выберите пункт «Изменить форму». Откроется список доступных элементов — найдите в нём группу командной панели и проверьте, снят ли флажок видимости у нужной команды. Установите флажок и сохраните настройки.
Учтите, что настройки формы сохраняются для конкретного пользователя. Если команда пропала у всех пользователей сразу, причина почти наверняка в конфигурации, а не в персональных настройках — тогда переходите к работе в конфигураторе.
Как проверить, где искать команду
Команда «Движения документа» присутствует в списке
Команды нет ни в панели, ни в меню «Ещё»
Команда есть в дереве элементов, снят флажок видимости
Команды нет даже в дереве элементов формы
Есть право просмотра регистров документа
Нет прав на регистры — команда скрывается платформой
Добавление стандартной команды через конфигуратор
Основной способ — вывести стандартную команду на форму документа в конфигураторе. Для этого откройте конфигуратор, найдите нужный документ в дереве конфигурации и откройте его основную форму двойным щелчком.
В редакторе формы перейдите на вкладку «Командный интерфейс» либо откройте панель команд формы (в зависимости от версии платформы интерфейс редактора немного отличается). В списке стандартных команд найдите команду перехода к движениям — она формируется платформой автоматически для каждого регистра, по которому документ делает движения, и обычно называется по имени регистра.
Перетащите команду мышью в нужное место командной панели формы или установите для неё свойство «Только во всех действиях» в значение «Нет», чтобы она отображалась непосредственно в панели. Сохраните конфигурацию и обновите конфигурацию базы данных, если изменения этого требуют.
- 1Сделайте резервную копию базы и откройте конфигуратор
- 2В дереве конфигурации найдите документ и откройте его форму
- 3Откройте командный интерфейс формы или панель команд
- 4Найдите стандартную команду перехода к движениям по нужному регистру
- 5Перетащите её в командную панель или настройте видимость свойством
- 6Сохраните форму, обновите конфигурацию и проверьте в режиме «Предприятие»
Создание собственной команды с обработчиком
Если стандартного поведения недостаточно — например, нужно открыть движения с отбором, показать их в виде отчёта или вывести кнопку с собственным названием — создайте команду формы вручную. В редакторе формы перейдите на закладку «Команды» и добавьте новую команду, задав ей имя и заголовок, например «ПоказатьДвижения».
Для команды создайте обработчик действия. В модуле формы напишите код, открывающий нужный регистр с отбором по регистратору. Типовой пример для регистра накопления:
&НаКлиенте
Процедура ПоказатьДвижения(Команда)
Отбор = Новый Структура("Регистратор", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("РегистрНакопления.ОстаткиТоваров.ФормаСписка",
ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
После создания обработчика перетащите команду из панели команд в элементы формы — в командную панель или в подменю «Ещё». Платформа автоматически создаст кнопку, связанную с командой. Проверьте, что у команды задано понятное представление, иначе пользователи увидят внутреннее имя.
Для бухгалтерских проводок принцип тот же, только открывается форма списка регистра бухгалтерии. Если документ делает движения по нескольким регистрам, можно создать несколько команд или одну команду, открывающую универсальный отчёт по движениям.
&НаКлиенте
Процедура ПоказатьДвижения(Команда)
Отбор = Новый Структура("Регистратор", Объект.Ссылка);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("РегистрНакопления.ОстаткиТоваров.ФормаСписка", ПараметрыФормы, ЭтотОбъект);
КонецПроцедурыДобавление команды в обычных формах
В старых конфигурациях на обычных формах механизм другой. Откройте форму документа в конфигураторе, перейдите на вкладку «Командная панель» и добавьте кнопку вручную через контекстное меню «Добавить». В свойствах кнопки укажите действие — обработчик в модуле формы.
В обычном приложении удобно использовать встроенный отчёт «Движения документа» или открыть форму регистра с отбором аналогично управляемому варианту — синтаксис открытия формы почти совпадает, различия касаются в основном директив компиляции, которые в обычных формах не используются.
Учтите, что доработка обычных форм усложняет последующий переход на управляемое приложение. Если конфигурация планирует миграцию, лучше сразу проектировать команды в управляемых формах.
Типичные ошибки и ограничения
Наиболее частая ошибка — команда добавлена, но не видна пользователю. Причины: кнопка помещена в подменю «Ещё» при установленном свойстве «Только во всех действиях», у пользователя нет прав на регистр, либо изменения сохранены в конфигураторе, но конфигурация базы данных не обновлена.
Вторая распространённая проблема — команда открывает пустой список. Это нормально для непроведённого документа: движения существуют только после проведения. Если документ проведён, а список пуст, проверьте, по тому ли регистру открывается форма и корректно ли задан отбор по регистратору.
При доработке типовых конфигураций помните о поддержке: изменение типовой формы затрудняет автоматическое обновление. По возможности используйте расширения конфигурации — команда формы и её обработчик отлично добавляются через расширение без снятия конфигурации с поддержки.
Проверка результата
После добавления команды проверьте её работу на тестовом документе. Проведите документ, откройте его форму и выполните команду: должен открыться список записей регистра, отобранный по текущему документу. Сравните количество и содержимое записей с ожидаемыми движениями.
Дополнительно проверьте поведение для нового непроведённого документа — команда либо должна корректно показывать пустой список, либо её стоит скрывать программно до проведения. Проверьте доступность команды под пользователем с ограниченными правами, чтобы убедиться, что платформа корректно скрывает её при отсутствии прав на регистр.
Что важно запомнить
Стандартную команду движений добавляют через командный интерфейс формы в конфигураторе, нестандартную — собственной командой с обработчиком открытия формы регистра с отбором по регистратору. Перед изменениями делайте копию базы, а типовые конфигурации дорабатывайте через расширения.
Частые вопросы
Почему команда «Движения документа» не отображается у конкретного пользователя?
Платформа автоматически скрывает команды перехода к данным, на которые у пользователя нет прав. Проверьте роли пользователя: нужно право просмотра соответствующего регистра. После выдачи прав пользователю достаточно перезайти в сеанс.
Можно ли добавить команду движений без изменения конфигурации?
Да, двумя способами: через персональные настройки формы («Ещё» → «Изменить форму»), если команда просто скрыта, или через расширение конфигурации, если её нужно создать. Расширение — предпочтительный способ для типовых конфигураций на поддержке.
Команда открывает пустой список, хотя документ проведён. В чём причина?
Чаще всего отбор задан неверно: в структуре отбора должно быть поле «Регистратор» со значением ссылки на документ. Также проверьте, что открывается форма списка именно того регистра, по которому документ делает движения, — состав регистров указан в свойствах документа на закладке «Движения».
Как вывести движения сразу по нескольким регистрам одной командой?
Создайте собственную команду и в обработчике откройте универсальный отчёт по движениям документа (в типовых конфигурациях он часто есть в составе подсистем) либо форму с несколькими вкладками, где каждая вкладка содержит список по своему регистру с отбором по регистратору.
Исчезнет ли добавленная команда при обновлении типовой конфигурации?
Если форма доработана напрямую в конфигурации, при обновлении возможны конфликты и потеря изменений — их придётся восстанавливать вручную при сравнении и объединении. Команды, добавленные через расширение, при обновлении сохраняются, так как расширение хранится отдельно от основной конфигурации.