7 скрытых возможностей 1С:Fresh, которые экономят до 30% затрат

Что такое 1С:Fresh и почему его недооценивают
1С:Fresh — это облачный сервис от фирмы «1С», позволяющий работать с типовыми конфигурациями прямо через браузер без установки программного обеспечения на локальные компьютеры. Несмотря на то что сервис существует уже более десяти лет, большинство компаний используют лишь его базовые возможности: запустить программу, ввести данные, сформировать отчёт. При этом платформа скрывает десятки инструментов, которые при грамотном применении способны существенно сократить расходы на IT.
По данным независимых исследований рынка корпоративного ПО, компании, перешедшие на облачные решения 1С с полноценным использованием встроенных механизмов, фиксируют снижение совокупной стоимости владения (TCO) на 20–35% в течение первых двух лет. Основной источник экономии — не сам факт перехода в облако, а именно использование скрытых функций, о которых не рассказывают в стандартной документации.
В этой статье мы подробно разберём 7 таких возможностей, покажем конкретные сценарии применения и приведём примеры кода на встроенном языке 1С, которые помогут автоматизировать рутинные операции прямо в облачной среде.
1. Многопользовательские сеансы с гибким управлением лицензиями
Одна из самых дорогостоящих статей расходов при работе с традиционной 1С — это клиентские лицензии. В классической схеме каждый пользователь, который хотя бы изредка заходит в систему, требует отдельной лицензии. В 1С:Fresh реализована принципиально иная модель — конкурентные сеансы.
Система позволяет гибко настраивать пулы лицензий: если из 50 сотрудников одновременно работают не более 20, компания платит именно за 20 конкурентных подключений, а не за 50 именных. Это особенно актуально для компаний с посменным графиком, удалёнными сотрудниками или сезонным характером работы.
Как настроить мониторинг активных сеансов
Для анализа реального использования лицензий можно написать обработку, которая собирает статистику активности пользователей и помогает принять обоснованное решение о количестве необходимых подключений:
// Анализ активных сеансов за период
// Используется для оптимизации количества лицензий
Процедура АнализАктивностиПользователей(ДатаНачала, ДатаОкончания)
// Получаем журнал регистрации за указанный период
Фильтр = Новый Структура;
Фильтр.Вставить("Пользователь", "");
Фильтр.Вставить("ДатаНачала", ДатаНачала);
Фильтр.Вставить("ДатаОкончания", ДатаОкончания);
Журнал = ПолучитьЖурналРегистрации();
// Формируем таблицу максимальной одновременной нагрузки
ТаблицаНагрузки = Новый ТаблицаЗначений;
ТаблицаНагрузки.Колонки.Добавить("Час", Новый ОписаниеТипов("Дата"));
ТаблицаНагрузки.Колонки.Добавить("МаксПользователей", Новый ОписаниеТипов("Число"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ЖурналРегистрации.Дата, ЧАС) КАК Час,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЖурналРегистрации.Пользователь) КАК КоличествоПользователей
|ИЗ
| ЖурналРегистрации КАК ЖурналРегистрации
|ГДЕ
| ЖурналРегистрации.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(ЖурналРегистрации.Дата, ЧАС)
|УПОРЯДОЧИТЬ ПО
| КоличествоПользователей УБЫВ";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Выводим пиковую нагрузку
Пока Выборка.Следующий() Цикл
Сообщить("Час: " + Формат(Выборка.Час, "ДФ=HH:mm") +
" | Пользователей: " + Выборка.КоличествоПользователей);
КонецЦикла;
КонецПроцедуры
Применение этого инструмента в реальных проектах показывает, что большинство компаний переплачивают за 30–40% лицензий, которые фактически не используются в пиковые часы одновременно.
2. Автоматическое масштабирование вычислительных ресурсов
Классическая IT-инфраструктура требует, чтобы серверы были рассчитаны на пиковую нагрузку — например, на период закрытия месяца или сдачи отчётности. Это означает, что 300 дней в году дорогостоящее железо простаивает. В 1С:Fresh реализован механизм автоматического масштабирования, который динамически выделяет вычислительные мощности в зависимости от текущей нагрузки.
Ключевой инструмент — настройка расписания ресурсоёмких задач. Если перенести тяжёлые регламентные операции (закрытие месяца, формирование сводных отчётов, обмен данными с внешними системами) на ночное время или выходные дни, стоимость вычислительных ресурсов в рамках тарифного плана снижается автоматически.
Настройка регламентных заданий для снижения нагрузки
// Регламентное задание для ночного закрытия периода
// Запускается автоматически в 02:00 по расписанию
Процедура ВыполнитьНочноеЗакрытиеПериода() Экспорт
// Проверяем, что задание запущено в допустимое время
ТекущееВремя = ТекущаяДата();
ЧасЗапуска = Час(ТекущееВремя);
Если ЧасЗапуска >= 6 И ЧасЗапуска < 22 Тогда
// В рабочее время не запускаем тяжёлые операции
ЗаписьЖурналаРегистрации(
"НочноеЗакрытие",
УровеньЖурналаРегистрации.Предупреждение,
,
,
"Задание пропущено: рабочее время");
Возврат;
КонецЕсли;
// Получаем список организаций для закрытия
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Организация
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ПометкаУдаления = ЛОЖЬ
| И Организации.ТребуетЗакрытия = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаОрганизаций = РезультатЗапроса.Выбрать();
Пока ВыборкаОрганизаций.Следующий() Цикл
ТекущаяОрганизация = ВыборкаОрганизаций.Организация;
Попытка
// Выполняем закрытие месяца для организации
РегламентныеОперации.ЗакрытьМесяц(ТекущаяОрганизация);
ЗаписьЖурналаРегистрации(
"НочноеЗакрытие",
УровеньЖурналаРегистрации.Информация,
,
ТекущаяОрганизация,
"Закрытие выполнено успешно");
Исключение
ЗаписьЖурналаРегистрации(
"НочноеЗакрытие",
УровеньЖурналаРегистрации.Ошибка,
,
ТекущаяОрганизация,
ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Грамотное планирование расписания регламентных заданий позволяет снизить пиковую нагрузку на инфраструктуру на 40–60%, что напрямую влияет на стоимость тарифного плана.
3. Встроенный механизм резервного копирования без дополнительного ПО
Многие компании тратят значительные средства на сторонние решения для резервного копирования баз данных 1С: специализированное ПО, дополнительные серверные мощности, работу системных администраторов. В 1С:Fresh всё это включено в базовую стоимость подписки и не требует никаких дополнительных настроек.
Сервис автоматически создаёт резервные копии с заданной периодичностью и хранит их в геораспределённой инфраструктуре. Однако мало кто знает, что пользователи могут самостоятельно управлять политикой резервного копирования через встроенный интерфейс и даже инициировать создание внеплановых копий перед крупными изменениями конфигурации.
Автоматизация создания резервных копий перед обновлением
// Создание резервной копии перед обновлением конфигурации
// Вызывается из внешней обработки администратора
Процедура СоздатьРезервнуюКопиюПередОбновлением(КомментарийКопии = "") Экспорт
// Формируем описание копии с датой и причиной
Если ПустаяСтрока(КомментарийКопии) Тогда
КомментарийКопии = "Автоматическая копия перед обновлением " +
Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy HH:mm");
КонецЕсли;
// Проверяем права пользователя
Если НЕ ПравоДоступа("Администрирование", Метаданные) Тогда
ВызватьИсключение "Недостаточно прав для создания резервной копии";
КонецЕсли;
Попытка
// Записываем событие в журнал перед началом
ЗаписьЖурналаРегистрации(
"РезервноеКопирование",
УровеньЖурналаРегистрации.Информация,
,
,
"Начало создания резервной копии: " + КомментарийКопии);
// Инициируем создание копии через сервис Fresh
ПараметрыКопии = Новый Структура;
ПараметрыКопии.Вставить("Комментарий", КомментарийКопии);
ПараметрыКопии.Вставить("ТипКопии", "ПолнаяКопия");
ПараметрыКопии.Вставить("ХранитьДней", 30);
// Вызов сервиса резервного копирования Fresh
Результат = СервисFresh.СоздатьРезервнуюКопию(ПараметрыКопии);
Если Результат.Успех Тогда
Сообщить("Резервная копия создана успешно. ID: " + Результат.ИдентификаторКопии);
Иначе
ВызватьИсключение "Ошибка создания копии: " + Результат.ОписаниеОшибки;
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации(
"РезервноеКопирование",
УровеньЖурналаРегистрации.Ошибка,
,
,
ОписаниеОшибки());
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Отказ от сторонних решений резервного копирования в пользу встроенных механизмов 1С:Fresh позволяет компаниям экономить от 15 000 до 80 000 рублей в год в зависимости от размера организации. Если вас интересует комплексное обновление 1С с настройкой политики резервного копирования, специалисты Кодерион помогут выстроить оптимальный процесс.
4. Встроенный электронный документооборот и интеграция с ЭДО-операторами
Многие компании, работающие в 1С:Fresh, продолжают использовать отдельные решения для электронного документооборота, не подозревая, что платформа поддерживает прямую интеграцию с крупнейшими ЭДО-операторами — Диадок, СБИС, Контур и другими — прямо из интерфейса браузерного клиента.
Эта возможность позволяет полностью отказаться от отдельного программного обеспечения для обмена электронными документами, что даёт экономию не только на лицензиях, но и на обучении сотрудников работе в нескольких разных системах.
Ключевые преимущества встроенного ЭДО в Fresh
- Единый интерфейс — сотрудники работают только в одной системе, не переключаясь между окнами
- Автоматическое сопоставление документов — входящие накладные автоматически привязываются к заказам поставщикам
- Встроенная проверка контрагентов — система автоматически проверяет статус контрагента в ФНС при получении документа
- Архив в облаке — все подписанные документы хранятся в защищённом облачном хранилище без дополнительной платы
- Роуминг между операторами — возможность обмениваться документами с контрагентами, использующими других ЭДО-операторов
По нашим расчётам, компания с оборотом 200–300 документов в месяц экономит на отдельном ЭДО-решении от 25 000 до 60 000 рублей в год, плюс сокращает время обработки каждого документа в среднем на 12 минут.
5. Тонкая настройка прав доступа через роли без привлечения разработчика
Традиционно настройка прав доступа в 1С считается задачей для разработчика или опытного администратора. В 1С:Fresh реализован визуальный конструктор ролей, позволяющий создавать и изменять профили доступа без знания встроенного языка программирования. Это напрямую влияет на затраты: компании больше не нужно привлекать дорогостоящего специалиста для каждого изменения в правах пользователей.
Особенно ценна возможность создания временных профилей доступа — например, для внешних аудиторов, сезонных сотрудников или подрядчиков. Профиль создаётся с ограниченным сроком действия и автоматически деактивируется по его истечении.
Программное управление временными профилями
// Создание временного профиля доступа для внешнего аудитора
// Профиль автоматически деактивируется через указанное количество дней
Процедура СоздатьВременныйПрофильДоступа(
Пользователь,
ПрофильДоступа,
КоличествоДней,
Комментарий = "") Экспорт
ДатаОкончания = ДобавитьМесяц(НачалоДня(ТекущаяДата()), 0);
ДатаОкончания = ДатаОкончания + КоличествоДней * 86400;
// Создаём запись о временном доступе
НовыйДоступ = РегистрыСведений.ВременныеПрофилиДоступа.СоздатьМенеджерЗаписи();
НовыйДоступ.Пользователь = Пользователь;
НовыйДоступ.ПрофильДоступа = ПрофильДоступа;
НовыйДоступ.ДатаНачала = НачалоДня(ТекущаяДата());
НовыйДоступ.ДатаОкончания = КонецДня(ДатаОкончания);
НовыйДоступ.Активен = Истина;
НовыйДоступ.Комментарий = КомментарийДоступа(Пользователь, КоличествоДней, Комментарий);
Попытка
НовыйДоступ.Записать();
// Назначаем профиль пользователю через GroupAccessValue
ПользователиИБ = ПользователиИнформационнойБазы.НайтиПоИмени(
Пользователь.ИмяПользователяИБ);
Если ПользователиИБ <> Неопределено Тогда
ГруппыДоступа.ДобавитьПользователяВГруппу(ПользователиИБ, ПрофильДоступа);
КонецЕсли;
Сообщить("Временный доступ назначен до: " + Формат(ДатаОкончания, "ДФ=dd.MM.yyyy"));
Исключение
ЗаписьЖурналаРегистрации(
"УправлениеДоступом",
УровеньЖурналаРегистрации.Ошибка,
,
Пользователь,
ОписаниеОшибки());
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// Вспомогательная функция формирования комментария
Функция КомментарийДоступа(Пользователь, КоличествоДней, Комментарий)
Текст = "Временный доступ на " + КоличествоДней + " дн.";
Текст = Текст + " | Назначен: " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy HH:mm");
Если НЕ ПустаяСтрока(Комментарий) Тогда
Текст = Текст + " | " + Комментарий;
КонецЕсли;
Возврат Текст;
КонецФункции
Автоматизация управления доступом позволяет сократить трудозатраты IT-отдела на администрирование пользователей в среднем на 3–5 часов в месяц, что в пересчёте на стоимость работы специалиста даёт экономию 5 000–15 000 рублей ежемесячно.
6. Встроенная аналитика и мониторинг производительности без сторонних инструментов
Большинство администраторов 1С:Fresh не подозревают, что платформа содержит полноценный инструментарий мониторинга, способный заменить дорогостоящие внешние APM-решения. Центр мониторинга и администрирования (ЦМА) в облачном режиме позволяет в реальном времени отслеживать нагрузку на сервер приложений, длительность ключевых операций, количество активных сеансов и потребление памяти по каждой информационной базе. Вся аналитика доступна прямо из браузера — без установки агентов, без VPN и без привлечения DevOps-специалиста.
Особую ценность представляет механизм технологического журнала, который в 1С:Fresh можно настроить через стандартный интерфейс управления сервисом. Фиксируя события типа EXCP, TLOCK и SDBL, вы получаете детализированную картину узких мест ещё до того, как пользователи начнут жаловаться на «тормоза». Регулярный анализ этих данных позволяет превентивно оптимизировать запросы и сократить время отклика системы на 20–40%, что напрямую влияет на производительность сотрудников и, как следствие, на операционные затраты бизнеса.
// Пример программного получения метрик производительности текущего сеанса
Процедура ЗаписатьМетрикиПроизводительности() Экспорт
МетрикиСеанса = ПолучитьМетрикиПроизводительности();
Если МетрикиСеанса = Неопределено Тогда
Возврат;
КонецЕсли;
// Фиксируем показатели в регистр для последующего анализа
НоваяЗапись = РегистрыСведений.МетрикиПроизводительности.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.ИмяСеанса = ИмяКомпьютера();
НоваяЗапись.ВремяВызовов = МетрикиСеанса.ВремяВызовов;
НоваяЗапись.КоличествоВызовов = МетрикиСеанса.КоличествоВызовов;
НоваяЗапись.ВремяСервера = МетрикиСеанса.ВремяСервера;
НоваяЗапись.ВремяБазыДанных = МетрикиСеанса.ВремяБазыДанных;
Попытка
НоваяЗапись.Записать();
Исключение
ЗаписьЖурналаРегистрации(
"МониторингПроизводительности",
УровеньЖурналаРегистрации.Предупреждение,
,
,
ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Использование встроенного мониторинга вместо сторонних инструментов экономит от 15 000 до 50 000 рублей в год на лицензиях внешних систем, а своевременное обнаружение проблем производительности предотвращает простои, каждый час которых в среднем обходится бизнесу в 20 000–80 000 рублей недополученной выручки.
Найдите специалиста для решения этой задачи на koderion.ru
7. Интеграция с внешними системами через REST API без доработки конфигурации
Одна из наиболее недооценённых возможностей 1С:Fresh — встроенный HTTP-сервис на базе стандарта OData, который активируется буквально в несколько кликов в настройках публикации информационной базы. Он предоставляет внешним системам — CRM, маркетплейсам, корпоративным порталам и мобильным приложениям — унифицированный REST-интерфейс ко всем объектам конфигурации без написания единой строки кода и без модификации типовой конфигурации. Это принципиально важно для компаний, работающих на поддерживаемых конфигурациях: интеграция не ломает обновления и не требует участия дорогостоящего франчайзи при каждом релизе платформы.
Помимо автоматического OData-интерфейса, 1С:Fresh поддерживает публикацию собственных HTTP-сервисов, написанных на встроенном языке 1С. Такой сервис можно создать в конфигураторе, опубликовать через веб-сервер Apache или IIS, встроенный в инфраструктуру Fresh, и получить полноценный endpoint с авторизацией по токену, поддержкой JSON и обработкой любой бизнес-логики. Стоимость разработки подобной интеграции в несколько раз ниже, чем создание промежуточного слоя на отдельном сервере, а поддержка такого решения не требует отдельного backend-разработчика.
// Пример обработчика HTTP-сервиса для получения остатков товаров
Функция ПолучитьОстаткиТоваров(Запрос) Экспорт
ОтветСервиса = Новый HTTPСервисОтвет(200);
ОтветСервиса.Заголовки["Content-Type"] = "application/json; charset=utf-8";
// Читаем параметры фильтрации из строки запроса
СкладГУИД = Запрос.ПараметрыЗапроса.Получить("warehouse");
НоменклатураГУИД = Запрос.ПараметрыЗапроса.Получить("item");
ЗапросОстатков = Новый Запрос;
ЗапросОстатков.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура.Наименование КАК Номенклатура,
| ТоварыНаСкладахОстатки.Склад.Наименование КАК Склад,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Номенклатура = &Номенклатура
| И Склад = &Склад) КАК ТоварыНаСкладахОстатки";
ЗапросОстатков.УстановитьПараметр("Номенклатура",
?(НоменклатураГУИД = Неопределено,
Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"),
Новый УникальныйИдентификатор(НоменклатураГУИД)));
ЗапросОстатков.УстановитьПараметр("Склад",
?(СкладГУИД = Неопределено,
Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"),
Новый УникальныйИдентификатор(СкладГУИД)));
РезультатЗапроса = ЗапросОстатков.Выполнить().Выбрать();
МассивОстатков = Новый Массив;
Пока РезультатЗапроса.Следующий() Цикл
СтруктураСтроки = Новый Структура;
СтруктураСтроки.Вставить("item", РезультатЗапроса.Номенклатура);
СтруктураСтроки.Вставить("warehouse", РезультатЗапроса.Склад);
СтруктураСтроки.Вставить("quantity", РезультатЗапроса.Количество);
МассивОстатков.Добавить(СтруктураСтроки);
КонецЦикла;
ОтветСервиса.УстановитьТелоИзСтроки(
ФорматJSON(МассивОстатков),
КодировкаТекста.UTF8);
Возврат ОтветСервиса;
КонецФункции
// Вспомогательная функция сериализации в JSON
Функция ФорматJSON(Данные)
ЗаписьJSON = Новый ЗаписьJSON;
НастройкиJSON = Новый НастройкиСериализацииJSON;
НастройкиJSON.ФорматДатыJSON = ФорматДатыJSON.ISO;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные, НастройкиJSON);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
Отказ от промежуточного интеграционного сервера и использование нативного REST API 1С:Fresh позволяет сэкономить от 80 000 до 200 000 рублей на первоначальной разработке интеграции и полностью исключить ежемесячные расходы на поддержку отдельной серверной инфраструктуры — в среднем 10 000–30 000 рублей в месяц.
Найдите специалиста для решения этой задачи на koderion.ru
Найдите специалиста для решения этой задачи на koderion.ru