Ответы на вопросы об экосистеме A1sCode, инженерии кода в 1С и стандартах разработки
Основные концепции и философия экосистемы
A1sCode — это набор независимых библиотек для платформы 1С:Предприятие 8.3.20+. Каждая библиотека решает конкретную задачу: работа с массивами (A1sAR), структурами (A1sDS), таблицами значений (A1sVT), запросами (A1sQ) и т.д. Основная идея — писать код в современном функциональном стиле с цепочками вызовов (Fluent API).
Библиотеки независимы — вы можете использовать только A1sQ или только A1sAR. Но вместе они образуют целостную систему с единым API-стилем и философией.
Полностью открытый исходный код под MIT License. Используйте в любых проектах — коммерческих и личных.
1С:Предприятие 8.3.20 и выше. Тестировалось на версиях до 8.3.25.
Установка, интеграция и первые шаги
Просто скопируйте нужный Общий Модуль и Обработку в вашу конфигурацию. Зависимостей между библиотеками нет — вы можете использовать только A1sQ или только A1sAR. Для EDT: импортируйте .cfe расширение или скопируйте объекты вручную.
Руководство по установкеНачните с A1sAR + A1sDS — они покрывают 80% задач по работе с коллекциями.
Да! Все библиотеки совместимы с 1C:EDT. Подсветка синтаксиса и автодополнение работают корректно.
Каждая библиотека состоит из двух частей:
• Общий Модуль (A1sAR, A1sDS...) — статические функции и точка входа On()
• Обработка (A1sDP_AR, A1sDP_DS...) — Fluent-интерфейс с цепочками вызовов
Для одиночных операций: A1sAR.Sort(Массив).
Для цепочек — Fluent: A1sAR.On().Filter().Sort().Value()
Оптимизация, накладные расходы, бенчмарки
Менее 0.1% от времени типичного запроса. Fluent API — это тонкие обёртки, не копирующие данные лишний раз.
• RemoveDuplicates использует Соответствие для O(N) вместо O(N²)
• Exists() автоматически добавляет TOP 1 в запрос
• Ленивое создание TempTablesManager при ПОМЕСТИТЬ
• Индексы в ТаблицахЗначений для ускорения поиска
Библиотеки проверены на базах в сотни гигабайт. Для очень больших объёмов используйте пакетную обработку.
Библиотеки оптимизированы под серверное выполнение. Модули помечены как "Сервер", "ВызовСервера".
XML-Doc, Intention Block, SyntaxMarks
Intention Block — первая строка в теле функции, описывающая зачем мы это делаем, а не что.
Подробнее →Визуальные метки в коде: //✏ изменение, //⟳ цикл, //↩ возврат, //⚡ условие.
Все метки →Стандарты A1sCode решают проблему "write-only" кода в 1С. Когда код документирован с маркерами и Intention Block — его можно читать как книгу. Code Review ускоряется в 3 раза.
Core, Data и Utils модули экосистемы
Filter, Map, Reduce, Set-операции (Union, Intersection), сортировка, группировка по типам.
Документация →Of(), Pick/Omit, Merge, DeepCopy, работа с путями (GetOrInsertPath).
Документация →GroupBy, Page (пагинация), OfStructArray (умное создание), агрегация.
Документация →Builder API, автопараметры, WhereLike с экранированием, временные таблицы.
Документация →
• A1sJ — JSON сериализация/десериализация
• A1sX — XML обработка
• A1sLog — Логирование
• A1sMatch — Pattern Matching для 1С
Типичные ошибки и их решения
Убедитесь, что скопировали и модуль, и обработку. Fluent API живёт в A1sDP_*, а точка входа On() — в модуле.
В A1sDP_Q используйте ExecuteQ() вместо Execute() — платформа резервирует имя Execute для обработок. То же касается других стандартных методов платформы.
Не забудьте терминатор: .Value(), .Unload() или .ToArray() в конце цепочки.
• GitHub Issues — баги и предложения
• Telegram — чат сообщества @a1scode
• Документация — полные примеры в каждом модуле
Pull Requests приветствуются! Посмотрите открытые Issues или предложите улучшение.
GitHub →