Кнопка «Закрытие месяца» под рукой: настройка интерфейса и свой код в 1С

· 8 мин

Содержание

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

Выбор простой. Нужна только быстрая ссылка для себя — хватит настроек. Кнопка нужна всем бухгалтерам, и она должна запускать особую логику — делайте расширение. База на поддержке, а права на изменение конфигурации не дают — берите внешнюю обработку.

Текст написан для 1С 8.3 с интерфейсом «Такси». Примеры привязаны к «1С:Бухгалтерии предприятия» 3.0, в других конфигурациях названия разделов могут отличаться.

Что именно вы хотите вынести на экран

Прежде чем что-то настраивать, определитесь, что должна делать кнопка. От этого зависит способ.

ЗадачаПодходящий способНужен программист
Быстро открывать готовую обработку закрытия месяцаНастройка навигации и панели действийНет
Поставить кнопку на форму списка или документаИзменение формы пользователемНет
Кнопка запускает свою последовательность действийРасширение конфигурацииДа
Конфигурация на поддержке, менять её нельзяВнешняя обработкаДа, один раз

В типовой «Бухгалтерии» закрытие месяца уже есть: это помощник в разделе «Операции» (группа с закрытием периода). Он последовательно выполняет регламентные операции: списание расходов будущих периодов, расчёт амортизации, закрытие счетов 20, 25, 26, 44, 90, 91, расчёт налога на прибыль. Поэтому чаще всего задача звучит так: «сделать эту команду ближе».

Если команда нужна просто «под рукой», не пишите код. Настройка интерфейса занимает пять минут и не ломает обновления.

Подготовка: права, режим и резервная копия

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

Что проверить заранее:

  • 🔑 Ваш пользователь может открыть раздел «Операции» и помощник закрытия месяца. Если нет — кнопка будет, но не сработает.
  • 🧩 Платформа 8.3.6 или новее, если планируете расширения. Более ранние платформы расширений не знают.
  • 👥 Решение нужно только вам или всей бухгалтерии. Личные настройки хранятся у пользователя, общие надо делать отдельно.
  • 📂 Есть ли в базе справочник пользовательских настроек. Его нужно будет копировать другим сотрудникам.

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

Способ 1. Вынос команды через настройку интерфейса

Это путь для пользователя. Кода нет, обновления конфигурации ничего не перетрут.

Панель разделов и панель действий

  1. Откройте нужный раздел, например «Операции».
  2. Нажмите значок шестерёнки в правом верхнем углу окна и выберите настройку навигации.
  3. В левом списке найдите команду закрытия месяца. Перенесите её в правый список кнопкой «Добавить».
  4. Закройте окно настройки кнопкой «ОК».
  5. Вернитесь в раздел. Команда появилась в левой навигационной панели.

Рядом в тех же настройках есть пункт настройки панели действий. Туда выносят команды, которые должны быть видны с любой страницы раздела. Принцип такой же: слева доступные, справа выбранные.

Кнопка на форме списка или документа

Если нужна именно кнопка на форме, а не пункт меню:

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

Чтобы кнопка не терялась среди десятка других, поместите её в группу «Ещё» или переименуйте в настройках формы. Название «Закрыть месяц» читается на панели лучше, чем длинное типовое.

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

Способ 2. Команда в расширении конфигурации

Расширение не меняет типовую конфигурацию, поэтому оно переживает обновления. Это стандартный способ для доработок на поддержке.

Порядок для разработчика:

  1. В Конфигураторе откройте «Конфигурация → Расширения конфигурации » и создайте новое расширение. Дайте ему понятное имя, например «КнопкаЗакрытияМесяца».
  2. Включите в расширение нужную форму: добавьте её в дерево расширения командой «Добавить в расширение» из контекстного меню объекта.
  3. В форме расширения откройте раздел команд и создайте команду. Задайте ей имя и заголовок «Закрытие месяца».
  4. В свойстве «Действие» создайте процедуру обработчика. Платформа положит её в модуль формы расширения.
  5. Перетащите команду из списка команд в командный интерфейс формы.
  6. Сохраните расширение, выберите «Конфигурация → Обновить конфигурацию базы данных» и перезапустите клиент.

Пример обработчика клиентской команды. Он открывает форму существующей обработки закрытия месяца:

&НаКлиенте
Процедура ЗакрытиеМесяца(Команда)
	ПараметрыФормы = Новый Структура("Период", НачалоМесяца(ТекущаяДата()));
	ОткрытьФорму("Обработка.ИмяВашейОбработки.Форма", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры

Имя обработки в коде подставьте своё: посмотрите его в дереве конфигурации, оно не должно быть угаданным. Если форму закрытия вам нужно открыть без параметров, второй аргумент можно не передавать.

А если действие должно что-то посчитать, а не только открыть окно, делайте разбивку: клиентская процедура собирает параметры, серверная выполняет работу.

&НаКлиенте
Процедура ЗакрытиеМесяца(Команда)
	Месяц = НачалоМесяца(ТекущаяДата());
	ЗакрытьМесяцНаСервере(Месяц);
	Сообщить("Закрытие месяца выполнено: " + Формат(Месяц, "ДФ=MM.yyyy"));
КонецПроцедуры

&НаСервере
Процедура ЗакрытьМесяцНаСервере(Месяц)
	// здесь вызывается ваша серверная логика закрытия
КонецПроцедуры

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

Способ 3. Внешняя обработка без изменения конфигурации

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

  1. Включите функциональность в разделе Администрирование → Печатные формы, отчёты и обработки. Там есть пункт, который открывает список дополнительных отчётов и обработок.
  2. Создайте новый элемент и загрузите файл .epf с обработкой.
  3. Укажите вид — дополнительная обработка.
  4. В размещении отметьте раздел, где нужна кнопка. Например, «Операции».
  5. Задайте быстрый доступ для пользователей, которым она положена.
  6. Запишите элемент. Команда появится в меню дополнительных обработок выбранного раздела.

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

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

Что можно автоматизировать в самой кнопке

Кнопка, которая просто открывает помощник, экономит два клика. Пользу даёт то, что стоит за ней. Реалистичные варианты:

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

Что автоматизировать не стоит: исправление данных «на лету», пересчёт чужих документов и перепроведение за весь год. Такие вещи нужно запускать осознанно, с проверкой результата.

Для порядка действий полезно сначала свести их в простой регламент. Пример для небольшой компании:

ШагЧто делаемЗачем
1Проводим все документы месяцаНет «хвостов» в расчётах
2Амортизация и расходы будущих периодовРасходы попадают в период
3Закрытие счетов затратФинансовый результат месяца
4Контрольная проверка оборотовВидны расхождения до отчёта

Кнопка должна повторять этот порядок, а не придумывать собственный.

Типичные ошибки при добавлении кнопки

Здесь только то, чего нет в шагах выше.

  • ❌ Кнопка есть, а у коллеги её нет. Личные настройки интерфейса хранятся у пользователя. Другим сотрудникам их нужно скопировать или настроить заново.
  • ❌ После обновления конфигурации форма «поехала». Так бывает, если менялась форма в самой конфигурации без расширения. Расширение или внешняя обработка эту проблему снимают.
  • ❌ Кнопка нажимается, но ничего не происходит. Проверьте, что действие команды связано с процедурой в модуле формы и что процедура не пуста.
  • ❌ Ошибка «Недостаточно прав». У пользователя нет доступа к объекту, который вызывает кнопка. Дело не в кнопке, а в профиле группы доступа.
  • ❌ Расширение не видно в базе. Не выполнено обновление конфигурации базы данных либо расширение отключено в списке расширений.

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

Проверка кнопки и передача настроек коллегам

Проверка занимает десять минут, но избавляет от неприятных сюрпризов в день закрытия.

  1. Войдите в копию базы под пользователем с обычными правами бухгалтера, а не под администратором. Так видно, есть ли у людей доступ к команде.
  2. Нажмите кнопку на тестовом периоде. Убедитесь, что открывается нужная форма и период подставлен верно.
  3. Закройте и снова откройте программу. Кнопка должна остаться на месте.
  4. Проверьте работу в тонком клиенте и в веб-клиенте, если сотрудники используют оба.

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

Что делать, если кнопка не подходит

Иногда проблему лучше решать без кнопки вообще.

  • 🗂 Регламентные задания. Когда месяц закрывается одним и тем же набором операций, их можно поставить на расписание. Но только для действий, которые безопасно повторять.
  • 📝 Чек-лист закрытия. Если сложно именно с порядком, а не с запуском, хватит списка шагов, по которому работает бухгалтерия.
  • 🧭 Роль и рабочее место. Бухгалтеру нужны закрытие, отчёты и сверки на одном экране. Часто эту задачу решает настройка начальной страницы, а не новая кнопка.

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

Какой способ добавления кнопки вам подойдёт?

Частые вопросы

Можно ли добавить кнопку, не будучи администратором?
Да, если нужна только команда в личной навигации или на форме. Для расширений и внешних обработок права администратора нужны.
Слетит ли кнопка после обновления 1С?
Настройки интерфейса и расширение сохраняются. Правка самой формы типовой конфигурации при обновлении может быть потеряна.
Как показать кнопку всем сотрудникам?
Либо скопировать настройки интерфейса каждому пользователю, либо сделать расширение или дополнительную обработку и выдать права на неё группе.
Нужно ли останавливать работу пользователей при добавлении расширения?
Для обновления конфигурации базы данных надо, чтобы другие пользователи вышли из базы. Планируйте это на нерабочее время.
Можно ли сделать так, чтобы закрытие месяца запускалось само?
Да, через регламентные задания, но только для тех операций, которые безопасно повторять и результат которых проверяется после запуска.