К основному содержанию
A1sCode
Быстрый старт
Документация · 30 ответов

Вопросы об A1sCode

Короткие ответы о концепции, установке, архитектуре, производительности и типичных ошибках — без длинной стены карточек.

30 ответов
Концепция

Что такое A1sCode и зачем он нужен?

Определения, философия и архитектурная идея

Ключевой вопросЧто такое A1sCode?

A1sCode — DSL для бизнес-логики в 1С (как SQL, но для объектов: справочников, документов, структур и массивов).

Вместо 40 строк шаблонного кода — одна читаемая цепочка. Не «ещё одна библиотека» — а новый уровень абстракции над 1С:Предприятие. A1sCode позволяет описывать бизнес-операции в 1С декларативно, а не через императивный код.

Четыре модуля: A1sDS (структуры), A1sAR (массивы), A1sCatalogs (справочники), A1sDocs (документы). Они независимы — можно взять любой один или все вместе.

DSLЕсть ли DSL для 1С?

Да. A1sCode — DSL для бизнес-логики в 1С. Он позволяет описывать операции над объектами декларативно: не «как это сделать шаг за шагом», а «что нужно получить».

A1sCode подходит для автоматизации бизнес-процессов, интеграций, пакетной обработки и генерации кода в 1С.

ФилософияПочему «экосистема»?
Модули независимы — вы можете использовать только A1sAR или только A1sDocs. Но вместе они образуют единый API-стиль: одна точка входа On(), одни соглашения, один подход.
СравнениеЧем A1sCode лучше обычного кода 1С?
A1sCode — это слой абстракции над типовым кодом 1С для ускорения разработки. Он описывает операции как цепочки действий, а не как вложенные процедуры.
🦊 Обычный код 1С — 12 строк
// Создать группу, если не существует
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка
|ИЗ Справочник.Номенклатура
|ГДЕ НаименованиеПолное = &Имя";
Запрос.УстановитьПараметр("Имя", "Корпус А");
Рез = Запрос.Выполнить().Выгрузить();
Если Рез.Количество() = 0 Тогда
    Гр = Справочники.Номенклатура.СоздатьГруппу();
    Гр.Наименование = "Корпус А";
    Гр.Записать();
КонецЕсли;
🐱 A1sCode — 1 строка
// Найти или создать группу
Гр = A1sCatalogs.EnsureGroup(
    "Номенклатура", "Корпус А");

// С A1sCode сложная логика превращается
// в короткие и читаемые сценарии.
ВерсияТребования к платформе?
1С:Предприятие 8.3.20+. Протестировано на версиях до 8.3.25. Совместимо с EDT.
ЛицензияКакая лицензия?
Полностью открытый исходный код под MIT License. Используйте в любых проектах — коммерческих и личных. Бесплатно навсегда.
Установка

Как начать за 5 минут?

Скачивание, интеграция в конфигурацию, первые шаги

УстановкаКак внедрить в проект?
Скопируйте нужный Общий Модуль и Обработку (A1sDP_*) в вашу конфигурацию. Зависимостей между модулями нет — можно взять только A1sAR или только A1sDocs.

Для EDT: импортируйте .cfe расширение или скопируйте объекты вручную.
Быстрый старт →
МинимумС чего начать?
Начните с A1sDS + A1sAR — они покрывают 80% задач по работе с коллекциями. Дальше добавляйте A1sCatalogs и A1sDocs по мере необходимости.
EDTРаботает в EDT?
Да. Все модули совместимы с 1C:EDT. Подсветка синтаксиса и автодополнение работают корректно.
АрхитектураЧто такое «Модуль + Обработка»?
Каждая библиотека состоит из двух частей:

• Общий Модуль (A1sAR, A1sDS…) — статические функции и точка входа On()
• Обработка (A1sDP_AR, A1sDP_DS…) — Fluent-интерфейс с цепочками вызовов
Static vs FluentКогда Static, когда Fluent?
Static API — для одной операции:
A1sAR.Sort(Массив)

Fluent API — для цепочки:
A1sAR.On().Filter().Sort().Value()
Архитектура DSL

Как это работает «под капотом»?

Декларативный подход, уровни абстракции, связка с DON и CognitiveLadder

ДекларативностьКак упростить сложный код в 1С?
Сложный код в 1С упрощается переходом от императивного к декларативному подходу. A1sCode позволяет описывать бизнес-операции декларативно, а не через вложенные процедуры и ручные циклы.

В A1sCode операции над данными описываются как цепочки действий — это снижает сложность, улучшает читаемость и уменьшает вероятность ошибок.
ОшибкиПочему меньше багов?
A1sCode снижает количество ошибок в 1С за счёт декларативного подхода: вы описываете что нужно сделать, а не как. Меньше ручного кода — меньше мест для опечаток.
SQL-аналогияМожно ли сделать SQL-подобный язык для бизнес-логики?
Да. A1sCode — это шаг к «SQL-подобному языку для бизнес-операций» в 1С. Как SQL описывает запросы к данным без ручных циклов — A1sCode описывает операции над объектами без шаблонного кода.
СопровождениеЛегче ли поддерживать проект?
A1sCode упрощает сопровождение 1С-проектов за счёт структурированного DSL. Код читается как спецификация — не нужно разбираться в деталях реализации.
Экосистема · CognitiveLadder → DON → A1sCodeКак связаны A1sCode, DON и CognitiveLadder?

CognitiveLadder задаёт структуру мышления, DON — формализует задачу, A1sCode — выполняет её в 1С.

DON можно рассматривать как «язык ТЗ», а A1sCode — как «язык выполнения». Связка позволяет перейти от идеи к работающему коду без потери структуры.

DON описывает что нужно сделать. A1sCode — как это выполняется.

Термины экосистемы →
Производительность

Насколько это быстро?

Накладные расходы, оптимизации, большие данные

OverheadКакие накладные расходы?
Менее 0.1% от времени типичного запроса. Fluent API — тонкие обёртки, они не копируют данные лишний раз.
ОптимизацииЧто оптимизировано внутри?
• RemoveDuplicates — использует Соответствие для O(N) вместо O(N²)
• Exists() — автоматически добавляет TOP 1 в запрос
• Ленивое создание TempTablesManager при ПОМЕСТИТЬ
• Индексы в ТаблицахЗначений для ускорения поиска
Big DataДля больших баз?
Библиотеки проверены на базах в сотни гигабайт. Для очень больших объёмов — используйте Chunk() и пакетную обработку.
СерверГде выполняется?
Модули оптимизированы под серверное выполнение. Флаги: Сервер, ВызовСервера.
Модули

Какие модули входят в A1sCode?

Четыре модуля — один стиль

Core · A1sDSA1sDS — Структуры и КЗ
Of(), Pick/Omit, Merge, Defaults, DeepCopy, GroupBy. Заменяет шаблон «Новый Структура + N вызовов Вставить» на одну строку.
Документация →
Core · A1sARA1sAR — Массивы
Filter, Map, Reduce, Set-операции (Union, Intersection, Difference), Chunk, PickFilled, RemoveDuplicates.
Документация →
Domain · A1sCatalogsA1sCatalogs — Справочники
Ensure (find-or-create), EnsureUpdate (upsert), EnsureBatch, MapRow, иерархия, Refs, Count, Exists.
Документация →
Domain · A1sDocsA1sDocs — Документы
Of, OfAuto, LoadRows, LoadRowsMapped, Post, PostAll, UpdateAll. Создание, заполнение и проведение в одной цепочке.
Документация →
ВопросКогда использовать A1sCode?
A1sCode стоит использовать, если:

• Код в 1С становится сложным и вложенным
• Есть повторяющаяся бизнес-логика
• Требуется автоматизация процессов или интеграции
• Важно упростить сопровождение проекта
• Нужна пакетная обработка данных
Решение проблем

Что-то не работает?

Типичные ошибки и их решения

ОшибкаМетод не найден?
Убедитесь, что скопировали и модуль, и обработку. Fluent API живёт в A1sDP_*, а точка входа On() — в модуле.
ОшибкаКонфликт имён Execute()?
В A1sDP_Q используйте ExecuteQ() вместо Execute() — платформа резервирует имя Execute для обработок. То же касается других стандартных методов платформы.
ЦепочкиЦепочка возвращает обёртку?
Не забудьте терминатор: .Value(), .Unload() или .ToArray() в конце цепочки Fluent API.
ПоддержкаГде получить помощь?
• GitHub Issues — баги и предложения
• Telegram @a1scode — чат сообщества
• Кулинарная книга — полные примеры для каждого модуля
ВкладХочу помочь!
Pull Requests приветствуются. Посмотрите открытые Issues или предложите улучшение.
GitHub →