Архивы: подстрока

Работаем с персональными данными в запросе 1С

Иногда требуется выдернуть из справочника с полными ФИО данные для представления результата пользователю в усеченном виде.

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

  1. Только фамилия:
    ЛЕВ(Объект.Наименование, СТРНАЙТИ(Объект.Наименование, " ") - 1)

  2. Фамилия и инициал только имени:
    (ВЫРАЗИТЬ(ЛЕВ(Объект.Наименование, СТРНАЙТИ(Объект.Наименование, " ") + 1) КАК СТРОКА(100))) + "."

  3. Фамилия и полные инициалы (имя, отчество):
    (ВЫРАЗИТЬ(ЛЕВ(Объект.Наименование, СТРНАЙТИ(Объект.Наименование, " ") + 1) КАК СТРОКА(100))) + "." + (ВЫРАЗИТЬ(ПОДСТРОКА(ПРАВ(ПРАВ(Объект.Наименование, ДЛИНАСТРОКИ(Объект.Наименование) - СТРНАЙТИ(Объект.Наименование, " ")), ДЛИНАСТРОКИ(ПРАВ(Объект.Наименование, ДЛИНАСТРОКИ(Объект.Наименование) - СТРНАЙТИ(Объект.Наименование, " "))) - СТРНАЙТИ(ПРАВ(Объект.Наименование, ДЛИНАСТРОКИ(Объект.Наименование) - СТРНАЙТИ(Объект.Наименование, " ")), " ")), 1, 1) КАК СТРОКА(1))) + "."

Как преобразовать число в строку в языке запросов 1С

Ранее я уже встречался с проблемой перевода даты в строку в языке запросов 1С. Сегодня при написании запроса в 1C столкнулся с проблемой выражения числа как строки. На просторах сети Интернет я нашел следующее решение, которое сохраню здесь (думаю, что тоже не раз пригодится мне в будущем):

ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 100 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 1000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 10 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 100 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + Объект.Число - (ВЫРАЗИТЬ(Объект.Число / 10 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ "."
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.0001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.00001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.0001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.000001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.00001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)

Как выразить дату как строку в языке запросов 1C

Сегодня при написании запроса в 1C столкнулся с проблемой выражения даты как строки. Операции «Выразить как строка» и «Представление» не работали, сообщая о несовместимости типов данных. Но на просторах сети Интернет я нашел следующее решение, которое сохраняю здесь (думаю, что не раз пригодится мне в будущем):
ПОДСТРОКА("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)