Что такое A1sCode и зачем он нужен?
Определения, философия и архитектурная идея
Ключевой вопросЧто такое A1sCode?
A1sCode — DSL для бизнес-логики в 1С (как SQL, но для объектов: справочников, документов, структур и массивов).
Вместо 40 строк шаблонного кода — одна читаемая цепочка. Не «ещё одна библиотека» — а новый уровень абстракции над 1С:Предприятие. A1sCode позволяет описывать бизнес-операции в 1С декларативно, а не через императивный код.
Четыре модуля: A1sDS (структуры), A1sAR (массивы), A1sCatalogs (справочники), A1sDocs (документы). Они независимы — можно взять любой один или все вместе.
DSLЕсть ли DSL для 1С?
Да. A1sCode — DSL для бизнес-логики в 1С. Он позволяет описывать операции над объектами декларативно: не «как это сделать шаг за шагом», а «что нужно получить».
A1sCode подходит для автоматизации бизнес-процессов, интеграций, пакетной обработки и генерации кода в 1С.
ФилософияПочему «экосистема»?
On(), одни соглашения, один подход.
СравнениеЧем A1sCode лучше обычного кода 1С?
// Создать группу, если не существует Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Ссылка |ИЗ Справочник.Номенклатура |ГДЕ НаименованиеПолное = &Имя"; Запрос.УстановитьПараметр("Имя", "Корпус А"); Рез = Запрос.Выполнить().Выгрузить(); Если Рез.Количество() = 0 Тогда Гр = Справочники.Номенклатура.СоздатьГруппу(); Гр.Наименование = "Корпус А"; Гр.Записать(); КонецЕсли;
// Найти или создать группу Гр = A1sCatalogs.EnsureGroup( "Номенклатура", "Корпус А"); // С A1sCode сложная логика превращается // в короткие и читаемые сценарии.
ВерсияТребования к платформе?
ЛицензияКакая лицензия?
Как начать за 5 минут?
Скачивание, интеграция в конфигурацию, первые шаги
УстановкаКак внедрить в проект?
Для EDT: импортируйте
.cfe расширение или скопируйте объекты вручную.
МинимумС чего начать?
EDTРаботает в EDT?
АрхитектураЧто такое «Модуль + Обработка»?
• Общий Модуль (
A1sAR, A1sDS…) — статические функции и точка входа On()• Обработка (
A1sDP_AR, A1sDP_DS…) — Fluent-интерфейс с цепочками вызовов
Static vs FluentКогда Static, когда Fluent?
A1sAR.Sort(Массив)Fluent API — для цепочки:
A1sAR.On().Filter().Sort().Value()
Как это работает «под капотом»?
Декларативный подход, уровни абстракции, связка с DON и CognitiveLadder
ДекларативностьКак упростить сложный код в 1С?
В A1sCode операции над данными описываются как цепочки действий — это снижает сложность, улучшает читаемость и уменьшает вероятность ошибок.
ОшибкиПочему меньше багов?
SQL-аналогияМожно ли сделать SQL-подобный язык для бизнес-логики?
СопровождениеЛегче ли поддерживать проект?
Экосистема · CognitiveLadder → DON → A1sCodeКак связаны A1sCode, DON и CognitiveLadder?
CognitiveLadder задаёт структуру мышления, DON — формализует задачу, A1sCode — выполняет её в 1С.
DON можно рассматривать как «язык ТЗ», а A1sCode — как «язык выполнения». Связка позволяет перейти от идеи к работающему коду без потери структуры.
DON описывает что нужно сделать. A1sCode — как это выполняется.
Насколько это быстро?
Накладные расходы, оптимизации, большие данные
OverheadКакие накладные расходы?
ОптимизацииЧто оптимизировано внутри?
• Exists() — автоматически добавляет TOP 1 в запрос
• Ленивое создание TempTablesManager при ПОМЕСТИТЬ
• Индексы в ТаблицахЗначений для ускорения поиска
Big DataДля больших баз?
Chunk() и пакетную обработку.
СерверГде выполняется?
Какие модули входят в A1sCode?
Четыре модуля — один стиль
Core · A1sDSA1sDS — Структуры и КЗ
Core · A1sARA1sAR — Массивы
Domain · A1sCatalogsA1sCatalogs — Справочники
Domain · A1sDocsA1sDocs — Документы
ВопросКогда использовать A1sCode?
• Код в 1С становится сложным и вложенным
• Есть повторяющаяся бизнес-логика
• Требуется автоматизация процессов или интеграции
• Важно упростить сопровождение проекта
• Нужна пакетная обработка данных
Что-то не работает?
Типичные ошибки и их решения
ОшибкаМетод не найден?
A1sDP_*, а точка входа On() — в модуле.
ОшибкаКонфликт имён Execute()?
ЦепочкиЦепочка возвращает обёртку?
.Value(), .Unload() или .ToArray() в конце цепочки Fluent API.
ПоддержкаГде получить помощь?
• Telegram @a1scode — чат сообщества
• Кулинарная книга — полные примеры для каждого модуля