Мини‑введение в язык 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 (строки/формат/запросы).
- Экспорт: чтобы вызвать из других модулей, ставьте
Экспорту процедур/функций.
Дальше: откройте «Рецепты» и попробуйте готовые блоки, затем — страницы функций в «Библиотеке».