A1sCode библиотека 1С

Мини‑введение в язык 1С

Цель: быстро «вспомнить синтаксис» и стартовать с типовыми конструкциями. Клик по любому блоку кода — копирование.

О языке и модулях

1С:Предприятие — прикладной язык со статической системой типов времени выполнения и управляемым приложением. Код хранится в модулях: общий модуль, модуль формы, менеджер объекта, команда, обработка и др.


// Где бывает код
// - Общие модули: переиспользуемые функции/процедуры (Экспорт)
// - Модули форм: обработчики событий интерфейса
// - Менеджеры: "МенеджерОбъекта", "Объект" (для справочников/документов)
// - Команды/Обработки/Отчёты: прикладная логика, UI, печать
      

Клиент/сервер и директивы


&НаКлиенте
Процедура КнопкаОК(Команда)
    // Выполняется на клиенте
КонецПроцедуры

&НаСервере
Функция ДанныеСервера() Экспорт
    Возврат ТекущаяДата();
КонецФункции

#Если Клиент Тогда
    // Препроцессор: разделяем ветки
#ИначеЕсли Сервер Тогда
    // Серверная часть
#КонецЕсли
      

Переменные и типы


Перем Глобальная;               // Глобальная переменная модуля
Лок = 0;                        // Локальная в процедуре/функции
Имя = "Иван"; Возраст = 30;     // Строка/Число
Дата = ТекущаяДата();           // Дата
Ист = Истина; Лож = Ложь;       // Булево
Нет = Неопределено;             // "пустое" значение 1С
      

Процедуры и функции


Процедура Печать(Текст = "") Экспорт
    Если ПустаяСтрока(Текст) Тогда Возврат; КонецЕсли;
    Сообщить(">> " + Текст);
КонецПроцедуры

Функция Сумма(А, Б) Экспорт
    Возврат А + Б;
КонецФункции
      

Условия и циклы


Если Условие Тогда
    // ...
ИначеЕсли Другое Тогда
    // ...
Иначе
    // ...
КонецЕсли;

Для И = 1 По 5 Цикл
    Сообщить(И);
КонецЦикла;

Пока И < 10 Цикл
    И = И + 1;
КонецЦикла;

Для Каждого Элемент Из Массив Цикл
    Сообщить(Элемент);
КонецЦикла;
      

Исключения


Попытка
    // Рискованный код
Исключение
    Сообщить("Ошибка: " + ОписаниеОшибки());
    // Повторно возбуждаем при необходимости:
    ВызватьИсключение "Критическая ошибка";
КонецПопытки;
      

Строки, числа, даты


// Строки
Стр = "Привет"; Длина(Стр); Сред(Стр,1,2); СтрЗаменить(Стр,"При","Пока");
ПустаяСтрока(Стр); НСтр("ru='Текст с ресурсом'");

// Числа
Ч = 1234.5; Окр(Ч, 2); Формат(Ч, "ЧГ=0; ЧД=2"); // разделители/знаки
// Даты
Д = ТекущаяДата(); Формат(Д, "ДФ=dd.MM.yyyy HH:mm");
      

Коллекции


// Массив
М = Новый Массив; М.Добавить(1); М.Добавить(2);

// СписокЗначений
СЗ = Новый СписокЗначений; СЗ.Добавить("A"); СЗ.Добавить("B");
Для Каждого Э Из СЗ Цикл Сообщить(Э.Значение); КонецЦикла;
      

Структура / Соответствие / ТаблицаЗначений


// Структура
Профиль = Новый Структура("Имя,Возраст", "Иван", 30); Профиль.Вставить("Город", "СПб");
Профиль.Свойство("Имя", Имя);

// Соответствие (словарь)
Map = Новый Соответствие; Map.Вставить("A", 1); Map.Вставить("B", 2);
Знач = Map.Получить("A"); // 1

// ТаблицаЗначений
Таб = Новый ТаблицаЗначений; 
Таб.Колонки.Добавить("Имя");
Таб.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Стр = Таб.Добавить(); Стр.Имя = "Яблоко"; Стр.Цена = 10;
Для Каждого Р Из Таб Цикл Сообщить(Р.Имя); КонецЦикла;
      

Запросы и параметры


Р = Новый Запрос(
"ВЫБРАТЬ
 |  ПЕРВЫЕ 10
 |  Ссылка, Наименование
 |ИЗ Справочник.Номенклатура КАК Ном
 |ГДЕ Ном.Наименование ПОДОБНО &Имя");
Р.УстановитьПараметр("Имя", "%ябл%");
Таблица = Р.Выполнить().Выгрузить(); // ТаблицаЗначений
      

HTTP (клиент)


&НаСервере
Функция Пинг() Экспорт
    Соед = Новый HTTPСоединение("api.example.com");
    Запр = Новый HTTPЗапрос("/v1/ping");
    Отв = Соед.Получить(Запр);
    Если Отв.КодСостояния = 200 Тогда
        Возврат Отв.ТелоКакСтрока();
    Иначе
        ВызватьИсключение "HTTP " + Строка(Отв.КодСостояния);
    КонецЕсли;
КонецФункции
      

Полезные приёмы

  • Журнал регистрации: ЗаписьЖурналаРегистрации("Метка", УровеньЖурналаРегистрации.Информация);
  • Проверка пустых: Неопределено, ПустаяСтрока(), ТипЗнч().
  • Короткие хелперы: см. в библиотеке A1sS/A1sQ (строки/формат/запросы).
  • Экспорт: чтобы вызвать из других модулей, ставьте Экспорт у процедур/функций.
Дальше: откройте «Рецепты» и попробуйте готовые блоки, затем — страницы функций в «Библиотеке».