1С Без Воды. Синтаксис и немного про контекст
Ну вы даете конечно, такой реакции я не ожидал. Но хватит эмоций сегодня наконец-то приступим к синтаксису языка. Код будем писать в консоли кода и да меня тут уже упрекали про наличие воды не смотря на такое громкое название, но поверьте некоторые вещи надо объяснять ибо совсем без воды и без объяснений это родная справка 1с. Мы немного поговорим про контекст, в консоли кода вы можете видеть такие 2 кнопки
Ранее я уже писал немного про клиент и сервер. Повторим, на клиенте значит что код выполняется на компьютере пользователя а на сервере соответственно то что можно выполнить на сервере. Весь код 1С имеет область действия (контекст, грубо говоря все методы и данные которые доступны в данном контексте), в нашем случае мы рассматриваем то где может работать наш код - на клиенте, на сервере либо и там и там. Далее когда уже коснемся объектов метаданных (не пугайтесь) и их модулей (и не только их) тогда уже погрузимся глубже в контекст. Итак приступим, кнопку контекста можем вообще не трогать пока.
Переменные, присваивание и примитивные типы данных.
Переменная - по классике переменную сравнивают с некой коробкой куда кладутся нужные вещи (данные) и подписывается (дается название переменной). В 1с эта операция выглядит так (далее все скрины будут из консоли кода).
Имя переменной - НашаПеременная - составлено по правилом именования переменных в 1С, об этом я уже ранее писал, повторюсь, правило простое - имя может состоять из букв (русских или английских), цифр и символа подчеркивания "_". Первый символ обязательно буква либо подчеркивание, цифра будет считаться ошибкой. Никаких пробелов и спецсимволов. Ну и так же нельзя называть переменные ключевыми словами языка 1С (список заучивать не надо он сам запомнится при изучении синтаксиса ну и если вдруг что просто будет ошибка).
Ну и еще момент язык 1с регистронезависимый, это значит что если вы назовете 2 переменные одинаково но с разным регистром букв и присвоите разные значения и попытаетесь вывести эти переменные то значение будет одно и то же. Например.
Но мы тут еще упомянули присваивание. Это значок =. Слева от равно у нас имя переменной а справа значение которое мы хотим присвоить переменной. В нашем примере значение это число. Оно относится к примитивному типу. Вот какие еще есть примитивные типы в 1С - Число, Строка, Дата, Булево, Неопределено. Есть еще и другие типы но о них мы поговорим чуточку позже (NULL, Тип - ага знаю звучит как тафталогия тип Тип, но позже мы разберем что это значит). Давайте создадим и покажем (Сообщить()) отдельные переменные для наших типов.
Друзья тут у меня к вам вопрос, возможно далее весь код не будет умещаться на один скрин и надо будет скринить отдельно код и отдельно результат его вывода. Вам удобнее один цельный скрин или можно скринить по отдельности код и его результат выполнения?
В консоли кода мы наблюдаем как результат в виде сообщений внизу так и панель - Значения переменных где очень кстати мы можем увидеть реальные типы наших переменных.
Выражения, операции.
Давайте на примере выражения с операцией сложения рассмотрим что такое выражение и операция.
Внезапно новое слово операнды. Итак - выражение объединяет в себе одну или несколько операций над операндами. У операции так же может быть один или два операнда (например операция унарный минус это просто обозначение отрицательного числа, например -1). Выражение соответственно может быть сложнее и объединять несколько операций.
И в этом случае результат выражения определяет приоритет операций. Вспомним школьную математику, про то как расставляли скобочки в примерах повышая приоритет операций, здесь примерно так же. На примере у нас арифметические операции но помимо них есть и другие, давайте последовательно рассмотрим все виды операций и в конце посмотрим на их приоритеты.
Арифметические операции
Ну тут прям школа школа.
Сложение, вычитание, умножение, деление думаю пояснять не надо. Да и про унарный минус думаю должно быть ясно что так мы просто обозначаем (или откуда-то получаем) отрицательные числа. А остаток от деления тут тоже школьная математика деление в столбик, если мы делим 10 литровых бутылок между 3 людьми то целиком по 1 литру каждому человеку достанутся только 3 литрушки и останется 1 литрушка не разделенная, ее мы конечно же заберем себе... шучу надо просто оставить ее напоследок и там уже пофиг будет кто сколько наливает. Так, чет мы отвлеклись.
Операции конкатенации
Мудреным словом конкатенация обозначается присоединение "одной" строки к "другой" - "одной" + "другой" = "однойдругой", с помощью операции сложения.
Ранее на скрине я привел пример строки в коде разбитой на несколько строк и сказал что рассмотрим еще один пример многострочной строки, так вот с помощью конкатенации мы можем отделять одну строку от другой с помощью такой штуки называемой как системное перечисление Символы (подробнее о системных перечислениях... ну вы поняли че мне объяснять, далее). В коде мы используем Символы.ПС - где ПС это Перевод Строки.
Логические операции
Результатом работы логических операций является тип Булево - Истина или Ложь. Это различные операции сравнения.
В логические операции думаю можно так же включить и так называемые булевы операции - И, ИЛИ, НЕ.
Приоритеты операций
В табличке на скрине приведены приоритеты выполнения операций, то есть если у нас сложное выражение объединяющее например различные арифмитические, логические, булевы операции в одном выражении то результат выражения зависит от приоритетов операции. Как мы помним по школе (надеюсь помним) приоритет операции можно повысить заключив эту операцию вместе с ее операндами в скобочки. Самая первая строка таблицы это наиболее низкий приоритет, последняя строка - высший приоритет.
Не пугайтесь последней строки мы это еще не учили и будем учить далее, можете пока остановиться на том что сейчас у нас высший приоритет у унарных плюса и минуса.
Я почитал комментарии под предыдущими постами и вангую что сейчас будут писать про различные тонкости по типу - приведения типов при операциях с различными типами данных (например что будет если сложить дату с числом и тому подобное) , про представление строк различных типов данных и прочее прочее. Да я про эти вещи знаю и помню, но еще раз повторюсь цель данных постов не погрузится в пучину 1с со всеми подробностями, а наоборот легонько поплыть по поверхности, дать старт, толчок к уже более углубленному изучению если это заинтересует. Я же со своей стороны постараюсь продолжить серию постов охватывающую все что связано с разработкой на 1С. Спасибо.
P.S. Мы тут рассмотрели по сути только примитивные типы, операции выражения и приоритеты. Может быть вам этого мало в рамках одной статьи и нужно как-то более укрупненно писать? Напишите свое мнение, а может быть наоборот надо дробить на более мелкие статьи, я на данный момент пишу по наитию, так как мне хочется подать вам информацию.
P.S. P.S. И еще момент на момент возникновения идеи этих постов была у меня мысль применять нейронку хотя бы для редактирования текста, исправления ошибок. Но в потоке сознания посты клепаю без всяких нейронок. Пользуюсь только документацией 1С. Напишите сильно ли вам режет глаз такой вот сырой текст? Надо ли обрабатывать нейронкой или просто проверкой орфографии и пунктуации или итак сойдет?












