Как соединить строку и число в запросе 1с
добрый день
есть задачка
как бы "разузлования номенклатуры"
т.е. есть табличная часть
с полями количество типа число
и фрмулы- типа строка
не применяя формулы, запросом рекурсивно - очень быстро получаем
количество = количествоР*количествоПотомкаЕстьНулл1
но, есть большое но.
не хочется в цикле бегать после запроса, и нужно как-то применить формулу котрая строка.
в идеале коненчо количество переделатть в строки или добавить колонок в запрос.
//////////
как -то можно соединить воедино число и строку в одном поле запроса в 1с?
Возможно ли используя wi-fi роутера соединить 2 компьютера и установить на одном из них ос?
На ноуте есть образ ос, на компьютере нету(он вообще чистый), флехи нету, есть ли возможность.
В одном поле ввожу число в другом поле должно автоматически проставиться число
Как сделать чтобы например я ввёл в поле volume цифру 1 в поле price бы автоматически проставлялась.
Города через запятую в одном поле запроса
Народ, помогите плз со следующей задачкой. Есть таблица, в ней 2 столбца: Название компаний и.
Определить, возможно ли строку преобразовать в число, и, если возможно, то в какое, целое или вещественное
Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с.
Сложно. Это сильно замедлит выполнение и усложнит запрос (и врядли получиться работать с комплексными числами)
Добавлено через 27 секунд
короче ответ НЕТ
Преобразовать поле запроса в строку
Доброго дня. Просмотрел множество тем на различных форумах, но так и не нашёл решения. Суть вот.
Плагин jQuery.mask. Возможно ли указать не поле ввода, а строку?
$('').mask('+9 (999) 999 99 99'); Возможно сделать так, чтобы не указывать поле а обработать.
Изменение записи в одном поле, если превышено число в другом
Здраствуйте помогите пожалуйста с вопросом у меня в базе есть таблица status в нем есть 3.
Возможно ли с помощью запроса заполнить числом поле "Стаж" в таблице, посредством его вычисления
Доброго времени суток! Подскажите, пожалуйста, возможно ли с помощью запроса заполнить числом поле.
Определить, возможно ли строку преобразовать в число
Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с.
В языке запросов отсутствуют встроенные функции преобразования одних типов данных в другие, например, строк в числа или даты и наоборот. В работе «Выразить строку как число и строку как дату в запросе» были предложены достаточно компактные способы преобразований «из строки». Теперь дошла очередь до обратных к ним преобразований «в строку».
Основной проблемой рассматриваемого преобразования в строку является выделение каждого конкретного разряда исходного числа. Например, число 123 состоит из трех разрядов. Пусть разряды нумеруются справа налево, начиная с нуля. Разряды отличаются весом: нулевой разряд в десятичной позиционной системе счисления имеет вес 1, первый – 10, второй – 100 и так далее. Для выделения каждого разряда требуется найти целое от деления числа на вес разряда, а затем – остаток от деления полученного целого на 10. Первый (второй слева) разряд, таким образом, получится так: 123 разделим на 10, получим 12,3. Затем возьмем целое, получим 12. Затем найдем остаток от деления на 10, получим 2 – искомый первый (второй слева) разряд. Буквальная запись этих выражений в запросе получается очень и очень громоздкой, но существует другой путь.
Этот путь заключается в использовании для нахождения остатка от деления пары функций: СЕКУНДА и ДОБАВИТЬКДАТЕ. Дело в том, что функция СЕКУНДА фактически является функцией остатка от деления на 60 числа секунд, прошедшего с начала времен. Чтобы превратить ее в функцию расчета остатка от деления на 10 достаточно считать секунды шестерками. То есть требуемая функция будет записываться так:
Эта функция выделяет самый правый (нулевой) разряд числа Икс. Чтобы выделить первый разряд, нужно использовать функцию
А чтобы выделить второй – функцию
И так далее. Множитель 60 позволяет выделить разряд десятых долей, 600 – сотых и так далее.
Ограничением рассмотренного подхода является максимальное число секунд при работе с датами. Оно таково, что мы можем выделить не более 10-ти десятичных знаков в числе. Если число значащих знаков больше, исходное число потребуется предварительно разделить на две части «обычным» способом с использованием операции ВЫРАЗИТЬ КАК.
Приведем пример запроса для случая ЧИСЛО(10, 2)
Чтобы сделать запись чуть более короткой, две постоянные - цепочку цифр «0123456789» и начало времен можно вынести во вложенный запрос
Аналогичным образом можно преобразовать число в строку в двоичной системе счисления. Вот запрос для записи в виде строки восьми младших двоичных разрядов заданного числа:
Побочным следствием использованных закономерностей является то, что выражение
можно использовать в запросе для проверки четности числа Икс.
Для перевода даты в строку достаточно перевести в строку по отдельности число дней, месяцев и лет исходной даты. В итоге получается следующий запрос
Как видно, используемые для преобразования в строку выражения довольно просты и компактны, особенно если сравнить их с тем, что приходилось использовать до сих пор.
Всем привет.
Как соединить поля, что бы в результате запроса они были одной строкой.
те
в конструкторе пишу произвольное выражение (ЕПСБУДвиженияССубконто.КБКДт + ЕПСБУДвиженияССубконто.КВД + ЕПСБУДвиженияССубконто.СчетДт), но он ругается.
а надо 1364565645465454(что то типа того)
Запрос, сравнение поля код и числового поля из разных справочников
Всем доброго времени суток. Возникла проблема, при создании запроса. Есть 2 справочника : в 1-ом.
Не заполняет значение поля, при выборе другого поля
У меня есть справичник ТарифЗарплатыВодителя, который имеет реквизиты: КатегорияВодителя и.
Отчет СКД. Пересчет значения поля табличного документа при изменении другого поля
Народ, есть отчет без СКД, нужно разрешить ввод пользователем 5 графы отчета, и на основе.
Убрать поля в запросе (скрыть поля в отчете скд)
В запросе я создаю временную таблицу. В ней сгруппировав поля получаю нужную таблицу. Но некоторые.
ВЫРАЗИТЬ(ЕПСБУДвиженияССубконто.КБКДт как Строка(n))
где n - длина строки
Или если поля имеют фиксированную длинну, то можно и так
ЕПСБУДвиженияССубконто.КБКДт.Наименование + ЕПСБУДвиженияССубконто.КВД.Наименование + ЕПСБУДвиженияССубконто.СчетДт.Код
Эти работают
ЕПСБУДвиженияССубконто.КБКДт.Наименование + ЕПСБУДвиженияССубконто.СчетДт.Код
а эти ни как
ЕПСБУДвиженияССубконто.СубконтоДт1 это КЭК тип справочник
ЕПСБУДвиженияССубконто.КВД это кфо тип перечисление
Потому что
ЭТО
ЕПСБУДвиженияССубконто.КБКДт.Наименование = СТРОКА
А ЭТО
ЕПСБУДвиженияССубконто.СубконтоДт1 <> СТРОКА
Вам выше написали, для операций конкатенации приводите тип к строке!
Пишу
ВЫРАЗИТЬ(ЕПСБУДвиженияССубконто.КВД как Строка(10))
ВЫРАЗИТЬ(ЕПСБУДвиженияССубконто.КВД.Ссылка как Строка(10))
ВЫРАЗИТЬ(ЕПСБУДвиженияССубконто.КВД.Порядок как Строка(10))
пишет несовместимые типы
Добавлено через 7 минут
Для перечислений походу ВЫРАЗИТЬ не работает.
А что если так ЕПСБУДвиженияССубконто.КВД.Метаданные().Имя?
Добавлено через 17 минут
Короче, я провентилировал инет Перечисление нельзя привести к строке в запросе. Или обрабатывайте уже в выборке всё это дело или руками в запросе надо прописывать условие, где каждому значению перечисления руками приписывать нужную строку, типа такого изврата
ЕПСБУДвиженияССубконто.КБКДт.Наименование + ВЫБОР
КОГДА ЕПСБУДвиженияССубконто.КВД = Значение(тут пишите ваше перечисление)
ТОГДА " пишите тут строку"
ИНАЧЕ ""
КОНЕЦ
Соединить поля из 3-х таблиц
Не могу соединить данные из трех таблиц с помощью оператора JOIN, суть задания: Выведите все.
Соединить два поля со списком
я Access так не очень знаю. может кто то подскажет где есть какие то примеры работы с полями со.
Как соединить 2 поля в отчёте
Делается отчёт для печати. Есть отдельно поле в БД 'код_города' и 'телефон'. Как сделать что бы в.
В данной статье будет рассмотрено как реализовано соединение строк / строки с числом внутри запроса системы 1С, и как производится соединение полей с различными типами в строку СКД. Кроме того, поговорим о массовой конкатенации строк в 1С.
1. Соединение строк
Пусть у нас имеется какое-то количество строк, с которыми нужно сделать группировку строк, как в примере таблицы ниже:
Рис. 1 Строки до соединения
Необходимо провести группировку так, чтобы результат выглядел следующим образом:
Рис. 2 Результат соединения строк
Для этого нужно обратиться к полю «Строковое число», после чего привить его к ресурсам, используя следующее выражение: «СоединитьСтроки(строковое_поле)».
Как было в примере до каких-либо действий:
Рис. 3 Пример до соединения
И вот какой результат получился после первых манипуляций:
Рис. 4 После использования поля Строковое число
В данном примере «Информация» – это вычисляемое поле, но вместо него может быть использован любой иной вид поля.
2. Соединение полей в строку в запросе в системе компоновки данных
Пусть необходимо создать строку путем сложения трёх различных полей (Поле1, Поле2 и Поле3) в системе компоновки данных. Но не у всех полей тип соответствует типу «Строка».
В таком случае наиболее очевидное действие – это преобразование численного типа в строчный тип внутри запроса. Для этого надо использовать оператор «Представление(Числовое_поле)», но это не будет полноценной строкой, следовательно, объединение строк не сможет быть осуществлено, то есть будет возникать ошибка, как показано на скриншоте с примером ниже:
Рис. 5 Ошибка при соеднинении строк
Внутри запроса поля не следует трогать, а чтобы произвести объединение строк воспользуемся разделом «Вычисляемые поля», после чего всё становится реализуемым, как показано ниже:
Рис. 6 Объединение строк с использованием Вычисляемых полей
То есть решением будет форматирование исходного типа с данными в строчный тип, это можно делать при помощи оператора «Формат» для придания необходимого вида, например, удалив разделители, как демонстрируется в примере ниже:
Рис. 7 Результат форматирования данных в строчный тип
3. Массовая конкатенация строк в 1С
Операция конкатенации может применяться как в управляемом приложении, так и в обычном, и в мобильном приложениях.
Для того чтобы произвести массовую конкатенацию строк в 1С, необходимо воспользоваться методами «СтрРазделить» и «СтрСоединить». Например, соединение строк будет выглядеть следующим образом:
Рис. 8 Операция конкатенации
Подобная обработка данных имеет довольно быстрое исполнение, а также уменьшает нагрузку и потребление оперативной памяти.
Замечание: данная операция используется при 1000 и более строк, либо при меньшем количестве строк, но большой их длине.
Основное применение функции ВЫРАЗИТЬ() в запросе 1С:Предприятия – выделять из значений составного типа значение требуемого типа.
Синтаксис функции следующий:
Если преобразуемое выражение имеет тип значения отличный от того, к которому требуется привести, то функция вернет NULL.
Проблема выглядит так: при попытке получить данные через точку от полей составного типа происходит соединение со всеми таблицами объектов 1С, входящих в составной тип. А если нужные реквизиты есть не у всех регистраторов или реквизиты имеют различные имена? В таких ситуациях рекомендуется сообщить системе, к какой таблице объектов 1С мы хотим обратиться, чтобы оптимизировать запрос.
Например, допустим, что при выборке данных из регистра «Оплата счетов в 1С 8.3» нам потребовалось получить сумму документа регистратора. Мы сталкиваемся с ситуацией, что в документе «Списание с расчетного счета» есть реквизит «Сумма документа», а в документе «Операция» этот реквизит называется «СуммаОперации». Здесь нам поможет следующий запрос 1С Предприятия:
Здесь для каждого выбранного типа ссылки мы обращаемся к своей таблице, чтобы из нее выбрать нужный нам реквизит.
Но у функции ВЫРАЗИТЬ() есть еще несколько областей применения.
2. Дополнительное применение функции ВЫРАЗИТЬ в запросе 1С 8.3
1. Для строковых типов:
· Если нужно получить подстроку слева (аналог функции Лев()). Приведение строкового типа к «более короткому» строковому типу приводит к обрезанию «не уместившейся» правой части строки.
· Приведение неограниченной строки к строке фиксированной длины. Строки неограниченной длины не могут быть обработаны в запросах 1С:Предприятия при сравнении значений, группировке, если требуется получить РАЗЛИЧНЫЕ. Чтобы обойти эти ограничения нужно преобразовать неограниченную строку к ограниченной:
2. Для числовых типов:
Округление числовых значений в запросе до определенного знака:
Обратим внимание, что ВЫРАЗИТЬ() – это не функция преобразования типов. И хотя ВЫРАЗИТЬ() и имеет английский синоним Cast, не обманывайтесь, это не аналог неявного преобразования типов в SQL. Например, система выдаст ошибку при попытке преобразовать тип из числа в строку.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Читайте также: