Кнопка «Закрытие месяца» под рукой: настройка интерфейса и свой код в 1С
Содержание
Добавить кнопку «Закрытие месяца » можно тремя путями. Пользователь выносит нужную команду в панель действий или на форму через настройки интерфейса, без программирования. Разработчик добавляет команду в расширении конфигурации. Если менять конфигурацию нельзя, подключают внешнюю обработку через раздел дополнительных отчётов и обработок.
Выбор простой. Нужна только быстрая ссылка для себя — хватит настроек. Кнопка нужна всем бухгалтерам, и она должна запускать особую логику — делайте расширение. База на поддержке, а права на изменение конфигурации не дают — берите внешнюю обработку.
Текст написан для 1С 8.3 с интерфейсом «Такси». Примеры привязаны к «1С:Бухгалтерии предприятия» 3.0, в других конфигурациях названия разделов могут отличаться.
Что именно вы хотите вынести на экран
Прежде чем что-то настраивать, определитесь, что должна делать кнопка. От этого зависит способ.
| Задача | Подходящий способ | Нужен программист |
|---|---|---|
| Быстро открывать готовую обработку закрытия месяца | Настройка навигации и панели действий | Нет |
| Поставить кнопку на форму списка или документа | Изменение формы пользователем | Нет |
| Кнопка запускает свою последовательность действий | Расширение конфигурации | Да |
| Конфигурация на поддержке, менять её нельзя | Внешняя обработка | Да, один раз |
В типовой «Бухгалтерии» закрытие месяца уже есть: это помощник в разделе «Операции» (группа с закрытием периода). Он последовательно выполняет регламентные операции: списание расходов будущих периодов, расчёт амортизации, закрытие счетов 20, 25, 26, 44, 90, 91, расчёт налога на прибыль. Поэтому чаще всего задача звучит так: «сделать эту команду ближе».
Если команда нужна просто «под рукой», не пишите код. Настройка интерфейса занимает пять минут и не ломает обновления.
Подготовка: права, режим и резервная копия
Для настройки интерфейса нужен профиль, у которого есть право на изменение настроек интерфейса. Обычно оно есть у бухгалтера. Для расширения нужны права администратора и доступ в Конфигуратор.
Что проверить заранее:
- 🔑 Ваш пользователь может открыть раздел «Операции» и помощник закрытия месяца. Если нет — кнопка будет, но не сработает.
- 🧩 Платформа 8.3.6 или новее, если планируете расширения. Более ранние платформы расширений не знают.
- 👥 Решение нужно только вам или всей бухгалтерии. Личные настройки хранятся у пользователя, общие надо делать отдельно.
- 📂 Есть ли в базе справочник пользовательских настроек. Его нужно будет копировать другим сотрудникам.
Расширение и внешняя обработка меняют поведение базы. Перед ними сделайте выгрузку информационной базы в файл .dt и проверьте расширение на копии.
Способ 1. Вынос команды через настройку интерфейса
Это путь для пользователя. Кода нет, обновления конфигурации ничего не перетрут.
Панель разделов и панель действий
- Откройте нужный раздел, например «Операции».
- Нажмите значок шестерёнки в правом верхнем углу окна и выберите настройку навигации.
- В левом списке найдите команду закрытия месяца. Перенесите её в правый список кнопкой «Добавить».
- Закройте окно настройки кнопкой «ОК».
- Вернитесь в раздел. Команда появилась в левой навигационной панели.
Рядом в тех же настройках есть пункт настройки панели действий. Туда выносят команды, которые должны быть видны с любой страницы раздела. Принцип такой же: слева доступные, справа выбранные.
Кнопка на форме списка или документа
Если нужна именно кнопка на форме, а не пункт меню:
- Откройте форму, куда хотите поместить кнопку. Например, список «Операции, введённые вручную».
- В правом верхнем углу формы нажмите «Ещё» и выберите «Изменить форму».
- В открывшемся окне найдите нужную команду в списке доступных. Если нужной команды там нет, значит, у этой формы её нет в принципе — этот способ ограничен тем, что разработчик положил в конфигурацию.
- Перетащите команду на командную панель или отметьте её галочкой.
- Нажмите «ОК» и проверьте, что кнопка появилась.
Чтобы кнопка не терялась среди десятка других, поместите её в группу «Ещё» или переименуйте в настройках формы. Название «Закрыть месяц» читается на панели лучше, чем длинное типовое.
Ограничение этого способа в одном: нельзя добавить действие, которого нет среди команд формы. Для такого нужен код.
Способ 2. Команда в расширении конфигурации
Расширение не меняет типовую конфигурацию, поэтому оно переживает обновления. Это стандартный способ для доработок на поддержке.
Порядок для разработчика:
- В Конфигураторе откройте «Конфигурация → Расширения конфигурации » и создайте новое расширение. Дайте ему понятное имя, например «КнопкаЗакрытияМесяца».
- Включите в расширение нужную форму: добавьте её в дерево расширения командой «Добавить в расширение» из контекстного меню объекта.
- В форме расширения откройте раздел команд и создайте команду. Задайте ей имя и заголовок «Закрытие месяца».
- В свойстве «Действие» создайте процедуру обработчика. Платформа положит её в модуль формы расширения.
- Перетащите команду из списка команд в командный интерфейс формы.
- Сохраните расширение, выберите «Конфигурация → Обновить конфигурацию базы данных» и перезапустите клиент.
Пример обработчика клиентской команды. Он открывает форму существующей обработки закрытия месяца:
&НаКлиенте
Процедура ЗакрытиеМесяца(Команда)
ПараметрыФормы = Новый Структура("Период", НачалоМесяца(ТекущаяДата()));
ОткрытьФорму("Обработка.ИмяВашейОбработки.Форма", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
Имя обработки в коде подставьте своё: посмотрите его в дереве конфигурации, оно не должно быть угаданным. Если форму закрытия вам нужно открыть без параметров, второй аргумент можно не передавать.
А если действие должно что-то посчитать, а не только открыть окно, делайте разбивку: клиентская процедура собирает параметры, серверная выполняет работу.
&НаКлиенте
Процедура ЗакрытиеМесяца(Команда)
Месяц = НачалоМесяца(ТекущаяДата());
ЗакрытьМесяцНаСервере(Месяц);
Сообщить("Закрытие месяца выполнено: " + Формат(Месяц, "ДФ=MM.yyyy"));
КонецПроцедуры
&НаСервере
Процедура ЗакрытьМесяцНаСервере(Месяц)
// здесь вызывается ваша серверная логика закрытия
КонецПроцедуры
Серверная часть в примере пустая намеренно. Какие регламентные операции вызывать, определяет ваш учёт и конфигурация. Не копируйте чужую процедуру закрытия без проверки на копии базы.
Способ 3. Внешняя обработка без изменения конфигурации
Если расширения запрещены политикой, а конфигурация на поддержке, подключайте внешнюю обработку через механизм дополнительных обработок.
- Включите функциональность в разделе
Администрирование → Печатные формы, отчёты и обработки. Там есть пункт, который открывает список дополнительных отчётов и обработок. - Создайте новый элемент и загрузите файл
.epfс обработкой. - Укажите вид — дополнительная обработка.
- В размещении отметьте раздел, где нужна кнопка. Например, «Операции».
- Задайте быстрый доступ для пользователей, которым она положена.
- Запишите элемент. Команда появится в меню дополнительных обработок выбранного раздела.
В самой обработке команда описывается в процедуре регистрации сведений о внешней обработке. Там задаётся идентификатор команды, её представление и способ вызова. Точные имена параметров смотрите в документации библиотеки стандартных подсистем вашей версии: они менялись между релизами.
Плюсы внешней обработки: не трогает конфигурацию, легко отключается, обновляется заменой файла. Минус — кнопка живёт в общем меню дополнительных обработок, а не на нужной форме.
Что можно автоматизировать в самой кнопке
Кнопка, которая просто открывает помощник, экономит два клика. Пользу даёт то, что стоит за ней. Реалистичные варианты:
- ✅ Подставлять текущий закрываемый период, а не прошлый.
- ✅ Перед запуском проверять, что в периоде нет непроведённых документов.
- ✅ Запускать нужные регламентные операции в фиксированном порядке.
- ✅ Показывать итог одним сообщением: что выполнено и где остановилось.
Что автоматизировать не стоит: исправление данных «на лету», пересчёт чужих документов и перепроведение за весь год. Такие вещи нужно запускать осознанно, с проверкой результата.
Для порядка действий полезно сначала свести их в простой регламент. Пример для небольшой компании:
| Шаг | Что делаем | Зачем |
|---|---|---|
| 1 | Проводим все документы месяца | Нет «хвостов» в расчётах |
| 2 | Амортизация и расходы будущих периодов | Расходы попадают в период |
| 3 | Закрытие счетов затрат | Финансовый результат месяца |
| 4 | Контрольная проверка оборотов | Видны расхождения до отчёта |
Кнопка должна повторять этот порядок, а не придумывать собственный.
Типичные ошибки при добавлении кнопки
Здесь только то, чего нет в шагах выше.
- ❌ Кнопка есть, а у коллеги её нет. Личные настройки интерфейса хранятся у пользователя. Другим сотрудникам их нужно скопировать или настроить заново.
- ❌ После обновления конфигурации форма «поехала». Так бывает, если менялась форма в самой конфигурации без расширения. Расширение или внешняя обработка эту проблему снимают.
- ❌ Кнопка нажимается, но ничего не происходит. Проверьте, что действие команды связано с процедурой в модуле формы и что процедура не пуста.
- ❌ Ошибка «Недостаточно прав». У пользователя нет доступа к объекту, который вызывает кнопка. Дело не в кнопке, а в профиле группы доступа.
- ❌ Расширение не видно в базе. Не выполнено обновление конфигурации базы данных либо расширение отключено в списке расширений.
Все проверки выполняйте сначала в копии базы. Закрытие месяца меняет много документов и записей регистров, откатывать его вручную долго.
Проверка кнопки и передача настроек коллегам
Проверка занимает десять минут, но избавляет от неприятных сюрпризов в день закрытия.
- Войдите в копию базы под пользователем с обычными правами бухгалтера, а не под администратором. Так видно, есть ли у людей доступ к команде.
- Нажмите кнопку на тестовом периоде. Убедитесь, что открывается нужная форма и период подставлен верно.
- Закройте и снова откройте программу. Кнопка должна остаться на месте.
- Проверьте работу в тонком клиенте и в веб-клиенте, если сотрудники используют оба.
Чтобы передать личные настройки интерфейса коллеге, используйте копирование настроек пользователя: в форме настроек есть команда, которая переносит выбранные настройки другому пользователю. Расширение и внешняя обработка доступны всем, кому разрешено по правам, и копировать ничего не нужно.
Что делать, если кнопка не подходит
Иногда проблему лучше решать без кнопки вообще.
- 🗂 Регламентные задания. Когда месяц закрывается одним и тем же набором операций, их можно поставить на расписание. Но только для действий, которые безопасно повторять.
- 📝 Чек-лист закрытия. Если сложно именно с порядком, а не с запуском, хватит списка шагов, по которому работает бухгалтерия.
- 🧭 Роль и рабочее место. Бухгалтеру нужны закрытие, отчёты и сверки на одном экране. Часто эту задачу решает настройка начальной страницы, а не новая кнопка.
Для тех, кто выбирает путь, пригодится небольшой помощник по выбору способа.