где писать код в 1с предприятие
Где писать код в 1с предприятие
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: установка 1С и ваша первая программа на языке 1С
Автор уроков и преподаватель школы: Владимир Милькин
Установка учебной версии 1С
Для обучения программированию нам понадобится 1С 8.3 (не ниже 8.3.13.1644).
Задание №1: скачать и установить учебную версию 1С 8.3.
Инструкция для выполнения: ссылка на инструкцию.
После выполнения Задания №1 на вашем рабочем столе должен появиться вот такой ярлык:
Поздравляю! Платформа 1С установлена и очень скоро вы сможете написать первую программу.
Первая программа
Не станем исключением и мы. Но, будучи русскими программистами, заставим компьютер вывести на экран фразу «Привет, Мир!».
Задание №2: написать программу на языке 1С 8.3, которая при запуске выводит на экран фразу «Привет, Мир!».
Инструкция для выполнения:
1. Запустите ярлык «1С:Предприятие» на вашем рабочем столе.
2. Перед вами открылся список баз 1С. Как видите, он пуст. Давайте создадим учебную базу, в которой и будем программировать. Нажмите кнопку «Добавить«.
3. Выберите пункт «Создание новой информационной базы» и нажмите кнопку «Далее«.
5. В качестве имени базы укажите «Учебная» и нажмите кнопку «Далее«.
6. В качестве каталога базы укажите любую пустую папку (в данном случае это папка «Учебная» в моих документах). Нажмите кнопку «Далее».
7. Укажите вариант аутентификации «Выбирать автоматически«, режим запуска «Толстый клиент«. В качестве версии 1С:Предприятия ничего не указывайте, нажмите кнопку «Готово».
8. Как видите, в списке, наконец, появилась первая база, которую мы только что создали сами! Начнем писать код. Нажмите кнопку «Конфигуратор«.
9. В открывшемся окне, выберите через меню «Конфигурация«->»Открыть конфигурацию«.
10. В открывшейся слева панели нажмите правой кнопкой мыши на слове «Конфигурация» и выберите из списка «Открыть модуль управляемого приложения«.
11. Открылось окно с редактором. Сюда можно писать текст! С ним мы и будем работать в дальнейшем.
12. Теперь, не задумываясь, просто перепишите в это окно следующий текст:
13. Отлично! Код нашей первой программы готов. Запустим его на выполнение. Через меню «Отладка«->»Начать отладку» (или клавиша F5).
14. На вопрос ответим утвердительно.
15. Спустя секунду или две запустится 1С и в окне снизу появится надпись «Привет, Мир!». Мы добились от компьютера того, чего хотели. Поздравляю вас с первой программой!
Обращение преподавателя
Уровень сложности уроков идёт снизу вверх. Поэтому старайтесь заниматься последовательно, ничего не пропуская и не откладывая на потом.
Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.
Войдите как ученик, чтобы получить доступ к материалам школы
Программирование в 1С для всех
В этой статье я приведу пять рабочих советов для начинающих программистов 1С, которые помогут быстрее въехать в профессию.
Совет № 1. Учимся работать со справочной информацией.
Именно в справочной информации Вы сможете быстро и эффективно узнать о методах, свойствах и событиях всех объектов 1С. В платформе 1С есть два вида справок. Собственно сама справка, путь: Справка – Содержание справки.
А так же синтаксис-помощник конфигуратора 1С
Синтаксис-помощник позволяет получить быстрый доступ к описанию того или иного объекта при помощи закладок «Индекс» и «Поиск». Например, введем в закладке «Индекс» слово «массив», индекс сразу выведет все возможные варианты, где может во встроенном языке использоваться слово «массив»
Если мы кликнем на какое-то одно слово (например, Массив), то в случае множество одноименных объектов, свойств и методов будет предложен список для выбора.
Выбрав то, что Вам нужно Вы получите всю информацию об интересующем объекте. В данном случае мы получили информацию об объекте универсальной коллекции значений — массиве.
Заметьте, в справочной информации, очень часто есть примеры кода, где используется описываемый объект.
Подробнее о работе со справкой: видео-урок
Работа со справкой в конфигураторе 1С
Совет № 2. Привыкаем использовать отладку
Многие начинающие программисты 1С пренебрегают этим механизмом платформы 1С. А зря! Именно работая с отладкой можно понять, как работает то или иной код, и какие значения возвращает та или иная функция.
Для того, что бы отладка сработала достаточно поставить в конфигураторе 1С точку останова и запустить отладчик при помощи кнопки «Начать отладку» (клавиша F5).
Для того что бы программа остановилась в точке останова, нужно в пользовательском режиме в 1С: Предприятия выполнить действия, в результате которых сработает код, где установлена точка останова. На рисунке выше мы поставили точку останова в процедуре ОбработкаПроведения модуля документа «Установка цен». Если мы в пользовательском режиме проведем любой документ «Установка цен», то точка останова сработает.
После этого вы можете или с помощью Табло, или с помощью «Вычислить выражение…» узнать значения той или иной переменной.
Подробнее о работе с отладкой смотрите в моем видео-уроке: Работа с отладкой в конфигураторе 1С
Совет №3. Привыкаем использовать контекстные подсказки
С самого начала привыкайте работать с контекстными подсказками и шаблонами. Тем самым Вы существенно ускорите свое программирование и не будете тратить время на обдумывание правильности написания той или иной функции (процедуры, метода и тп).
Включить контекстные подсказки в конфигураторе 1С можно в параметрах (путь: Сервис – Параметры), на подзакладке «Контекстная подсказка» закладки «Модули»
При помощи контекстной подсказки Вы можете, узнать какие параметры есть у той или иной процедуры или функции.
А так же узнать какие методы и свойства могут быть у того или иного объекта
Контекстная подсказка будет вызвана после того, как вы введете с клавиатуры точку, скобку, равно (в зависимости от настроек параметров), а так же после того как вы нажмете комбинацию клавиш Ctrl + Space (Пробел)
Так же не пренебрегайте шаблонами кода. Подробно от том, как с ними работать, можно почитать в статье: Ускоряем свое программирование при помощи шаблонов
Совет №4. Используем конструкторы
Понятно, что многие гуру от программирования начнутся плеваться ядовитой слюной от этого совета, но для многих начинающих программистов 1С использование стандартных конструкторов поможет на начальном этапе быстро освоить те или иные алгоритмы работы (например, проведение документа, заполнение на основании и т.д).
В платформе 1С есть несколько видов конструкторов.
У документов можно вызвать конструктор движений, ввода на основании и печати.
Для работы с запросами можно использовать конструктор запросов и конструктор запросов с обработкой результатов.
А быстро научиться использовать форматную строку для различных примитивных типов можно при помощи конструктора форматной строки. Более подробно о этом полезном конструкторе можно почитать в статье: Конструктор форматной строки
Совет №5. Учимся искать, как это сделано в чужом коде
И последний не менее важный совет для начинающих программистов 1С – учитесь читать чужой код. Да это сложно, непонятно и трудно, но если Вы с самого начала будете пытаться осмысливать чужой код, то в дальнейшем этот навык Вам очень пригодиться. Так же чтение чужого кода Вам может подсказать, как правильно использовать тот или иной объект, или как работать с какой-либо функцией (процедурой).
Например, Вы хотите посмотреть, как в какой-нибудь имеющейся конфигурации используется метод СоздатьНаборЗаписей регистра сведений. Для этого необходимо осуществить глобальный поиск по конфигурации
В форме глобального поиска Вы вводите искомое название
Если искомое слово есть в конфигурации (в частности в модулях), то путь к этому слову будет выдан в результатах поиска
Из результат поиска Вы сможете перейти в нужный модуль и посмотреть как применяется искомый Вами метод (процедура, функция) или объект.
Тем самым сможете быстро научится использовать некоторые типовые методы работы с теми или иными объектами.
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Где писать код в 1с предприятие
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: основные правила языка 1С
Автор уроков и преподаватель школы: Владимир Милькин
Продолжаем эксперименты
Задание №3. Добейтесь того, чтобы компьютер при запуске вашей программы вывел следующий отрывок из замечательного стихотворения Александра Пушкина «Зимний вечер»:
Буря мглою небо кроет,
Вихри снежные крутя;
То, как зверь, она завоет,
То заплачет, как дитя.
Обратите внимание, что стихотворение нужно вывести в четыре строки.
Попробуйте его выполнить сами без подсказки и лишь при необходимости воспользуйтесь инструкцией ниже:
Всё получилось? Отлично.
Первые наблюдения о языке
А теперь давайте внимательно присмотримся к написанной программе:
Вроде бы обычный текст. Но на самом деле он написан по особым правилам, которые делают его понятным для компьютера.
Компьютер считывает этот текст (ещё говорят «код программы») строку за строкой и выполняет задуманные программистом команды.
Что мы можем сказать об этом тексте?
На самом деле в этих четырёх наблюдениях, замеченных нами лишь по небольшому фрагменту программы, уже содержатся правила внутреннего языка программирования 1С 8.3. Но сформулируем мы их позже, а пока просто обратите внимание на эти особенности текста.
Коверкаем нашу программу
Первые два варианта я вам подскажу:
Войдите на сайт как ученик
Авторизуйтесь, чтобы получить доступ ко всем материалам школы
Правила языка 1С
Итак, из наших экспериментов мы можем сделать следующие выводы о правилах языка 1С 8.3:
Проверьте себя
Задание №5. Ответьте на следующие вопросы по уже изученным правилам внутреннего языка 1С 8.3:
Не торопитесь сразу смотреть в ответы. Тщательно подумайте, а затем проверьте себя при помощи ответов ниже.
Обучение программированию на 1С
Краткий обзор языка 1С
Язык 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С. Соблюдение данных правил обязательно для получения сертификата 1С:Совместимо.
Общие требования к конфигурации
Для типизированных объектов метаданных, хранящихся в информационной базе, настоятельно рекомендуется не использовать тип ЛюбаяСсылка. Состав типов того или иного типизированного объекта должен определяться явным образом.
Объекты метаданных верхнего уровня, такие как Справочники, Документы и т.д., рекомендуется сортировать в дереве метаданных по имени. Исключение составляют объекты с префиксом «Удалить», которые допустимо размещать в конце соответствующей ветки метаданных.
Для типизированных объектов метаданных строкового типа рекомендуется использовать переменную длину строки. Свойство «Фиксированная длина» может устанавливаться только в тех случаях, когда действительно необходимо при манипуляции этими данными иметь гарантию, что строка имеет определенную длину, даже несмотря на наличие концевых пробелов.
Подчиненные объекты метаданных, такие как реквизиты, измерения, формы, располагаются в дереве метаданных в соответствии с проектной логикой.
Для оптимизации тех или иных отчетов или для оптимизации выполнения отбора и сортировки в формах списков возможно использование индексирования. При этом индексирование следует использовать сдержанно, так как увеличение числа индексов приводит к дополнительной нагрузке на систему при записи данных и увеличивает объем базы данных.
Имя, синоним комментарий
Для подчиненных объектов метаданных, таких как реквизиты, измерения, ресурсы, рекомендуется не использовать имена, совпадающие с именами объектов-владельцев. Также рекомендуется не использовать имена, которые применяются при именовании таблиц языка запросов (например, «Документ», «Справочник», «РегистрСведений» и т.д.)
Многократное выполнение запросов
Рекомендуется получать все необходимые однотипные данные одним запросом вместо выполнения серии запросов.
Проверка на пустой результат выполнения запросов
Проверку того, что результат выполнения запроса не содержит строк, следует выполнять с помощью метода Пустой(). Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.
Оформление текстов запросов
Использование ключевых слов в запросах «Объединить» и «Объединить все» в запросах
В общем случае, при объединении в запросе результатов нескольких запросов следует использовать конструкцию «ОБЪЕДИНИТЬ ВСЕ», а не «ОБЪЕДИНИТЬ».
Поскольку во втором варианте при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
Исключением являются ситуации, когда выполнение замены нескольких одинаковых строк одной является необходимым условием выполнения запроса.
Использование строк неограниченной длины
Для хранения строк, максимально возможная длина которых заведомо известна, используются строковые реквизиты с длиной, равной максимально возможной.
Когда максимально возможная длина строки неизвестна, для хранения используются строковые реквизиты неограниченной длины.
При этом следует помнить о некоторых ограничениях, возникающих при использовании полей неограниченной длины в языке запросов.
В частности, при вычислении выражений в запросах такие реквизиты необходимо выражать как строку определенной длины — такой, чтобы выражение было вычислено верно.
Программное управление формой
Обращение к процедурам, функциям, реквизитам, свойствам и методам, доступным для формы, из модуля этой формы происходит напрямую, без использования объекта «ЭтаФорма», кроме случаев, когда такое обращение не может быть выполнено иначе.
В разделе инициализации модуля формы запрещается открывать другие формы или диалоги (например, операторами Вопрос(), Предупреждение() и т. д.).
Программное управление формой из других модулей производится через присвоение её реквизитам (свойствам) значений и через вызов её методов или экспортных процедур (функций).
Не допускается делать предположения о свойствах реквизитов формы.
Не допускается обращение к элементам формы не из модуля этой формы: ни непосредственно, ни при помощи перебора коллекции «ЭлементыФормы», ни каким-либо другим способом.
Например, вполне корректно предполагать, что у формы элемента справочника есть свойство «ПараметрОснование», однако предположение о наличии у «ПараметрОснование» свойства «Дата» уже недопустимо.
Обращение к данным информационной базы в обработчиках часто вызываемых событий
Следует минимизировать обращение к данным информационной базы в обработчиках событий, приведенных ниже, поскольку это может существенно замедлить интерактивную работу.
События табличного поля:
В качестве средств минимизации в зависимости от ситуации могут быть:
Обращение к свойству «ТекущаяСтрока» табличного поля
Запрещается использовать свойство «ТекущаяСтрока» для получения значений полей строки табличного поля.
Обращение к данным значениям должно выполняться через «ТекущиеДанные» или «ДанныеСтроки».
При этом следует учитывать, что для динамических списков возможность обращения к значениям полей с помощью свойства «ТекущиеДанные» зависит от видимости соответствующих колонок в списке. Поэтому необходимо явно добавлять данные колонки в источник данных табличного поля перед открытием формы, например:
Данное правило не относится к полям, необходимым для функционирования динамических списков и расширений табличного поля (т.н. системные поля, например: «ПометкаУдаления», «ЭтоГруппа», «Дата» и т.д.). Такие поля являются всегда доступными и не удаляются табличным полем из коллекции колонок динамического списка при изменении видимости или удалении колонок табличного поля.
Требования по локализации модулей
Если в модулях конфигурации встречаются строки, предназначенные для пользовательского интерфейса (сообщения пользователю, надписи в формах, названия и подсказки команд и т.п.), необходимо обеспечить возможность локализации таких строк.
Для этого необходимо применять функцию НСтр() вместо прямого использования строковых литералов. Иное использование строк, предназначенных для пользовательского интерфейса, не допускается.
В том случае, если строка является составной и включает в себя части, зависящие от тех или иных условий, настоятельно рекомендуется использовать логически завершенные, целостные фразы. Для формирования переменной составляющей строки при этом необходимо применять замену подстрок по определенным правилам. При этом можно использовать как функцию СтрЗаменить, так и предусмотреть в конфигурации специально предназначенную для этого функцию.
В функции НСтр() строка ограничивается символами одинарных кавычек.
Такое требование обусловлено частым использованием двойных кавычек в строковых литералах.
В том случае, если все же применяется не замена строк в строке-шаблоне, а сложение строк, то неязыковые символы (пробелы, табуляция и пр.) в начале и конце строк необходимо выделять в отдельные строковые литералы.
Правильно:
В редких случаях строковые литералы из текстов запросов также могут оказаться частью пользовательского интерфейса. В таких случаях строковые литералы необходимо выносить из текста запроса в параметры.
Тексты модулей
Тексты модулей должны быть написаны на русском языке.
Размер табуляции стандартный (4 символа).
Программные модули не должны иметь неиспользуемых процедур и функций.
Программные модули не должны иметь закомментированных фрагментов кода.
Тексты модулей оформляются по принципу «один оператор в одной строке». Наличие нескольких операторов допускается только для «однотипных» операторов присваивания, например:
Текст модуля должен быть оформлен синтаксическим отступом. Для синтаксического отступа используется табуляция.
С крайней левой позиции должны начинаться только:
Процедуры НачатьТранзакцию() и ЗафиксироватьТранзакцию() не являются операторными скобками, поэтому текст внутри этих процедур не сдвигается.
При длине строки более 120 символов следует использовать переносы. Строки более 120 символов делать не рекомендуется, за исключением тех случаев, когда перенос невозможен.
Тексты модулей должны содержать комментарии.
Небольшие комментарии пишутся в конце строки, которую комментируют, например:
Большие комментарии или комментарии к фрагменту кода пишутся перед комментируемым кодом в отдельной строке.
Комментарии записываются по правилам русского языка, то есть должны начинаться с большой буквы и заканчиваться точкой. Текст выравнивается по левой границе комментируемого фрагмента. Между символами комментария «//» и текстом комментария должен быть пробел.
Структура модулей
В программном модуле в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:
Некоторые разделы могут присутствовать только в модулях определенного вида. Например, обработчики событий элементов форм могут присутствовать только в модулях форм, а раздел описания переменных и раздел инициализации не могут быть определены в неглобальных общих модулях, модулях менеджеров объектов, наборов записей, значений констант и модуле сеанса.
Допускается располагать процедуры и функции в особом порядке, если такое расположение лучше иллюстрирует логику работы модуля. Например, если некоторая процедура вызывается из обработчика события элемента формы, то правильным будет расположить их одну за другой, а не «разносить» в разные разделы.
Заголовок модуля
Заголовок модуля представляет собой комментарий в самом начале модуля.
В заголовке модуля приводится его краткое описание и условия применения.
Для общих модулей заголовок является обязательным.
Раздел описания переменных
Переменным модуля обычного приложения, модуля управляемого приложения и внешнего соединения назначается префикс «гл».
Экспортные переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Для не экспортных переменных наличие комментария желательно, но не обязательно.
Комментарий рекомендуется размещать в той же строке, где объявляется переменная.
Процедуры и функции модуля
Процедуры и функции, которые не являются обработчиками событий, размещаются сразу же после описания переменных. Процедуры и функции, связанные между собой по характеру работы или логике работы, рекомендуется располагать вместе.
Обработчики событий элементов формы
После процедур и функций в модуле формы располагают обработчики событий элементов формы. Рекомендуется обработчики одного элемента формы располагать вместе, придерживаясь при этом порядка их следования в описании встроенного языка.
У каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы, следует:
Обработчики событий
Последними из процедур располагаются обработчики событий модуля (формы, объекта, менеджера объекта и т.д.). Для них также рекомендуется придерживаться порядка следования, приведенного в описании встроенного языка.
Раздел инициализации
Раздел инициализации содержит операторы, инициализирующие переменные модуля или объект (форму).
Описание процедур и функций
Процедуры и функции рекомендуется комментировать.
Обязательного комментирования требуют экспортные процедуры и функции.
Прочие процедуры и функции, в том числе обработчики событий, рекомендуется комментировать, если требуется пояснить назначение процедуры (функции) или особенности её работы. Если процедура (функция) не сложна для понимания и ее назначение и порядок работы следуют из ее названия и имен формальных параметров, комментарий можно не писать. Следует избегать комментариев, не дающих дополнительных пояснений о работе процедуры (функции).
Комментарий размещается перед объявлением процедуры(функции) и имеет следующий формат:
Секция «Описание»
Содержит словесное краткое описание назначения и/или принципов работы процедуры(функции).
Секция «Параметры»
Описывает параметры процедуры (функции). Если их нет, секция пропускается. Предваряется строкой «Параметры:».
Секция «Возвращаемое значение»
Описывает тип и содержание возвращаемого значения функции. Предваряется строкой «Возвращаемое значение:». Для процедур эта секция отсутствует.
Исключение составляют функции, которые предназначены только для проверки истинности некоторого факта и которые возвращают в качестве результата проверки значение типа Булево.
Имена таких функций образуются из написания проверяемого факта.
Например, если функция должна проверить, что в переданной строке присутствуют только цифры, то она может называться ТолькоЦифрыВСтроке().
Описание процедур и функций должны отделятся друг от друга в тексте модуля пустыми строками.
Правила образования имен переменных
Имена переменных следует образовывать от терминов предметной области таким образом, чтобы из имени переменной было понятно ее назначение.
Имена следует образовывать путем удаления пробелов между словами. При этом каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Имена переменных запрещается начинать с подчеркивания.
Имена переменных не должны состоять из одного символа. Использование коротких имен переменных допускается только для счетчиков циклов.
Переменные, отражающие состояние некоторого флага, следует называть так, как пишется истинное значение этого флага.
Перенос выражений
Длинные арифметические выражения переносятся следующим образом:
При необходимости параметры процедур, функций, методов могут переноситься следующим образом:
Сложные логические условия в Если…ИначеЕсли…КонецЕсли могут переноситься следующим образом:
Определение типа значения переменной
Определение типа значения переменной необходимо выполнять путем его сравнения с типом, а не каким-либо другим методом.
Правильно:
Получение метаданных объектов
Получение метаданных объекта конфигурации следует выполнять с помощью метода Метаданные() этого объекта, а не путем обращения к свойству глобального контекста «Метаданные», так как второй способ существенно более медленный.
Сортировка таблиц значений
В тех случаях, когда для таблицы значений применяется сортировка по колонкам, содержащим ссылочные значения, необходимо учитывать, что при этом для каждой из этих колонок для всех строк таблицы значений системой будет выполнено обращение к информационной базе за представлением этой ссылки.
Поэтому для таблиц с большим количеством (несколько сотен и тысяч) строк, особенно в алгоритмах, критических ко времени исполнения, рекомендуется сразу, на этапе заполнения, добавлять в таблицу дополнительные колонки с представлениями и сортировку выполнять уже по ним. Если, конечно, это не вызовет аналогичных многократных обращений к информационной базе.
Использование объекта РегистрСведенийМенеджерЗаписи
Чтение записи (набора записей) из регистра сведений без последующей модификации необходимо выполнять запросом.
Во всех остальных случаях объект РегистрСведенийМенеджерЗаписи следует применять только тогда, когда выполнение операций с регистром сведений требует использования отбора одновременно по всем измерениям. При этом менеджер записи использует для выполнения записи два набора записей, устанавливая им соответствующие значения отборов. Поэтому обработчики событий набора записей вызываются и тогда, когда для записи данных используется менеджер записи.
В остальных случаях следует использовать объект РегистрСведенийНаборЗаписей. С точки зрения производительности использование менеджера записей в некоторых случаях будет столь же эффективным, как и использование набора записей, а в некоторых — менее, так как будут выполняться лишние действия.
Копирование строк между таблицами значений произвольной структуры
При копировании строк между различными таблицами значений (табличными частями и т.п.) со схожим составом колонок следует использовать метод глобального контекста ЗаполнитьЗначенияСвойств().
Алгоритмы, использующие данный метод, значительно эффективнее, например, многократного перебора колонок таблицы значений, выполняемого для получения их состава.
Получение представлений для ссылочных значений в табличном документе
При формировании табличного документа запрещено в качестве параметров ячеек с типом заполнения «Параметр» указывать ссылочные значения, поскольку в этом случае в момент вывода данных в табличный документ будет выполнено многократное обращение к базе данных для получения представлений этих значений.
Поэтому в качестве параметров следует указывать сами представления.
Исключением могут быть случаи, когда для получения представлений придется выполнять аналогичное многократное обращение к базе данных.
При этом следует иметь в виду, что при получении представлений для полей непосредственно в самом запросе (через поле Представление или функцией Представление( )) выполняется неявное соединение с таблицей объекта, для которого получаются представления. Для полей составного типа — несколько соединений, для каждого из типов, входящих в состав.
Это может приводить к увеличению времени выполнения запроса (и как следствие, общего времени формирования итогового документа), а при большом количестве типов – к невозможности его выполнения в клиент-серверной версии из-за ограничения Microsoft SQL Server, по которому в запросе не может участвовать больше 256 таблиц. Такие случаи также могут быть исключением для данного правила, в них представления для ссылочных значений допускается получать в момент их вывода в табличный документ.
Поскольку однозначно рекомендовать, какой из способов получения представлений следует выбрать, нельзя, такой выбор должен делаться разработчиком самостоятельно, на основании данных, полученных экспериментально.
Программное создание прикладных объектов
Для программного создания прикладных объектов следует использовать методы соответствующих менеджеров (СоздатьЭлемент(), СоздатьДокумент(), СоздатьНаборЗаписей() и т.д.)
Для программного создания прикладных объектов, у которых существует соответствующие менеджеры объектов, использование конструктора (оператор встроенного языка Новый) запрещается.
Особенности контекстного выполнения на сервере и в режиме внешнего соединения
При разработке кода общего модуля и модулей объектов, которые должны быть доступны на сервере и во внешнем соединении, следует соблюдать следующие правила:
1. Запрещено использование объектов, имеющих тип данных, недоступный на сервере и во внешнем соединении:
2. Запрещено использование средств, отвечающих за диалог с пользователем:
3. Запрещается вызов экспортных процедур других общий модулей, у которых не установлен признак компиляции на сервере и/или во внешнем соединении.
4. Участки кода, в которых используются конструкции, не доступные на сервере или во внешнем соединении, должны выделяться соответствующими инструкциями препроцессору, например:
5. При написании кода модулей объектов, которые исполняются на сервере или доступны во внешнем соединении, недопустимо использовать переменные, процедуры и функции, которые определены в модуле обычного приложения и в модуле управляемого приложения.
6. Для сервера: Надо учитывать, что при передаче управления с клиента на сервер, а также в обратную сторону, существует ограничение на тип передаваемых параметров. Поэтому в качестве параметров процедур (функций), а также возвращаемых значений функций, выполняемых на сервере, следует использовать значения примитивных типов, ссылки на объекты базы данных, системные перечисления, уникальный идентификатор, результат запроса, хранилище значения, таблицу значений, массив, структуру и соответствие, при этом состав передаваемых коллекций также должен удовлетворять приведенным выше ограничениям.
7. Для внешнего соединения: Текст модулей объектов следует писать таким образом, чтобы при работе во внешнем соединении (в частности, при работе WEB-приложения), обеспечивалась работоспособность всей прикладной логики с учетом того, что часть объектов недоступна для использования во внешнем соединении, например, использование средств диалога с пользователем. Недопустимо размещать в общих модулях процедуры и функции, которые недоступны во внешнем соединении и без которых невозможна запланированная методика использования и работы объектов.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.