1С запрос целое от деления

Недавно в чужом программном столкнулся с тем, что не все программисты 1С знают, как в 1С 8.2 или 8.3 получить остаток от деления.

Периодически встречаются вот такие конструкции:

ОстатокОтДеления = Делимое — Цел(Делимое / Делитель) * Делитель;

Это конечно забавный и остроумный способ. Но есть более простой метод, встроенный в платформу:

ОстатокОтДеления = Делимое % Делитель;

Вот, собственно, и всё!

P.S. Кстати, результат 1%2 = 1, некоторые почему-то думают, что ноль 🙂

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

Рассмотрим задачу, когда необходимо в запросе разделить число на целую и дробную часть.

Пример запроса:

Запрос = Новый Запрос;

| КОГДА (ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))) > &ДробноеЧисло

| ТОГДА (ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))) — 1

| ИНАЧЕ ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))

| КОНЕЦ КАК ЦелаяЧасть,

| КОГДА (ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))) = &ДробноеЧисло

| КОГДА (ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))) > &ДробноеЧисло

| ТОГДА 1 — ((ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0))) — &ДробноеЧисло)

| ИНАЧЕ &ДробноеЧисло — (ВЫРАЗИТЬ(&ДробноеЧисло КАК ЧИСЛО(4, 0)))

Собственные наработки и набитые шишки в моей практике по программированию в 1С.

Страницы

среда, 28 октября 2015 г.

Как найти целое число от числа в запросе

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

Вот собственно необходимо задействовать конструкцию ВЫРАЗИТЬ(). Для положительных чисел необходимо вычесть 0.5, а для отрицательных чисел прибавить 0.5. Вот пример:

ВЫБОР КОГДА ВашеЧисло > 0 ТОГДА
ВЫРАЗИТЬ(ВашеЧисло — 0.5 КАК Число(15, 0))
ИНАЧЕ
ВЫРАЗИТЬ(ВашеЧисло + 0.5 КАК Число(15, 0))