Библиотека A1s: облегчение повседневной разработки в 1С
1. Введение
Библиотека A1s — это утилитарный набор модулей для разработки на платформе 1С:Предприятие с поддержкой как серверного, так и клиентского исполнения. Она создана для того, чтобы упростить и сократить код в типовых задачах: запросы, логирование, сериализация, работа со строками.
A1s не зависит от БСП, может быть включена в состав конфигурации как в виде отдельных общих модулей, так и целиком как набор модулей. Допускает использование как на сервере, так и на клиенте (для модулей A1sS, A1sChars, A1sJ, A1sX).
Библиотека подходит как для внутренних проектов, так и для open source-решений, где важна читаемость и чистота кода.
Что позволяет достичь использование A1s
-
Сократить количество кода в типовых сценариях (запросы, логирование, сериализация)
-
Сделать код читаемым и однообразным во всех модулях проекта
-
Упростить поддержку и ревью — в том числе за счёт тестов и doc-комментариев
-
Быстро выполнять локальную или CI-проверку стабильности после изменений
-
Повысить переиспользуемость логики без привязки к БСП
2. Состав библиотеки
Модуль |
Назначение |
---|---|
A1sQ |
Упрощённая работа с запросами (QT + Unload) |
A1sS |
Строковые утилиты (AsString, Split, Print) |
A1sLog |
Централизованное логирование (Info, Error, Warn) |
A1sJ |
JSON-сериализация (ToJSON, FromJSON) |
A1sX |
XML-сериализация (ToXML, FromXML) |
A1sChars |
Проверки символов, поиск по алфавиту, утилиты по строкам |
Модули работы с метаданными (A1sMC, A1sMD, A1sME) — в разработке и будут добавлены в следующих версиях.
3. Примеры использования
A. Запрос без ручного создания объекта и параметров
QT = "ВЫБРАТЬ Номенклатура ИЗ Справочник.Номенклатура ГДЕ ПометкаУдаления = &Флаг";
data = A1sQ.Unload(QT, Ложь);
B. Логирование события
A1sLog.Warn("Превышен лимит", Комментарий);
C. JSON-сериализация
строка = A1sJ.ToJSON(Структура);
D. Работа со строками
A1sS.Print("Документ записан: " + Ссылка);
Оптимизация реального кода из типовой
В конфигурации 1С:Бухгалтерия выбираю первый попавшийся запрос.
Он вытаскивает задачи исполнителей, связанные с бизнес-процессом. И прошу ИИ-помощника по библиотеке переписать код с использованием A1s и ее стандартов кода.
🚫 До (типовой 1С-код)
Запрос = Новый Запрос( "ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
|ГДЕ
| Задачи.БизнесПроцесс = &БизнесПроцесс");
Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка);
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Минусы:
-
Повторяемый шаблон:
Новый Запрос
,УстановитьПараметр
,Выполнить().Выбрать()
-
Нет обработки ошибок
-
Нет форматирования или повторного использования
После (с использованием A1s)
&НаСервере
Function GetДеталиПоБизнесПроцессу(ссылка) Export
ib = "ЗАГРУЗКА ДЕТАЛЬНЫХ ЗАДАЧ ПО ССЫЛКЕ НА БИЗНЕС-ПРОЦЕСС";
Try
// ТЕКСТ ЗАПРОСА
QT = "ВЫБРАТЬ
| Задачи.Ссылка КАК Ссылка
|ИЗ
| Задача.ЗадачаИсполнителя КАК Задачи
|ГДЕ
| Задачи.БизнесПроцесс = &БизнесПроцесс";
// ВЫПОЛНЕНИЕ ЗАПРОСА С ПАРАМЕТРОМ
таблица = A1sQ.Unload(QT, ссылка);
// ВОЗВРАТ РЕЗУЛЬТАТА
Return таблица;
Except
A1sS.Print(ib + ": ошибка выполнения запроса - " + ErrorDescription());
Return Новый ТаблицаЗначений;
EndTry;
EndFunction
Преимущества:
-
Используется
QT
+A1sQ.Unload
— лаконично и понятно -
Добавлена
Try...Except
-обработка ошибок -
Комментарии-интенции (
ib = "..."
) позволяют централизованно выводить контекст -
Именование и стиль по стандарту библиотеки
A1s
-
Код создается ИИ-помощником
👉 https://chatgpt.com/g/g-680318fd045c8191b8ffef6abb7aea12-a1s-assistent-1s-bystryi-start
Результат
Минимум кода при получении результатов запроса, максимум читаемости.
4. Стиль и структура кода
- Все публичные процедуры/функции помечаются как Export, а область выполнения определяется флагами модулей
- PascalCase — для процедур и функций
- camelCase — для локальных переменных
- XML-комментарии (/// <summary>…) — для всех экспортных методов
- ib = "..." — строка-интенция перед логическим блоком
- // ЗАГЛАВНЫЕ комментарии — для вызовов A1s
5. Тестирование
Каждый модуль содержит процедуру SelfTest() Export с базовыми проверками. Это позволяет быстро проверить работоспособность при обновлениях, а также запускать эти проверки автоматически в составе CI-сценариев (например, при обновлении конфигурации или перед публикацией).
6. Как подключить
- скачать файл конфигурации .cf из вложения к публикации
- Подключить как внешний общий модуль в своей конфигурации
- Библиотека не требует дополнительных расширений, не зависит от БСП
- Распространяется по лицензии MIT (свободное использование)
7. Заключение
A1s — это компактная, легко читаемая библиотека для повседневной разработки в 1С.
Она не перегружена абстракциями, не требует фреймворков и подходит как для одиночных проектов, так и для командной разработки.
В будущих версиях планируется поддержка работы с метаданными, типами данных и дальнейшее упрощение взаимодействия с объектами языка 1С.
Для ускоренной генерации кода с использованием A1s доступен AI-ассистент:
👉 https://chatgpt.com/g/g-680318fd045c8191b8ffef6abb7aea12-a1s-assistent-1s-bystryi-start
Ассистент помогает писать процедуры, запросы, автотесты и сопровождает A1s-подход в интерактивном режиме.
Автор A1s: Вадим Щетинкин