При работе в 1С пользователи часто сталкиваются с автоматическим предложением системы установить периодичность для услуги при ее оформлении в документе «Поступление услуги». Это проявляется в виде всплывающего предупреждения «Возможно, это регулярная услуга», которое предлагает добавить к содержанию услуги текущий месяц. Мы понимаем, насколько это может отвлекать и создавать неудобства, особенно если услуга не является периодической. В данной статье мы подробно рассмотрим различные способы отключения этого предупреждения, начиная от программных модификаций и заканчивая пользовательскими настройками и обходными путями.
Давайте выясним, почему возникает данное предупреждение и как с ним эффективно бороться. Система 1С, в целях автоматизации и упрощения учета периодических услуг, анализирует содержание услуги. Если она обнаруживает в тексте содержание услуги название месяца или квартала, и дата документа совпадает с этим периодом, она считает такую услугу потенциально периодической и предлагает соответствующее действие. Это поведение прописано в коде конфигурации и стандартными средствами отключить его полностью, как правило, нельзя без определенных манипуляций.
Мы разберем несколько подходов, которые помогут нам избавиться от этого назойливого сообщения. Эти подходы включают программное вмешательство, изменение настроек в карточке номенклатуры и работу с константами, а также практические обходные маневры.
Один из самых радикальных и эффективных способов полного отключения данного предупреждения – это программное изменение кода конфигурации. Этот метод подойдет для программистов или пользователей с доступом к конфигуратору и навыками модификации кода.
Мы найдем процедуру, отвечающую за проверку и предложение периодичности, и внесем в нее изменения. Как правило, эта логика содержится в модулях, связанных с работой с номенклатурой и ее содержанием при изменении. В большинстве типовых конфигураций 1С, подобная логика расположена в процедуре СодержаниеПриИзменении модуля РаботаСНоменклатуройКлиент.
Шаги для программного отключения:
РаботаСНоменклатуройКлиент.СодержаниеПриИзменении.Возврат;.Это выглядит примерно так:
Процедура СодержаниеПриИзменении(ТекущиеДанные, Дата) Экспорт
//Блокируем определение периодичности нач
Возврат;
//Блокируем определение периодичности кон
Если НЕ ТекущиеДанные.Свойство("Номенклатура") ИЛИ НЕ ТекущиеДанные.Свойство("Содержание") ИЛИ НЕ ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) ИЛИ НЕ ЗначениеЗаполнено(ТекущиеДанные.Содержание) Тогда
Возврат;
КонецЕсли;
// ... дальнейший код проверки периодичности, который теперь не будет выполняться
КонецПроцедуры;
Важные моменты:
Многие современные конфигурации 1С, начиная с определенных релизов (например, "Бухгалтерия предприятия" ред. 3.0 с релиза 3.0.45), предоставляют возможность управления периодичностью услуги непосредственно в карточке номенклатуры. Это позволяет нам явно указать, что данная услуга не является периодической, и тем самым предотвратить появление предупреждения для конкретной номенклатуры.
Мы обратимся к справочнику «Номенклатура» и рассмотрим поле «Периодичность услуги». Это поле имеет несколько возможных значений:
Шаги для настройки периодичности номенклатуры:
Важное уточнение: В исходной теме было отмечено, что система *предлагает* установить данный реквизит в отличное от «Нет» значение, когда появляется предупреждение. То есть, само предупреждение может появляться, даже если реквизит уже установлен в «Нет» для других целей, но система все равно пытается его изменить на основе содержимого. Однако, если мы хотим полностью избежать предложения, мы должны убедиться, что для этой номенклатуры не возникает ситуации, когда содержание услуги содержит название месяца, соответствующее дате документа, и при этом периодичность не установлена.
Это является частью механизма, который мы рассмотрим далее при обсуждении константы.
В системе 1С существует специальная константа под названием «Использовать периодичность услуг». Эта константа является своего рода глобальным флагом, который включает или выключает механизм определения периодичности услуг в целом. Мы можем подумать, что простое отключение этой константы решит нашу проблему, но здесь есть свои нюансы.
Где найти константу:
Константа ИспользоватьПериодичностьУслуг обычно находится в разделе «Администрирование» -> «Настройки программы» или непосредственно в справочнике «Константы» (доступен через «Все функции» или конфигуратор).
Поведение константы:
Мы выясним, что поведение этой константы не так прямолинейно, как может показаться. Согласно обсуждению, если мы устанавливаем значение константы в «Ложь» (т.е., отключаем использование периодичности услуг), но при этом в справочнике «Номенклатура» существует хотя бы один элемент, у которого реквизит «Периодичность услуги» установлен в значение, отличное от «Нет» (например, «Месяц», «Квартал» или «Год»), то система автоматически изменит константу «Использовать периодичность услуг» обратно на «Истина».
Это означает, что для полного и стабильного отключения механизма через константу, нам необходимо убедиться, что:
ИспользоватьПериодичностьУслуг в «Ложь».Только в этом случае мы добьемся того, что константа останется в состоянии «Ложь» и система не будет активно предлагать устанавливать периодичность для услуг, даже если в их содержании присутствует название месяца.
Если мы не хотим прибегать к программным изменениям или глубоким настройкам, есть простой пользовательский обходной путь, который поможет избежать появления предупреждения. Этот метод основан на понимании того, как система определяет совпадение месяца.
Метод обхода путем изменения порядка действий:
Суть в том, чтобы ввести информацию таким образом, чтобы на момент проверки содержание услуги не совпадало с датой документа по месяцу. Мы можем сделать следующее:
Например, если мы оформляем услугу за январь, но текущая дата документа — февраль. Если мы сначала укажем «Услуги за январь», а потом поменяем дату документа на январь, то предупреждение может сработать. Если же мы сначала установим дату, а потом напишем «Услуги за январь», а система по какой-то причине не сопоставит, это может сработать.
Уточнение формата месяца в содержании услуги:
Чтобы программа не предлагала автоматически назначить услугу периодической, мы также можем указывать название месяца в содержании услуги не словом, а цифрой. Например, вместо «январь» — «01». Система 1С, скорее всего, настроена на распознавание текстовых названий месяцев, но менее вероятно на цифры. Таким образом, мы можем изменить текст содержания услуги на «Услуги за 01.2024» вместо «Услуги за Январь 2024».
Этот подход требует небольшой дисциплины при заполнении документов, но не требует никаких изменений в конфигурации.
В некоторых случаях, если стандартное поле «Периодичность услуги» не удовлетворяет нашим требованиям или отсутствует в конфигурации, мы можем рассмотреть использование дополнительных реквизитов и сведений номенклатуры. Этот метод не отключает предупреждение напрямую, но предоставляет гибкий способ организации информации о периодичности услуг без программирования.
Мы можем создать дополнительный реквизит для справочника «Номенклатура», например, «Вид периодичности», и добавить в него нужные значения: «Ежемесячно», «Раз в квартал», «Ежегодно», «Непериодическая». Затем мы можем заполнять это поле для каждой услуги. Однако, стоит отметить, что такие данные могут не использоваться для автоматического формирования документов или подавления стандартных предупреждений без дополнительной программной доработки.
Для более продвинутой и гибкой организации учета периодичности мы можем создать собственный справочник «Периодичность» со всеми необходимыми вариантами (Ежедневно, Еженедельно, Ежемесячно, Ежеквартально, Ежегодно, Непериодическая). Затем мы можем привязать этот справочник к номенклатуре через дополнительный реквизит или реквизит номенклатуры, если это предусмотрено доработкой конфигурации. Это даст нам полный контроль над классификацией услуг по периодичности, но, опять же, для интеграции с механизмом формирования документов или отключения стандартных предупреждений потребуется программная доработка.
В заключение, мы рассмотрели различные подходы к решению проблемы назойливого предупреждения «Возможно, это регулярная услуга» в 1С. Выбор конкретного метода зависит от наших задач, уровня доступа к конфигурации и готовности к программным изменениям. Если требуется полное и окончательное отключение, программный метод будет наиболее эффективен. Для пользователей, предпочитающих работать без вмешательства в код, подойдут настройки в карточке номенклатуры (если она не конфликтует с константой) или обходные пути. Надеемся, что эти решения помогут нам значительно улучшить удобство работы с 1С.