Как сделать модуль числа в 1с

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Рассмотрим один из примитивных типов, с которым приходится сталкиваться разработчикам на платформе 1С 8.3, – Число. В этой статье мы научимся задавать числа в коде, создавать реквизиты с типом число , получать случайное число, округлять числа и получать из числа с дробью целое число.

Тип число в 1С

Задать число в коде просто: нужно какой-то переменной просто присвоить определенное число.

Так задаётся целое число:

А так задаются дробные числа:

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

Причем, как непосредственно над числами:

Так и над переменными с типом число:

Если нужно инвертировать число, т.е. поставить какому-то уже заданному числу обратный знак (например, было 5, стало -5), то его нужно умножить на -1.

Сделать это можно несколькими способами:

Если нам нужно создать реквизит какого-то объекта, с типом число, то в свойстве Тип реквизита нужно выбрать тип Число. На картинке ниже у справочника создан реквизит с типом Число.

Тип число

А также задать его точность и длину.

Длина и точность типа число

Остановимся на точности и длине подробнее.

Точность – это максимальное количество знаков после запятой.

Длина – это максимальное количество разрядов в числе (включая знаки после запятой).

Например, если длина 5, а точность 3, то максимальное число будет 99,999.

Если длина 5, а точность 0, то – 99999.

А если длинна 3, а точность 3, то – 0,999. Т.е когда длинна равна точности мы не сможем задать число равное 1.

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

Точно также, реквизит с типом число нужной длинны и точности можно создать на управляемой форме.

Число на управляемой форме 1С

Случайное число в 1С

В платформе 1С 8.3 имеется возможность сгенерировать случайное целое число при помощи генератора случайных чисел, который так и называется ГенераторСлучайныхЧисел. Для генерации случайного числа нужно воспользоваться методом этого объекта СлучайноеЧисло.

Рассмотрим, простой пример генерации случайного числа.

В этом случае Число1 будет сгенерировано от 0 до 4294967295 (2^32 -1).

В примере выше метод СлучайноеЧисло без параметров, но у этого метода есть два параметра:

Оба параметра являются необязательных и с их помощью можно задать верхнюю и нижнюю границу генерации случайных чисел. Причем параметр НижняяГраница не может быть меньше нуля, а параметр ВерхняяГраница не может быть больше 4294967295.

Например, в этом случае будет сгенерировано случайное число от 1 до 100.

Округлить число в 1С

В платформе 1С имеется возможность округления чисел по определенному правилу. Для этих целей существует метод Окр. Этот метод является функцией, которая принимает число, нужное для округления, и возвращает округленное число. Данный метод имеет следующий синтаксис:

Число – число, которое будет округляться;

Разрядность – до какого количества знаков после запятой нужно округлить число (если разрядность равна 0, то число будет округлено до целого числа).

РежимОкругления – системное перечисление, которое имеет два значения: РежимОкругления.Окр15как10 – в этом случае 1.5 округляется до 1, РежимОкругления.Окр15как20 – 1.5 округляется до 2. Если этот параметр не задан, то по умолчанию 1.5 округляется до 2

В этом случае будет следующий результат:

Округлить число в 1С

Целое число в 1С

Если предыдущий метод округляет число, то также имеется возможность получать целое число, т.е. просто отбросить дробную часть числа. Делает это метод Цел. Данный метод является функцией, принимающей единственный параметр – число, у которого нужно отбросить дробную часть, и возвращающей полученное целое число.

Рассмотрим работу этого метод в сравнении с методом округления числа.

Должен получиться следующий результат:

Целое число и округлить число в 1С

Из результата вы видите, что нельзя использовать метод Окр для получения целого числа, он именно округляет и не всегда может дать требуемый результат. Для получения целого числа используйте метод Цел.

Степень числа в 1С

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

Рассмотрим ряд примеров:

Степень числа в 1С

Из примеров видно, что мы можем возводить в положительную и отрицательную степень, а также степень может быть дробной.

Функции чисел в 1С

В платформе 1С 8.3 имеется другие функции пот работе с числами , познакомится с ними можно в синтаксис-помощнике. В подразделе Функции работы со значениями типа Число.

Функции работы со значениями типа число

Другие статьи о примитивных типах:

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

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

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.


Как-то раз с коллегой зашел разговор о том почему в платформе не реализована функция получения модуля числа, ведь для учетной системы это довольно нужная вещь ( скорее всего разработчики платформы еще заняты написанием функции инкрементации и им не до этого , кстати если у вас есть предположения, то пишите в комментариях) и мы обсуждали, что способов написания такой функции может быть несколько и я решил посчитать, а сколько же их можно придумать. Конечно большинство из них "высосаны из пальца" и не могут использоваться на практике в виду здравого смысла, но нас это не останавливает), итак, поехали!


1.Наиболее логичный и распространенный способ, проверяем на превышение нуля и инвертируем значение при необходимости

2.Также довольно распространенный способ, используем функцию Макс()

На этом адекватные способы закончились) и начинаются извращения начинаем использовать


3.Перевести в строку, избавиться от минуса и конвертировать обратно в число?! Легко!

4.Далее вспоминаем, что можем использовать com-объекты, а это открывает нам удивительные возможности


Изначально я использовал такой код:

Но в серверном контексте я получил ошибку отсутствия класса из-за различия в разрядности, а делать обертку на корпоративном сервере не хотелось, поэтому я решил использовать другой com, а именно regexp


5.Используем список значений и сортируем, почему нет?


6.Используем запрос, в принципе это нормальный способ и т.к. вычисление производится на стороне СУБД я решил его тоже включить

7.Далее вспоминаем из курса школьной программы гуглим, что

Модуль числа a – это арифметический квадратный корень из квадрата числа a , исходя из этого пишем функцию

8.Используем Формат , чтобы избавиться от минуса и используем функцию Вычислить

Да остановись уже!

9.Здесь вообщем то уже читерство, используем ОписаниеТипов с допустимым знаком "+" и если после приведения результат = 0, то инвертируем значение

10.И напоследок используем такой же подход, перехватываем исключение в функции, где параметр положительное число, например, СлучайноеЧисло

И в заключение этой "шедевральной" статьи график (обработка во вложении) по скорости выполнения на 10000 итерациях. Версия платформы: 8.3.13.1513


Ожидаемо запрос и com самый медленный ввиду инициализации объектов, а математика самая быстрая.

Знаешь еще способы — пиши в комментах!

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

1С:Предприятие режим Конфигуратора

В языке программирования 1С все операторы имеют два написания: русское и английское. К примеру, оператор Новый(“”) аналогичен по смыслу и действию оператору New(“”) . Обычно все же пишут код на одном языке (чаще русском), однако не возбраняется (хотя и считается плохим стилем программирования) смешивать оба языка в одном модуле. Мы в описании языковых конструкций будем приводить только русский вариант их написания.

Каждая языковая конструкция будет описана в следующем формате:

ЭлементЯзыка(Параметр1, Параметр2,…, ПараметрN) [КлючевоеСлово]

Здесь:

  • Параметр1, Параметр2, …, ПараметрN — список параметров;
  • КлючевоеСлово — дополнительное ключевое слово, которое может присутствовать или отсутствовать в той или иной языковой конструкции.

Если у элемента языка нет параметров, скобки опускаются. Квадратные скобки [ ] означают, что параметр или ключевое слово, заключенные в них, необязательны и могут как присутствовать, так и отсутствовать.
Если среди элементов необходимо выбрать только один, они будут разделены следующим образом: Элемент1|Элемент2|Элемент3.

Кроме того, будут представлены примеры программного кода с использованием описываемой языковой конструкции с подробными комментариями.

Наша первая обработка

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

Мы будем экспериментировать на внешней обработке. Давайте создадим ее. Для этого в режиме Конфигуратора мы должны выбрать команду меню Файл | Новый и в открывшемся списке выбрать вариант Внешняя обработка. Откроется окно создания новой обработки:

Создаем внешнюю обработку

Рисунок “Создаем внешнюю обработку”

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

Задаем имя и примечание внешней обработке 1с предприятие 8.3

Рисунок “Задаем имя и примечание”

Имя (идентификатор) обработки, как и имя любого объекта 1С, будь то имя справочника, документа или переменной, не должно содержать пробелов. Регистр не учитывается, т. е. НашаПерваяОбработка и нашаперваяобработка — это один и тот же объект, просто первое читается удобнее.

Комментарий предназначен для записи дополнительной информации об объекте. Теперь создадим форму обработки. Для этого щелкнем правой кнопкой мыши на пункте Формы окна создания обработки и выберем пункт Добавить. Откроется окно конструктора формы обработки:

Конструктор формы обработки

Рисунок “Конструктор формы обработки”

Конструктор формы обработки 1с предприятие

Здесь мы также можем задать имя, синоним и комментарий — на этот раз для формы, указать тип формы (обычная или управляемая, т. е. для работы через Интернет), определить положение командной панели.
Оставим все по умолчанию и нажмем кнопку Готово.
Готовая пустая форма содержит внизу командную панель, на которой расположены три кнопки:


Рисунок “Так выглядит пустая форма обработки”

Выполнить (запускает обработчик выполнения обработки) , Закрыть (закрывает обработку) и кнопку с точками , предназначенную для добавления новых кнопок.

Ниже командной панели расположены вкладки, относящиеся к создаваемой форме:

  • Диалог (собственно форма с элементами, размещенными на ней),
  • Модуль (здесь пишется программный модуль формы)
  • и вкладка со списком реквизитов.

Программный модуль формы сразу после создания выглядит так, как показано на картинке:

Модуль формы новой обработки с одной-единственной пустой процедурой

Рисунок “Модуль формы новой обработки с одной-единственной пустой процедурой”

Какие бывают модули 1С Предприятие 8.3?

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

  • Глобальный контекст. Образуется значениями констант, перечислений, регистров и прочих объектов метаданных, определенных в дереве конфигурации, системными переменными, процедурами и функциями, а также переменными, процедурами и функциями, находящимися в общих модулях конфигурации, объявленными с ключевым словом Экспорт. Данные, образующие глобальный контекст, доступны из любых других модулей конфигурации.
  • Локальный контекст конкретного модуля. Образуется значениями переменных, процедур и функций, находящимися в конкретном программном модуле. Эти значения являются локальными и доступны только внутри модуля, в котором находятся. Исключение— использование в качестве параметров. Например, переменные определены в каком-либо модуле, а потом из этого модуля следует вызов процедуры (или функции), находящейся в одном из общих модулей. В этом случае значения локальных переменных могут быть использованы в качестве параметров.

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

Структура программного модуля

Программный модуль делится на три части.

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

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



Любая современная программа состоит из определённого программного кода. Это написанные на специальном языке последовательности действий, которые обязательно должны быть выполнены. Подобная программа, написанная в каком-либо редакторе, обязательно должна где-то находиться. Современные программисты в большинстве случаев пишут код программ в особых текстовых файлах с разным расширением: *.html, *.php, *.cpp и др.

Что такое 1С Модуль?

Если бы не такое понятие, как Конфигурация 1С, можно было бы полагать, что код языка 1С также может быть написан в обычном текстовом файле со специфическим расширением. Но понятие Конфигурации 1С включает в себя определённое количество настроек, специальных шаблонов, форм и прочих элементов. Именно по этой причине код Модуля 1С хранится в разных местах конфигурации. Сама конфигурация состоит из определённых объектов, каждый из которых имеет в своём составе иные вложенные объекты, например, как справочник, который имеет несколько форм.

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

Как используется модуль 1С?

Данная программа может быть грубо поделена на два основных вида:

1. Определённая реакция на события.
2. Метод объекта.

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

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

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

События можно разделить на пользовательские и на системные.

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

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

Работа с объектом 1С

Работа с модулем определённого объекта 1С производится в режиме Конфигуратора 1С. С помощью окна конфигурации можно его открыть.

В конфигурации 1С существуют совершенно разные модули:

  • Модули приложения. После нажатия правой кнопкой мыши в верхней части окна конфигурации можно выбрать модули точек входа в программу;



  • Общие модули расположены в ветке с одноимённым названием: Общие ? Общие модули. Достаточно просто нажать на неё двойным кликом мыши;



  • Модули форм 1С, в которых обычно прописывается реакция на произведённое нажатие кнопок, меню и иные интерфейсные объекты, находятся в специальном редакторе формы. Чтобы воспользоваться ими, достаточно просто открыть любую ветку выбранного объекта, нажать двойным кликом на форму и сразу откроется редактор, внизу которого присутствует три закладки: Диалог, Модуль, Реквизиты. Одна из них и является модулем формы 1С.





Состав модуля 1С

Программный модуль состоит из набора определённых функций, каждая из которых представляет собой обработчик методов и событий. В начале модуля обычно располагаются переменные, которые используют сами обработчики и события в данном модуле. В самой нижней части модуля объекта 1С можно расположить любой программный код, но без предварительного оформления процедуры или функции. Многие программисты называют эту часть автостартом модуля. Обычно она используется для первоначальной инициализации переменных.



Контекст

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

Читайте также: