Краткий обзор языка 1С

Язык 1С считается самым простым в изучении. Одно из его конкурентных преимуществ – возможность написания кода на русском, что значительно упрощает процесс его освоения. Хотя имеются и англоязычные варианты языка, предназначенные для внедрения на зарубежных предприятиях.

 

Программирование на 1С – создание алгоритма или программного кода, который позволяет пользователю без проблем работать в программном интерфейсе. Основной инструмент языка – команды (слова), которые в определённой последовательности создают общую функциональную оболочку программы. Команды бывают следующих видов:

1. Переменные;

2. Операторы;

3. Функции и процедуры;

Давайте разберём все их более детально.

 

Переменные

Допустим, имеется число 15. Это есть значение. Изначально оно нигде не сохраняется. Чтобы поместить её в информационную базу (ИБ) программы, необходимо выполнить сохранение в переменной, которая может именоваться хоть как, скажем, результат.

Пример:

Результат = 15;
Результат = Результат + 10;
Сообщить(Результат); //будет отображено «25»

Переменная, которая относится к объекту 1С (поле справочника, допустим) и сохраняется в информационную базу – это реквизит. К любой переменной допускается присвоение разных типов данных: можно сначала присвоить тип «число», а затем – тип «строка». Но для реквизитов язык 1С предусматривает только один тип данных. Если указать в нём другое значение, допустим, вместо цифры – строку, то программа сначала попробует выполнить преобразование в цифровой формат. Если она не сможет это сделать, значение будет пустым.

Строка в стандартной переменной не ограничена по длине, в реквизите – чётко определена (но если требуется выставить неограниченную длину – устанавливается значение длины 0). Выполнять обращение к отдельным буквам в слове нельзя, но можно искать целые части (Лев(), Прав(), Сред()).

 

Сложные переменные

Давайте разберём пример, когда переменной присвоено несколько значений.

  • Массив

По виду массив аналогичен колонке в Excel. Каждая ячейка – переменная, которая имеет только одно название. Чтобы перейти к определённой ячейке, нужно ввести её номер.

Результат = Новый Массив;
Результат.Добавить(25);   //в первой ячейке значение 25
Результат.Добавить(34);   //во второй ячейке значение 34
Сообщить(Результат[0]);   //выводится значение первой ячейки
 

Ячейки в 1С нумеруются с 0, а не с 1.

 

  • СписокЗначений

Аналогичные ячейки, но с возможностью добавления комментария.

Результат = Следующий СписокЗначений;
 Результат.Добавить(25, «Это 25»);    
//в первой ячейке значение 25
 Результат.Добавить(34, «Это 34»);    
//во второй ячейке значение 34
 Сообщить(Результат.Получить(0).Значение);   
//выводится значение первой ячейки
//или можно вывести комментарий, 
//тогда вместо .Значение пишется .Представление

 

  • ТаблицаЗначений

Здесь программирование таблиц значений на 1С аналогично Excel — страничке со множеством строк и колонок.

 

  • ДеревоЗначений

Древовидная таблица, самый простой пример – окно конфигурации.

 

Строки программы

В конце любой строчки стоит «;», а комментарий добавляется после знака «//». Значение пишется в кавычках, например «14». Если требуется ввести кавычку в значении, её пишут два раза: «14 ««o»»!».

Значение может быть разделено на две строки, для этого язык 1С имеет знак «|»:

«Начало значения

| его продолжение»

Для указания специфических символов используется объект: «Символы.»:

«Начало значения» + Символы.ПС + «его продолжение» 
//ПС – перенос строки

 

Операторы

Это средства, встроенные в язык 1С. Используются для создания простейшей последовательности.

 

  • Условный оператор

Те или иные строки выполняются при наличии необходимых условий.

Результат = 15;
Если Результат < 100 или Результат > 200 Тогда
    Сообщить(«Условие выполнено»);
ИначеЕсли Результат > 200 Тогда
    Сообщить(«Условие не выполнено»);
Иначе
    Сообщить(«Что-то еще»);
КонецЕсли;

 

  • Цикл

Строчки выполняются установленное количество раз или пока выполняется определённое условие.

//считаем по-одному
Для Результат = 1 по 20 Цикл
    Сообщить(Результат);
КонецЦикла;
//считаем по-другому
Результат = 1;
Пока Результат < 20 Цикл
    Результат = Результат + 1;
    Сообщить(Результат);
КонецЦикла;
//если имеется список значений, то можно обойти 
//каждое из его значений
Результат = Новый СписокЗначений;
Для каждого ЗначениеСписка из Результат Цикл
    Сообщить(ЗначениеСписка.Значение);
КонецЦикла;
//«ЗначениеСписка» - это переменная, ее можно 
//называть как угодно

Для прерывания цикла язык 1С имеет команду «Прервать». Для прерывания только одной итерации – «Продолжить».

 

Объекты

Любой объект в 1С полноценен, то есть ему могут присваиваться уникальные от остальных методы и данные.

Для создания объекта используется параметр «Новый».

Результат = Новый Массив();
Результат = Новый СписокЗначений();

Для создания объектов применяются менеджеры. Их называют в соответствии с ветками конфигурации: Документы, Справочники и т.д. Методы в менеджере можно расширять:

Справочники.Номенклатура.СоздатьЭлемент();
Документы.Накладная.НайтиПоНомеру(«…»);

Собственные объекты конфигурации 1С неизменяемы.

 

Ошибки в 1С

Программирование на 1С отличается тем, что при написании программы не всегда понятно, появится ли ошибка при выполнении той или иной строчки. Так, если во внешней обработке ввести:

Справочники.Номенклатура.НайтиПоКоду(«…»)

и открыть её в базе, где указанного справочника нет – возникнет ошибка.

Чтобы она не выскочила, можно применять такой алгоритм:

Попытка
    Справочники.Номенклатура.НайтиПоКоду(«…»);
Исключение
    Результат = ОписаниеОшибки();
    Сообщить(«Ой-ой-ой»);
    Сообщить(Результат);
КонецПопытки;

Если при выполнении кода между «Попытка» и «Исключение» будет ошибка, то выполнение остановится и программа перейдёт к строчке между «Исключение» и «КонецПопытки». Если ошибка не появится, строчки выполняться не будут.

Функция ОписаниеОшибки() запускается только между «Исключение» и «КонецПопытки» и выдаёт сведения о содержании возникшей ошибки.

 

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

Данные методы предназначены для одноимённого наименования сразу нескольких строчек. Затем, при написании этого названия в тексте кода, будет активирована соответствующая функция. Функции и процедуры – это стандартные методы и обработчики в языке 1С:

//Программируем
Процедура КакоетоДействие()
      Сообщить(«Результат»);
КонецПроцедуры
//Вызываем
КакоетоДействие();

Отличие функции от процедуры в том, что последняя не может вернуть значение, которое было посчитано при выполнении данных строк:

Функция Посчитать(Переменная1, Переменная2)
      Возврат Переменная1 + Переменная2;
КонецФункции
//Вызываем
Результат = Посчитать(15, 25);
Сообщить(Результат); //будет сообщение «40»

 

Как программировать?

Программирование на 1С подразумевает использование модулей. Найдя подходящий модуль, можно приступать к написанию своего кода.

Пример для написания кода во внешней обработке:

  • Создание обработки.
  • Создание формы, добавление кнопки на форму и обработчика события для этой кнопки.
  • Написание своего кода в обработчике кнопки в модуле формы. Обработчик кнопки выполнится при открытии обработки в режиме «Предприятие» (пользовательский режим 1С) и нажатии на эту кнопку.