Как выглядит код в 1с
Перейти к содержимому

Как выглядит код в 1с

  • автор:

Руководство по стилю кода от Гения 1С

Существуют руководства по хорошему стилю программирования, вот пример от Google. Стиль — это не столько приемы хорошего кода, сколько об красивом и понятном оформлении кода.

Ведь если код оформлен красиво, он легче воспринимается и быстрее понимается не только вами, но и другими программистами, которым придется с ним работать.

В оформлении стиля нужно ориентироваться на типовой код. Не потому, что там правильно и идеально, а потому, что большинство программистов работают с типовым кодом и отличия в стиле от стиля типовых будет «бить по глазам». Рекомендации от самой 1С можно в открытом доступе почитать на ИТС.

Выражения

  • После запятой ставится пробел, перед — не ставится.
  • После и перед точкой вызова метода/реквзита пробел не ставится
  • Арифметические операторы + — = > < и другие выделяются пробелами в обеих сторон

Вот пример типового кода 1С, где наглядно видны эти правила:

Некоторые программисты 77 не используют эти правила, потому что раньше были другие принципы, даже в типовом коде. Поэтому они так привыкли и их код «режет глаз». Я сам переучивался оформлять выражения под восьмерку.

Уровни, отступ

1С не жалеет разделителей строк, разделителями обрамляются с обеих сторон:

  • Начало и конец процедуры
  • Если, КонецЕсли
  • Цикл, КонецЦикла

Последовательности обычных операторов не разделяются разделителями. Но если строк много, лучше их разбивать, объединяя в блоки, общие по смыслу.

Вот пример, где эти принципы видны:

Многострочные литералы

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

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

Аналогично нужно оформлять и другие многострочные литералы — прижимать их влево.

Имена переменных

Для счетчиков обычно используются следующие имена.

  • Сч, Инд — для счетчика цикла.
  • Стр, Кол — для счетчика строк, колонок

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

  • ТЗ — для таблицы значений
  • ТД, ТабДок — для табличного документа
  • С — для списка, строки, структуры
  • М — для массива
  • Запрос, З — для запроса
  • НЗ, Движения — для набора записей
  • МЗ, Движение — для менеджера записей
  • ПЗ — для построителя запроса

Если в рамках кода есть несколько однотипных объектов, их можно назвать: А, Б, В.. или ТЗ1, ТЗ2

Для локальных переменных лучше использовать префикс Тек, чтобы они не пересекались с реквизитами объекта, например: ТекКонтрагент, ТекСчет.

Для реквизитов обработки лучше использовать префикс Выб, чтобы они не пересекались с осмысленно названными переменными текущего контекста, например ВыбИмяФайла, ВыбКонтрагент.

Избегайте длинных наименований реквизитов, они сложно воспринимаются, особенно если используются несколько и рядом. Пример плохого имени: ПодготовщикМакетаВариантаСтруктурыСистемыКомпоновкиДанных.

Помните, что человеческое внимание может работать только с 5-7 объектами одновременно, поэтому избегайте большого скопления переменных в одном месте.

Если даете переменным осмысленные имена, то не сокращайте их название. Если сокращаете, то так, чтобы был понятен принцип их сокращения. Хотя бы в комментариях пишите, почему дали такое сокращение, но лучше не сокращать, потому что не все могут понять и запомнить вашу систему сокращений.

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

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

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

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

Переменные

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

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

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

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

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

  • Массив

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

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

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

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

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

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

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

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

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

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

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

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

Операторы

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

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

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

  • Цикл

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

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

Объекты

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

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

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

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

Ошибки в 1С

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

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

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

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

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

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

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

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

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

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

Код Икс Пи ☆ Центр автоматизации, сопровождения и поддержки

Как можно проверить тип значения переменной на равенство нужному?

Как очистить реквизит формы, имеющий ссылочный тип?

Как очистить значение, имеющее тип «Хранилище значения»?

Как проверить тип значения, помещенного в реквизит имеющий тип «Хранилище значения»?

Как сжать данные, помещаемые в хранилище значения?

Как предоставить пользователю возможность выбора значения составного типа?

Как применить округление при работе с вычисляемыми числовыми полями в запросе?

Как вывести многострочное предупреждение?

Как при выполнении обработки сообщить пользователю текущее время?

Как вывести число прописью по-русски, но без дробной части?

Как вывести число прописью по-русски, с указанием сотых в дробной части?

Как вывести прописью число килограммов с указанием дробной части в граммах?

Как долларовую сумму вывести прописью по-английски?

Как загрузить внешнюю компоненту?

Как выполнить команду операционной системы?

Как реализовать код процедуры в зависимости от режима выполнения (на клиенте, на сервере, во внешнем соединении) ?

Как при групповой обработке объектов реализовать стратегию «либо все, либо ничего»?

Как выглядит код в 1с

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 1

Автор уроков и преподаватель школы: Владимир Милькин

Сегодня мы приступаем к изучению того, без чего не может обойтись ни одна более менее серьезная программа — функций и процедур.

Функции и процедуры в языке 1С 8.3

Давайте я подведу вас к необходимости функций, заодно вы поймёте что это такое и почему они столь полезны для программистов.

Пусть нам требуется написать программу, которая вычисляет произведение суммы и разности двух введенных чисел. Выглядеть она будет так:

В данном случае формула вычисления результата достаточно проста, но она могла бы быть гораздо сложнее. А что если нам нужно вычислять её не один раз, а несколько? Причем в разных местах программы.

Неужели нам снова и снова придётся писать код для её вычисления:

Это никуда не годится. Нам придётся повторять один и тот же код, что приведёт к раздутости программы. И кроме того, переписывая его очередной раз мы можем допустить ошибку по невнимательности.

Вот бы придумать такое имя, которое будет связано с этой формулой и при обращении к нему мы будем обращаться ко всей этой формуле целиком. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Пусть этим именем будет ПроизведениеСуммыИРазности.

Получается теперь мы можем написать:

И всё? Нет, конечно! Ведь непонятно произведение суммы и разности каких именно чисел нужно считать. Гораздо лучше будет передать эти числа нашему имени в качестве параметров, как мы обычно делаем при вызове команды:

Это, так называемый, вызов функции. Он выглядит точно также как и вызов многих других команд компьютера, которые мы уже неоднократно делали. Только это наша собственная команда, работу которой определяем мы, а не компьютер.

Давайте, наконец, определим нашу функцию, чтобы компьютер, встретив её вызов, не растерялся, а выполнил то, что мы хотим:

Что включает в себя определение этой функции?

Прежде всего ключевое слово Функция следом за которым идёт имя, которое мы придумали сами.

Затем следуют имена параметров, заключенные в круглые скобки. Параметры — это данные, которые мы передадим в нашу функцию при её вызове. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Она с ними что-то сделает и возвратит результат. Каждый параметр имеет своё имя, которое мы также придумываем сами. Это имя можно использовать только внутри функции.

Дальше идёт тело. Это команды компьютеру, которые будут выполняться в тот момент, когда мы сделаем вызов нашей функции. Тело заканчивается ключевым словом КонецФункции.

Внутри функции могут выполняться абсолютно любые знакомые нам команды: условные операторы, циклы и прочее. Но хотя бы один раз внутри каждой функции должна присутствовать команда:

Где вместо Результат может быть любое выражение, которое вернётся из функции в качестве её результата.

Мы можем вызывать функцию столько раз в программе сколько нам потребуется.

цепочка-вызовов-2

определение и вызов функции

Процедуры это те же самые функции, но они не возвращают результат и объявляются при помощи других ключевых слов: Процедура и КонецПроцедуры.

определение процедуры

вызов процедуры

цепочка-вызовов

Но функции и процедуры не следует писать лишь бы где! Для определения наших функций мы будем использовать новый модуль. Чтобы его добавить следуйте инструкциям ниже.

1. Раскройте список «Общие» в дереве конфигурации.

2. Найдите в нём пункт «Общие модули» и нажмите на нём правой кнопкой мыши. Выберите «Добавить».

Написание процедур 02

3. Добавился модуль. В правой части окна конфигуратора задайте его имя и свойства, как показано ниже.

Внимание! Пожалуйста, ещё раз убедитесь, что вы поставили галки (Клиент, Сервер, Внешнее соединение) также, как на рисунке выше.

4. Перейдите в этот модуль. Всё! Здесь можно писать наши функции и процедуры. Напишите процедуру с именем Привет, без параметров, после вызова которой компьютер просто здоровается с нами.

Написание процедур 04

Обратите внимание на ключевое слово Экспорт, которое идёт следом за круглыми скобками. Его наличие обязательно, так как мы определяем функцию в одном модуле (Уроки), а использовать будем совсем в другом (модуль управляемого приложения).

5. Теперь вернитесь в модуль управляемого приложения.

Написание процедур 05

6. И сделайте вызов нашей процедуры. Так как она находится в другом модуле к её имени добавляется «Уроки.«.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *