Язык 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С) и нажатии на эту кнопку.
Свежие комментарии