Отключение субконто «Продукция» на счёте 20.01 (БП 3.0)
Расширение для 1С:Бухгалтерии предприятия 3.0, которое убирает 3-е субконто «Продукция» на счёте 20.01 на уровне самого плана счетов. Достаточно включить одну константу-переключатель — и платформа сама не даст выбрать это субконто в проводках, документах и настройках учётной политики.
Что делает:
- Удаляет вид субконто «Продукция» со счёта 20.01 (и подчинённых) по команде-переключателю;
- Блокирует обратное добавление субконто при смене учётной политики и обновлении конфигурации (&Вместо ДобавитьСубконтоПродукция);
- Делает недоступной галку «Продукция» в форме настройки аналитики счёта;
- Пишет лог операции в журнал регистрации.
Особенности: назначение — «Дополнение», режим совместимости 8.3.27, префикс прод_. Обратный откат не предусмотрен — перед применением закройте прошлые периоды (исторические проводки с заполненным субконто «Продукция» могут «осиротеть»).
Зачем сделал? Да достало исправлять косяки в клиентских базах, когда в учетной политике галка Продукция на 20.* снята, а в Плане счетов субконто есть и доступно для выбора в документах, кто - то обязательно его заполнит, и потом гадай, откуда в себестоимости чума.
Расширение «Produkciya20»
Назначение: в БП 3.0 отключить третье субконто «Продукция» на счёте 20.01 «Основное производство» (и подчинённых ему счетах) и заблокировать его повторное появление.
Версия: 1.0.0.4 · Платформа: 1С:Предприятие 8.3.27+ · Назначение расширения: «Дополнение» · Префикс: прод_.
Зачем
В типовой БП 3.0 на счёте 20.01 может быть включено третье субконто «Продукция» (вид ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Продукция, тип значения — СправочникСсылка.Номенклатура). Включается оно опцией учётной политики «Затраты на счёте учитываются в разрезе… продукции (услуг)» (галка «Продукция» в форме «Детализация учёта затрат»), и в дальнейшем штатная процедура ПланыСчетов.Хозрасчетный.ДобавитьСубконтоПродукция() добавляет это субконто во все счета иерархии группового счёта ОсновноеПроизводство_.
Если методология организации не предусматривает учёт затрат в разрезе номенклатуры продукции, это субконто:
- засоряет ввод данных пользователю (лишняя колонка субконто),
- создаёт лишние строки в проводках и отчётах,
- увеличивает риск некорректного заполнения и расхождений в калькуляции себестоимости.
Расширение позволяет одной галкой выключить субконто на самом плане счетов и одновременно закрыть пользователю возможность включить его обратно через учётную политику.
Что делает расширение
- Спрашивает подтверждение перед включением. При установке галки Ложь → Истина в форме константы расширение проверяет, есть ли в плане счетов «Хозрасчетный» вид субконто «Продукция» на счетах группы ОсновноеПроизводство_, и если есть — выводит список организаций, у которых заполнена ссылка на настройки учёта затрат. Запись константы продолжится только после ответа «Да».
- Удаляет вид субконто «Продукция» из табличной части ВидыСубконто всех счетов в иерархии ПланСчетов.Хозрасчетный.ОсновноеПроизводство_ — однократно, по факту включения константы-переключателя.
- Блокирует штатный возврат субконто при следующем перепроведении параметров учёта (смена учётной политики, обновление конфигурации) — перехватывает процедуру ДобавитьСубконтоПродукция в модуле менеджера плана счетов «Хозрасчетный».
- Делает недоступной галку «Продукция» в форме настройки аналитики счёта 20.01 — пользователь физически не сможет её установить, пока активна константа.
Состав
|
Объект |
Назначение |
|
Константа прод_ОтключитьПродукциюНаСчете20_01 (Булево) |
Переключатель функциональности расширения. Запись Истина запускает удаление субконто. Основная форма константы — CommonForm.прод_ОтключитьПродукциюНаСчете20_01. |
|
Общая форма прод_ОтключитьПродукциюНаСчете20_01 |
Форма константы с описанием, флажком, кнопками «Записать» / «Записать и закрыть» и диалогом подтверждения. Открывается двойным кликом по константе. |
|
Общий модуль прод_УправлениеСубконтоПродукция (Сервер) |
Серверная логика: чтение константы, сбор сведений для диалога (есть ли субконто в плане счетов, список организаций), удаление субконто. |
|
Заимствованный модуль менеджера ПланСчетов.Хозрасчетный |
Перехват &Вместо штатной процедуры ДобавитьСубконтоПродукция. |
|
Заимствованная форма Справочник.НастройкиУчетаЗатрат.Форма.АналитикаСчета |
Блокировка галки «Продукция» в режиме «только просмотр» при активной константе. |
Как это работает изнутри
1. Диалог подтверждения в форме константы
При двойном клике по константе (или открытии через «Все функции → Константы») открывается форма-обёртка CommonForm.прод_ОтключитьПродукциюНаСчете20_01. В ней — пояснение, флажок и две команды: «Записать» и «Записать и закрыть».
Поведение при нажатии на «Записать»/«Записать и закрыть»:
- Если значение флажка не изменилось — ничего не делается.
- Если флажок переведён Истина → Ложь — константа записывается без вопросов; расширение тут же перестаёт удалять и блокировать.
- Если флажок переведён Ложь → Истина — серверный вызов прод_УправлениеСубконтоПродукция.СведенияОВключенномУчётеПродукции():
- проверяется план счетов — есть ли в иерархии 20_ОсновноеПроизводство хотя бы один счёт с видом субконто «Продукция»;
- собирается список организаций из среза последних регистра сведений УчетнаяПолитика, где заполнен реквизит НастройкиУчетаЗатрат и сама организация не помечена на удаление.
- Если плановое субконто отсутствует — константа пишется без вопроса.
- Если есть — выводится диалог ПоказатьВопрос со списком организаций и кратким описанием последствий. По «Нет» галка откатывается; по «Да» — константа записывается и сразу запускается удаление субконто (см. п. 2).
2. Переключение константы (модуль значения)
Запись значения Истина константой через любой способ (форма константы, программный код) запускает обработчик ПриЗаписи() её модуля значения:
- проверяет, что это не обмен данными (ОбменДанными.Загрузка);
- вызывает прод_УправлениеСубконтоПродукция.УдалитьСубконтоПродукцияНаСчетах20();
- результат (счётчики обработанных и сбойных счетов) пишется в Журнал регистрации под приложением прод_ОтключитьПродукциюНа2001.
При установке константы в Ложь расширение бездействует — субконто не возвращается автоматически.
3. Удаление существующих записей субконто
Функция УдалитьСубконтоПродукцияНаСчетах20():
- запросом находит все счета в иерархии ОсновноеПроизводство_, у которых в ТЧ ВидыСубконто присутствует строка с видом Продукция;
- по каждому счёту в отдельной транзакции:
- получает объект счёта,
- удаляет из ТЧ ВидыСубконто строку с видом «Продукция»,
- записывает объект;
- каждое успешное удаление и каждую ошибку логирует в ЖурналРегистрации.
Использование per-row транзакций предохраняет — ошибка по одному счёту не откатывает успешно изменённые.
4. Блокировка повторного добавления
В модуле менеджера плана счетов «Хозрасчетный» определена штатная процедура ДобавитьСубконтоПродукция(), которая вызывается типовым механизмом обновления параметров счетов при смене учётной политики и при обновлении конфигурации. Расширение перехватывает её аннотацией &Вместо:
&Вместо("ДобавитьСубконтоПродукция")
Процедура прод_ДобавитьСубконтоПродукция()
Если прод_УправлениеСубконтоПродукция.ОтключенаПродукцияНаСчете2001() Тогда
Возврат; // блокируем
КонецЕсли;
ПродолжитьВызов();
КонецПроцедуры
Пока константа Истина — управление сразу возвращается, штатное тело не выполняется. При константе Ложь вызов проходит дальше штатной логикой.
5. Блокировка галки «Продукция» в учётной политике
Путь в интерфейсе: Главное → Учётная политика → Учёт затрат → ссылка «Затраты на счёте учитываются в разрезе…» (строка счёта 20.01). Откроется форма «Детализация учёта затрат» с набором флажков, среди них — «Продукция».
В заимствованной форме Справочник.НастройкиУчетаЗатрат.Форма.АналитикаСчета расширение аннотацией &После("ПриСозданииНаСервере") устанавливает у поля АналитикаПродукция свойство ТолькоПросмотр = Истина и подсказку, поясняющую причину блокировки. Если константа выключена — поле работает штатно.
Установка
- Поместить файл расширения Produkciya20_1.0.0.4.cfe в конфигуратор: Конфигурация → Расширения конфигурации → Загрузить расширение из файла…
- Обновить конфигурацию базы данных (F7 в режиме расширения).
- В режиме Предприятия открыть константу прод_ОтключитьПродукциюНаСчете20_01 (Все функции → Константы), установить флажок и нажать «Записать и закрыть». При наличии включённого учёта по продукции откроется диалог со списком организаций — для применения нажать «Да».
После записи константы:
- В Плане счетов у 20.01 (и подчинённых счетов группы ОсновноеПроизводство_) останется два субконто: «Номенклатурные группы» и «Статьи затрат».
- В Учётной политике → Учёт затрат галка «Продукция» в окне «Детализация учёта затрат» станет недоступной.
- В Журнале регистрации появятся записи приложения прод_ОтключитьПродукциюНа2001 с детализацией.
Что важно учесть перед включением
- Исторические проводки. Если в регистре РегистрБухгалтерии.Хозрасчетный уже есть движения, где заполнено поле СубконтоДт3/Кт3 со значением номенклатуры (на счетах группы 20.01), после удаления вида субконто эти значения «осиротеют»: данные в полях останутся, но описания вида у счёта больше не будет. Стандартные отчёты (ОСВ, карточка счёта) такие записи отображают неконсистентно. Рекомендуется: закрыть прошлые периоды для изменений, а в открытом периоде вручную перепровести или скорректировать соответствующие документы до включения константы.
- Снятие константы не возвращает субконто автоматически. При записи константы в Ложь расширение перестаёт удалять и блокировать, но строка ВидыСубконто = Продукция в плане счетов не появится сама. Чтобы вернуть штатное поведение, нужно либо вызвать ПланыСчетов.Хозрасчетный.ДобавитьСубконтоПродукция() из консоли, либо перепровести параметры учётной политики.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.202.14
Вступайте в нашу телеграмм-группу Инфостарт