Имя: Пароль:
1C
 
Как объединить две строки в запросе?
0 V_V_V
 
08.02.11
15:52
В зависимости от типа документа-регистратора на выходе нужно получить различные данные, да еще и обязательно с разным префиксом. Перепробовал разное, ничего не работает. Читал
v8: v8: Конкатенация строк в запросе
v8: v8: Соединить число со строкой в запросе
не подошло - у меня не в тех секциях запроса объединение требуется.

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

   ВЫБОР
       КОГДА ОстаткиТоваров.Регистратор ССЫЛКА Документ.ПриходнаяНакладная
           ТОГДА ПРЕДСТАВЛЕНИЕ(&БукваКонтрагент + ОстаткиТоваров.Регистратор.Контрагент.Код)
       ИНАЧЕ ВЫБОР
               КОГДА ОстаткиТоваров.Регистратор ССЫЛКА Документ.Перемещение
                   ТОГДА ПРЕДСТАВЛЕНИЕ(&БукваСклад + ОстаткиТоваров.Регистратор.СкладОтправитель.Код)
           КОНЕЦ
   КОНЕЦ КАК КодПоставщика,
1 izekia
 
08.02.11
15:53
кажется это не работает
2 mikecool
 
08.02.11
15:53
а так
Выразить(&БукваКонтрагент как строка(1)) + Выразить(ОстаткиТоваров.Регистратор.Контрагент.Код как строка(10))
3 mikecool
 
08.02.11
15:53
+2 при условии , что Код - текстовый
4 V_V_V
 
08.02.11
15:54
Да, ругается

Неверные параметры "+"
ТОГДА ПРЕДСТАВЛЕНИЕ(&БукваСклад <<?>>+ ОстаткиТоваров.Регистратор.СкладОтправитель.Код)
5 V_V_V
 
08.02.11
15:55
(2) Запросу плюс не нравится...
6 mikecool
 
08.02.11
15:55
(4) без представлений пробуй (2)
7 V_V_V
 
08.02.11
16:02
(6) Не дает сохранить строку в конструкторе. Пишет: "Несовместимые типы ВЫРАЗИТЬ".
8 V_V_V
 
08.02.11
16:03
+7 Перед плюсом
9 Дикообразко
 
08.02.11
16:04
(7) у ОстаткиТоваров.Регистратор.СкладОтправитель.Код тип строковой?
10 Дикообразко
 
08.02.11
16:05
(8) у буквы тогда убери выразить
11 V_V_V
 
08.02.11
16:08
(9) Тип числовой. Попробовал преобразовать через ПРЕДСТАВЛЕНИЕ(ОстаткиТоваров.Регистратор.Контрагент.Код)
и убрать (10) - таже ошибка на ВЫРАЗИТЬ
12 Дикообразко
 
08.02.11
16:08
(11) тогда не судьба
13 V_V_V
 
08.02.11
16:11
(12) Хм. Плохо. А надо - там выборка большая...
14 Дикообразко
 
08.02.11
16:12
(13) ну раз длина кода ограничена...разложи код на символы
15 V_V_V
 
08.02.11
16:14
(14) В запросе?
16 Дикообразко
 
08.02.11
16:16
(15) а что?
17 V_V_V
 
08.02.11
16:20
(16) Не пойму зачем и не знаю как, вот и спросил...  :)
18 Дикообразко
 
08.02.11
16:28
вот тут есть пример Книга знаний: v8: Операции преобразования Число в Строку и обратно в запросах

не знаю то, не то... но суть будет понятна
19 V_V_V
 
08.02.11
16:36
(18) Спасибо. С количеством прочитанного потихоньку начинаю догонять, что проблему не победить...
v8: Сложение в запросе ВложенныЗапрос.Цена + "*". Может я хочу невозможного?
20 Дикообразко
 
08.02.11
16:38
(19) получи текст запроса, для длины кода и засуть в текст твоего запроса... :)
хотя это конечно будет выглядеть монструозно
21 Sasha_H
 
08.02.11
17:02
если код числовой то в запросе ничего не сделать такога уж идиология функции ВЫРАЗИТЬ()
22 V_V_V
 
08.02.11
17:05
23 anig99
 
08.02.11
22:59
(22) единственное найденное мною решение пока - использование возможности СКД вызывать функции общих модулей. Т.е. создаем функцию складывающую две строки в общем модуле или ищем в конфе подходящую. Засовываем её в вычисляемое поле. Все.
Пример использования внешней функции http://infostart.ru/public/57892/
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс