1с скд выразить как число
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПОДСТРОКА(Константы.Ц, Числа.Число_ / 10000000 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.000006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.00006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.0006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.006)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.06)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 0.6)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 6)) / 6 + 1, 1) + "." + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 60)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 600)) / 6 + 1, 1) + ПОДСТРОКА(Константы.Ц, СЕКУНДА(ДОБАВИТЬКДАТЕ(Константы.О, СЕКУНДА, Числа.Число_ * 6000)) / 6 + 1, 1) КАК Строка
ИЗ
(ВЫБРАТЬ
"0123456789" КАК Ц,
ДАТАВРЕМЯ(1, 1, 1) КАК О) КАК Константы,
Числа КАК Числа
ВЫБРАТЬ
ПОДСТРОКА("0123456789", ДЕНЬ(&Дата) / 10 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата))) / 6 + 1, 1)
+ "/"
+ ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата) / 10 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата))) / 6 + 1, 1)
+ "/"
+ ПОДСТРОКА("0123456789", ГОД(&Дата) / 1000 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.06)) / 6 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.6)) / 6 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 6)) / 6 + 1, 1) КАК Строка
Выразить (Cast) — данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. В случае, если выражение будет содержать тип, отличный от требуемого типа, будет возвращено значение NULL.
- Выражение — преобразуемое выражение;
- УказаниеТипа (Строка). Содержит строку типа. Например, «Число», «Строка» и т.п. Кроме примитивных типов данная строка может содержать имя таблицы. В этом случае будет осуществлена попытка выразить к ссылке на указанную таблицу.
ЕстьNull (IsNull) — данная функция возвращает значение второго параметра в случае, если значение первого параметра NULL. В противном случае будет возвращено значение первого параметра.
- Выражение1 — проверяемое значение;
- Выражение2 — возвращаемое значение, если значение Выражение1 есть NULL.
ACos — вычисляет арккосинус в радианах.
- Выражение (Число). Значение косинуса (в диапазоне -1 … 1), по которому определяется угол.
ASin — вычисляет арксинус в радианах.
- Выражение (Число). Значение синуса (в диапазоне -1 … 1), по которому определяется угол.
ATan — вычисляет арктангенс в радианах.
- Выражение (Число). Значение тангенса, по которому определяется угол.
Cos — вычисляет косинус.
- Выражение (Число). Задается в радианах.
Exp — возведение числа e в степень.
- Выражение (Число). Значение степени.
Log — вычисляет натуральный логарифм.
- Выражение (Число). Исходное число, больше 0.
Log10 — вычисляет логарифм X по основанию 10.
- Выражение (Число). Исходное число, больше 0.
Pow — возведение в степень.
- Основание (Число). Основание операции возведения в степень.
- Показатель (Число). Показатель степени.
Sin — вычисляет синус.
- Выражение (Число). Задается в радианах.
Sqrt — вычисляет квадратный корень.
- Выражение (Число). Неотрицательное число.
Tan — вычисляет тангенс.
- Выражение (Число). Значение синуса, по которому определяется угол.
Окр (Round) — округляет исходное число до нужной разрядности. Режим округления стандартный (1,5 как 2).
- Выражение (Число). Исходное число;
- Разрядность (Число). Число знаков дробной части, до которых производится округление.
Цел (Int) — отсекает дробную часть числа.
- Выражение (Число). Дробное число.
Функции общих модулей
Выражение механизма компоновки данных может содержать вызовы функций глобальных общих модулей конфигурации. Никакого дополнительно синтаксиса для вызова таких функций не требуется.
В данном примере будет осуществлен вызов функции «СокращенноеНаименование» из общего модуля конфигурации.
Отметим, что использование функций общих модулей разрешено только при указании соответствующего параметра процессора компоновки данных.
Кроме того, функции общих модулей не могут быть использованы в выражениях пользовательских полей.
Представление (Resentation) — данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами «; «. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка «».
Строка (String) — данная функция преобразует переданное значение в строку.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами «; «. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка «».
ЗначениеЗаполнено (ValueIsFilled)
Для значений NULL, Неопределено всегда возвращает Ложь.
Для значений Булево всегда возвращает Истину.
Для остальных типов возвращает Истину, если значение отличается от значения по умолчанию для данного типа.
УровеньВГруппировке (LevelInGroup) — данная функция получает текущий уровень записи относительно группировки.
Может быть использована для получения уровня вложенности записи в иерархической группировке.
Уровень (Level) — функция предназначена для получения текущего уровня записи.
НомерПоПорядку (SequenceNumber) — получить следующий порядковый номер.
НомерПоПорядкуВГруппировке (SequenceNumberInGrouping) — возвращает следующий порядковый номер в текущей группировке.
Формат (Format) — получить отформатированную строку переданного значения.
Синтаксис:
Формат(Значение, ФорматнаяСтрока)
- Значение — выражение, которое требуется отформатировать;
- ФорматнаяСтрока — форматная строка задается в соответствии с форматной строкой 1С:Предприятие.
Пример:
Формат(РасходныеНакладные.СуммаДок, "ЧДЦ=2")
НачалоПериода (BeginOfPeriod) — функция предназначена для выделения определенной даты из заданной даты.
Синтаксис:
НачалоПериода(Дата, ТипПериода)
- Дата (Дата). Заданная дата;
- ТипПериода (Строка). Содержит одно из значений: Минута; Час; День; Неделя; Месяц; Квартал; Год; Декада; Полугодие.
Пример:
НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц")
Результат: 01.10.2002 0:00:00
КонецПериода (EndOfPeriod) — функция предназначена для выделения определенной даты из заданной даты.
Синтаксис:
КонецПериода(Дата, ТипПериода)
- Дата (Дата). Заданная дата;
- ТипПериода (Строка). Содержит одно из значений: Минута; Час; День; Неделя; Месяц; Квартал; Год; Декада; Полугодие.
Пример:
КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Неделя")
Результат: 13.10.2002 23:59:59
ДобавитьКДате (DateAdd) — функция предназначена для прибавления к дате некоторой величины.
Синтаксис:
ДобавитьКДате(Выражение, ТипУвеличения, Величина)
- Выражение (Дата). Исходная дата;
- ТипУвеличения (Строка). Содержит одно из значений: Минута; Час; День; Неделя; Месяц; Квартал; Год; Декада; Полугодие.
- Величина (Число). На сколько необходимо увеличить дату, дробная часть игнорируется.
Пример:
ДобавитьКДате(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц", 1)
Результат: 12.11.2002 10:15:34
РазностьДат (DateDifference) — функция предназначена для получения разницы между двумя датами.
Синтаксис:
РазностьДат(Выражение1 , Выражение2 , ТипРазности)
- Выражение1 (Дата). Вычитаемая дата;
- Выражение2 (Дата). Исходная дата;
- ТипРазности (Строка). Содержит одно из значений: Секунда; Минута; Час; День; Месяц; Квартал; Год.
Пример:
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34),
ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), "ДЕНЬ")
Результат: 2
Подстрока (Substring) — данная функция предназначена для выделения подстроки из строки.
Синтаксис:
Подстрока(Строка, Позиция, Длина)
- Строка (Строка). Строка, из которой выделяют подстроку;
- Позиция (Число). Позиция символа, с которого начинается выделяемая из строки подстрока;
- Длина (Число). Длина выделяемой подстроки.
Пример:
ПОДСТРОКА(Контрагенты.Адрес, 1, 4)
ДлинаСтроки (StringLength) — функция предназначена для определения длины строки.
- Строка (Строка). Строка, длину которой определяют.
15. Год (Year) — данная функция предназначена для выделения года из значения типа Дата.
- Дата (Дата). Дата, по которой определяют год.
Квартал (Quarter) — данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4.
- Дата (Дата). Дата, по которой определяют квартал
Месяц (Month) — данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапа-зоне от 1 до 12.
- Дата (Дата). Дата, по которой определяют месяц.
ДеньГода (DayOfYear) — данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365(366).
- Дата (Дата). Дата, по которой определяют день года.
День (Day) — данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31.
- Дата (Дата). Дата, по которой определяют дня месяца.
Неделя (Week) — данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1.
- Дата (Дата). Дата, по которой определяют номера недели.
ДеньНедели (WeekDay) — данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7(воскресенье).
- Дата (Дата). Дата, по которой определяют день недели .
Час (Hour) — данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23.
- Дата (Дата). Дата, по которой определяют час суток.
Минута (Minute) — данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59.
- Дата (Дата). Дата, по которой определяют минута часа.
Секунда (Second) — данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59.
Вычислить (Eval) — предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
- Выражение (Строка). Cодержит вычисляемое выражение;
- Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
Например:
- В данном примере в результате получится отношение суммы по полю «Продажи.СуммаОборот» записи группировки к сумме того же поля во всей компоновке.
- ТипРасчета (Строка). В случае если данный параметр имеет значение «ОбщийИтог», выражение будет вычисляться для всех записей группировки. В случае если значение параметра «Группировка», значения будут вычисляться для текущей групповой записи группировки.
ВычислитьВыражение (EvalExpression) — предназначена для вычисления выражения в контексте некоторой группировки. Функция учитывает отбор группировок, но не учитывает иерархические отборы. Функция не может применяться к группировке в групповом отборе этой группировки.
ВычислитьВыражение ( Выражение , Группировка , ТипРасчета , Начало , Конец , Сортировка , ИерархическаяСортировка , ОбработкаОдинаковыхЗначенийПорядка )
- Выражение (Строка). Содержит вычисляемое выражение;
- Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем;
- ТипРасчета (Строка). В случае если данный параметр имеет значение «ОбщийИтог», выражение будет вычисляться для всех записей группировки. В случае если значение параметра «Группировка», значения будут вычисляться для текущей групповой записи группировки. Если параметр имеет значение «ГруппировкаНеРесурса», то при вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки. При вычислении функции ВычислитьВыражение со значением «ГруппировкаНеРесурса» для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра «Группировка». Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля – ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение, с указанным параметром «ГруппировкаНеРесурса». Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов. Если параметр имеет значение «Иерархия», то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля «% в группе иерархии» генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления «Иерархия».
- Начало. Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из:
- «Первая» («First»). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) – получение третьей записи от начала группировки. Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
- «Последняя» («Last»). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки. Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
- «Предыдущая» («Previous»). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи. Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то получается первая запись группировки. При получении предыдущей записи для итога по группировке считается, получается первая запись.
- «Следующая» («Next»). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи. Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая, то считается, что записей нет. При получении следующей записи для итога по группировке считается, что записи нет.
- «Текущая» («Current»). Необходимо получить текущую запись. При получении для итога по группировке получается первая запись.
- «ОграничивающееЗначение» («BoundaryValue»). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания. В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, и оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.
- «Первая» («First»).
- «Последняя» («Last»).
- «Предыдущая» («Previous»).
- «Следующая» («Next»).
- «Текущая» («Current»).
- «ОграничивающееЗначение» («BoundaryValue»).
- «Вместе» («Together») — обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей;
- «Отдельно» («Separately») — обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания;
Пример:
Получение отношения суммы по полю «Продажи.СуммаОборот» записи группировки к сумме того же поля во всей компоновке:Встроенная функция запроса ВЫРАЗИТЬ() используется не только для приведения, но и для округления чисел.
Для этого используется такой синтаксис:
Общие особенности использования в запросе
Если в качестве параметра передано не числовое значение, это может не вызывать ошибки выполнения запроса, но значение корректно не обработается:
Например, если передан NULL или он сформировался при соединениях таблиц, значение на выходе останется NULL:
Передача же «Неопределено» вызывает ошибку «Несовместимые типы ВЫРАЗИТЬ»:
- Ссылочные типы или значения БУЛЕВО вызывают такую же ошибку (ИСТИНА не приводится к 1, а ЛОЖЬ к 0).
- ВЫРАЗИТЬ строку как число также нельзя, используя эту функцию.
Поэтому следует обрабатывать/проверять значение до его передачи в качестве параметра функции.
Обработка значения производится по методам округления (0.5 округляется до 1.0), поэтому, если требуется получить целое значение, то следует перед округлением вычесть 0.5 (половину цены шага)
Для округления до десятых в меньшую сторону вычесть 0.5, до сотых 0.05.
Демонстрация использования ВЫРАЗИТЬ в запросе для округления
ВЫБРАТЬ
1 . 56 КАК ЧислоПример ,
ВЫРАЗИТЬ ( 1 . 56 КАК ЧИСЛО ( 15 , 0 ) ) КАК ДоЦелого ,
ВЫРАЗИТЬ ( 1 . 56 — 0 . 5 КАК ЧИСЛО ( 15 , 0 ) ) КАК ДоЦелогоВниз ,
ВЫРАЗИТЬ ( 1 . 56 КАК ЧИСЛО ( 15 , 1 ) ) КАК ДоДесятых ,
ВЫРАЗИТЬ ( 1 . 56 — 0 . 05 КАК ЧИСЛО ( 15 , 1 ) ) КАК ДоДесятыхВниз ,
ВЫРАЗИТЬ ( 1 . 56 КАК ЧИСЛО ( 15 , 2 ) ) КАК ДоСотыхРеклама должна объяснить нам, без каких излишеств мы не можем прожить.
— Э.Макензи , 14 фразЧитайте также: