Монитор операций закрытия месяца для УТ/КА/УП, или как правильно создать нетривиальное расширение

25.11.21

Задачи пользователя - Закрытие периода

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Монитор операций закрытия месяца для УТ/КА/УП поколения *.4.5.* или выше
.cfe 19,85Kb ver:1.0.1.3
51
51 Скачать (1 SM) Купить за 1 850 руб.

Разбор примера правильной разработки расширения с отчетом.

Немножко ссылок:

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

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

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

  1. Для решения одной задачи создавайте одно расширение. Конкретно с монитором - одна задача, один отчет, одно расширение. Это позволит после обновления конфигурации сохранить активными все расширения, которые остались совместимыми, и, сразу увидеть те расширения, над которыми надо поработать.
  2. Всегда добавляйте зависимости. Отмечайте все свойства, которые используются в вашем коде расширения. Например, в мониторе, для получения состояния закрытия месяца используется программный интерфейс общего модуля ЗакрытиеМесяцаСервер, это значит, что этот модуль должен быть в зависимостях. Открывается форма по умолчанию обработки ОперацииЗакрытияМесяца - значит и обработку в зависимости. Выполняется запрос к перечислению ОперацииЗакрытияМесяца (для получения всех доступных операций закрытия месяца) - перечисление тоже в зависимости.
  3. Не надо в зависимости добавлять все, что только можно. Все что не используется в вашем коде расширения должно быть исключено из зависимостей, например в мониторе добавлены в зависимости конкретные значения перечисления СостоянияОперацийЗакрытияМесяца вместо всех значений, потому что для логики расчета состояний другие состояния не нужны. Такой подход позволит не отламывать расширение понапрасну при обновлении конфигурации.
  4. Старайтесь описывать какой именно программный интерфейс вы используете. Никогда не используйте то, что не является программным интерфейсом. Это позволит обновляться на исправительные версии конфигураций (изменена только 4ая цифра) и на минорные версии конфигураций (изменена 3я цифра) без нарушения обратной совместимости. Все конфигурации сохраняют обратную совместимость в рамках первых двух цифр версии, но только для программного интерфейса. В рамках изменения третьей цифры версии используемый вами программный интерфейс может быть признан устаревшим, но удален он будет только при обновлении на версию с изменением 2ой цифры. Например вы в версии 1.0.1.1 используете какой-то метод, можете свободно обновить на версию 1.0.1.235, почти безболезненно на версию 1.0.45.24 (лучше всего проверить а не стало ли что-то устаревшим), но при обновлении на версию 1.1.1.1 надо срочно проверять все ли работает. Для того, чтобы быстро находить что надо проверить на устаревание я всегда добавляю комментарий  // @Импорт и далее описываю что я использовал. Смотрите пример в расширенном модуле ОтчетыКлиентПереопределяемый.

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

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

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

Функция ЗначениеПараметраСКД(ИмяПараметра)
	
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	ПараметрКомпоновки = Настройки.ПараметрыДанных.Элементы.Найти(
		Новый ПараметрКомпоновкиДанных(ИмяПараметра));
	Возврат ПараметрКомпоновки.Значение;
	
КонецФункции

Если ЗначениеПараметраСКД("СкрытьУспешноЗакрытыеМесяцы") = Истина Тогда // Если параметра нет - Неопределено.

Для того, чтобы подсистема БСП вариантов отчета увидела отчет из расширения надо расширить подсистему ПодключаемыеОтчетыИОбработки конфигурации и включить в нее отчет.

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

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ПодключаемыеОтчетыИОбработки

// (См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииСоставаНастроекПодключаемыхОбъектов)
Процедура ПриОпределенииНастроек(Настройки) Экспорт
	
	Настройки.НастроитьВариантыОтчета = Истина;
	Настройки.ДобавитьКомандыОтчетов = Истина;
	Настройки.ОпределитьНастройкиФормы = Истина;
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ПодключаемыеОтчетыИОбработки

// СтандартныеПодсистемы.ВариантыОтчетов

// (См. ВариантыОтчетовПереопределяемый.ОпределитьОбъектыСКомандамиОтчетов)
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	Команда = КомандыОтчетов.Добавить();
	Команда.Представление = НСтр("ru = 'Монитор операций закрытия месяца'");
	Команда.КлючВарианта  = "Основной";
	
КонецПроцедуры

// (См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов)
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
	
	НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
	НастройкиОтчета.Размещение.Вставить(Метаданные.Подсистемы.ФинансовыйРезультатИКонтроллинг.Подсистемы.ЗакрытиеМесяца);
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Основной");
	НастройкиВарианта.Описание = 
		НСтр("ru = 'Контроль операций закрытия месяца по разным этапам с начала ведения учета в программе.
		           |Позволяет найти проблемный месяц и проблемный этап закрытия и перейти к закрытию месяца.'");
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ВариантыОтчетов

#КонецОбласти

#КонецОбласти

#КонецЕсли

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

Старайтесь изолировать работу с базой данных от работы с логикой расчета. Для разработки расширений это наиболее актуально, ведь чем меньше будет точек соприкосновения с конфигурацией, тем проще будет адаптироваться к новой версии. Например, модель данных ИБ в мониторе:

#Область МодельДанныхИБ

Функция ВсеОперацииЗакрытияМесяца()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОперацииЗакрытияМесяца.Ссылка КАК Ссылка
		|ИЗ
		|	Перечисление.ОперацииЗакрытияМесяца КАК ОперацииЗакрытияМесяца";
	
	Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	
КонецФункции

Функция СостояниеЭтаповЗакрытияМесяца(ОперацииЗакрытияМесяца, Период)
	
	Возврат ЗакрытиеМесяцаСервер.ОпределитьСостояниеЭтаповРасчета(ОперацииЗакрытияМесяца, Период);
	
КонецФункции

Функция СостояниеИспользуется(Значение)
	
	Возврат Значение <> Перечисления.СостоянияОперацийЗакрытияМесяца.НеТребуется;
	
КонецФункции

Функция СостояниеУспешно(Значение)
	
	Возврат Значение <> Перечисления.СостоянияОперацийЗакрытияМесяца.НеТребуется
		И Значение <> Перечисления.СостоянияОперацийЗакрытияМесяца.ВыполненоУспешно
	
КонецФункции

Функция ОперацияЗакрытияЗависитОтМесяца(Значение)
	
	Возврат Значение <> Перечисления.ОперацииЗакрытияМесяца.ИсправлениеДублейВидовЗапасов;
	
КонецФункции

#КонецОбласти

Внимание, расширение работает с конфигурациями УТ/КА/УП поколения *.4.5.* или выше.

Проверено на демобазах УТ 11.4.5 и УП 2.4.5.

MIT License https://github.com/axioma-project/MonthEndClosingMonitor

Монитор операция закрытие месяца разработка расширение правильно просто удобно обратная совместимость стандарты

См. также

Анализ учета Закрытие периода Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Налог на прибыль НДС Платные (руб)

Каждый бухгалтер не раз сталкивался с требованием от налоговой инспекции пояснить расхождения в показателях декларации по Налогу на прибыль («Доходы от реализации» + «Внереализационные доходы») и налоговой базой по НДС за год. Являются ли ошибкой подобные расхождения? Как пояснить налоговой их причину? Отчет «Анализ расхождений выручки НДС и Налога на прибыль в декларациях» для 1С (БП 3.0 ПРОФ и КОРП, КА 2, ЕRP) поможет найти все расхождения.

7200 руб.

21.10.2017    87894    320    172    

288

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    32667    106    152    

73

Закрытие периода Оптовая торговля Розничная торговля Кассовые операции Учет доходов и расходов Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:CRM ПРОФ, КОРП Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Гостиничный бизнес Пищевая промышленность Россия Бухгалтерский учет Налоговый учет ЕНВД ЕСХН ИП, ПБОЮЛ, КФХ Налог на прибыль НДС УСН Платные (руб)

Внешняя обработка для ведения в электронной форме КУДиР в 1С - книги учёта доходов и расходов для предприятий на УСН, ПСН, ЕСХН. Заполнение раздела 1 - "доходы и расходы" из журнала документов вашей ИБ (любой конфигурации 1С:Предприятие 8). Формирование отчета Кассовая книга КО-4 по данным раздела 1.

7788 руб.

15.03.2016    116983    288    157    

278

Закрытие периода Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Закрытие месяца в конфигурации 1С:Управлении нашей фирмой — это очень важная задача, которую необходимо выполнять на постоянной основе. Однако, как зачастую бывает, важные и регулярные задачи могут быть упущены из виду. В связи с этим, нами было разработано решение для автоматического закрытия месяца в 1С:УНФ для оптимизации данного процесса.

3600 руб.

30.09.2022    8032    18    0    

18

Закрытие периода Бухгалтер Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

В современных конфигурациях УТ 11, КА 2, ERP 2 и их аналогах присутствует механизм закрытия периода. Но при ошибках учета закрыть период корректно становится практически невозможно! Давайте попробуем разобраться, как можно устранить ошибки и закрыть корректно месяц!

18000 руб.

20.03.2018    74109    274    76    

301

Закрытие периода Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Бухгалтер Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Менеджер забывает перемещать товар между складами, а в УТ отключен контроль остатков ? Бухгалтер готов застрелиться при закрытии месяца и выравнивании отрицательных остатков по складам и фирмам ? Используй автоматическое перемещение товаров между складами и организациями для 1С УТ 11.

5000 руб.

30.05.2019    29234    32    10    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ninch 51 11.05.21 12:43 Сейчас в теме
Добрый день.
1. конфигурация 1С:ERP Управление предприятием 2 (2.4.13.156) не выводится отчет в меню. Я правильно понимаю - он должен появиться в финансовом контролинге в меню закрытие месяца?
2. Можно ли задать отбор по организации, так чтобы либо по всем был отчет либо с разворотом по выбранным организациям?
спасибо
2. zeegin 117 29.09.21 11:35 Сейчас в теме
(1)

1. Отчет в группе финансого контроллинга.
2. В текущей реализации такого разреза нет. https://github.com/axioma-project/MonthEndClosingMonitor/issues/4
3. stepan_shock 112 05.07.23 10:07 Сейчас в теме
Здравствуйте. Поддержка данного продукта еще осуществляется?
4. zeegin 117 05.07.23 10:10 Сейчас в теме
(3) Продукт в опен соурсе.
Оставьте свое сообщение