|
Обрезание результата полей | ☑ | ||
---|---|---|---|---|
0
zzzLEXzzz
26.12.12
✎
10:32
|
Привет всем, люди ну помогите новичку, вот код отчёта
Процедура ОтчетЭфесРус(ТабДок, ДатаКонец, ДатаНачало, Контрагент, Номенклатура) Экспорт //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОтчетЭфесРус) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Макет = ОтчетОбъект.ПолучитьМакет("ОтчетЭфесРус"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.Номер, | РеализацияТоваровУслуг.Комментарий, | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.Представление, | РеализацияТоваровУслуг.Товары.( | Номенклатура.Артикул, | Номенклатура.Наименование, | РеализацияТоваровУслуг.Товары.Количество * РеализацияТоваровУслуг.Товары.Коэффициент * РеализацияТоваровУслуг.Товары.Номенклатура.КолЛвШТ КАК Количество, | Коэффициент, | Номенклатура.КолЛвШТ | ), | РеализацияТоваровУслуг.Контрагент.Код, | РеализацияТоваровУслуг.Контрагент.Наименование, | РеализацияТоваровУслуг.Контрагент.Родитель.Код |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачало И &ДатаКонец | И РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура) | И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)"; Запрос.УстановитьПараметр("ДатаКонец", ДатаКонец); Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы"); ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы"); ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); ТабДок.Вывести(ТоварыОбластьШапкаТаблицы); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать(); Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи); ТоварыОбластьДетальныхЗаписей.Параметры.Дата = ВыборкаДетальныеЗаписи.Дата; ТоварыОбластьДетальныхЗаписей.Параметры.Номер = ВыборкаДетальныеЗаписи.Номер; ТоварыОбластьДетальныхЗаписей.Параметры.Комментарий = ВыборкаДетальныеЗаписи.Комментарий; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентКод = ВыборкаДетальныеЗаписи.КонтрагентКод; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентНаименование = ВыборкаДетальныеЗаписи.КонтрагентНаименование; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентРодительКод = ВыборкаДетальныеЗаписи.КонтрагентРодительКод; ТоварыОбластьДетальныхЗаписей.Параметры.Представление = ВыборкаДетальныеЗаписи.Представление; ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ КонецПроцедуры Поля куда попадает "комментарий" и "представление" надо сократить, т.е сейчас попадает в "комментарий" например это значение"[523829584]-перебить" а нужно чтобы попадало только это "523829584" чисто цифры, с "представление" похоже, но на примере "комментарий" я думаю смогу сам сделать, подскажите пожалуйста как это сделать. |
|||
1
Ёпрст
26.12.12
✎
10:53
|
(0) обрежь его в самом запросе через
выразить как строка |
|||
2
lEvGl
гуру
26.12.12
✎
10:55
|
(1) ну это если фикс количество надо, а если Только цифры, то наверно только при переборе результата
|
|||
3
zzzLEXzzz
26.12.12
✎
10:56
|
тут нужно первую квадратную скобку вырезать и всё что после цифр
|
|||
4
andreymongol82
26.12.12
✎
10:59
|
(3) Сказали же. Перебором результата запроса
|
|||
5
Галахад
гуру
26.12.12
✎
11:01
|
Найти, Сред и другие функции работы с строками...
|
|||
6
Buster007
26.12.12
✎
11:03
|
СтрЗаменить
|
|||
7
Buster007
26.12.12
✎
11:03
|
+(6) не, не пойдет) я думал там только скобочки)
|
|||
8
GANR
26.12.12
✎
11:07
|
(5)(6) В языке ЗАПРОСОВ этого нет. Нужно раздробить строку на символы и конкатенировать цифры.
Для этого понадобятся 2 вещи: 1. Поздапрос, генерирующий последовательность чисел (номеров символов строки). 2. Получить каждый символ строки вот таким образом ПОДСТРОКА(Комментарий, Подзапрос1.ОчередноеЧисло, 1) Пример подобного запроса здесь v8: Запрос в сообщении № 14. Мозгодробильно, но это единственный способ в рамках 1С-запросов. |
|||
9
GANR
26.12.12
✎
11:10
|
+(8)(0) Ну, а если не принципиально именно запросом делать - сойдет (5) и (6)
|
|||
10
НЕА123
26.12.12
✎
11:11
|
ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "0" и "9"
Тогда ПОДСТРОКА(Комментарий,1,1) Иначе "" Конец + ВЫБОР КОГДА ПОДСТРОКА(Комментарий,2,1) МЕЖДУ "0" и "9" Тогда ПОДСТРОКА(Комментарий,2,1) Иначе "" Конец + ВЫБОР КОГДА ПОДСТРОКА(Комментарий,3,1) МЕЖДУ "0" и "9" Тогда ПОДСТРОКА(Комментарий,3,1) Иначе "" Конец + и т.д. типа так... |
|||
11
GANR
26.12.12
✎
11:11
|
(7) Почему же? Перебрать символы строки, и заменить множество символов, не являющихся цифрами пустой стрококй - и всё.
|
|||
12
GANR
26.12.12
✎
11:12
|
(10) Лобовое решение, быстро работает, но текст запроса будет громоздок.
|
|||
13
НЕА123
26.12.12
✎
11:13
|
а вообще
(2)(4)(5)(6)(8) + 1 |
|||
14
Бледно Золотистый
26.12.12
✎
11:15
|
Зачем пугать ТСа, ведь он уже перебирает результат при выводе. Делай как в (2).
|
|||
15
zzzLEXzzz
26.12.12
✎
11:16
|
Извиняюсь за свою глупость, HEA12 скажите в какое место в коде я должен это вставить?
|
|||
16
sapphire
26.12.12
✎
11:16
|
... а после сабж поля становятся взрослее? :)))
|
|||
17
andreymongol82
26.12.12
✎
11:19
|
(16) И могут есть кошерную пищу
|
|||
18
GANR
26.12.12
✎
11:19
|
(15) В тексте запроса, взамен фразы РеализацияТоваровУслуг.Комментарий, но ты уверен, что длина комментария и позиция последней цифры не очень большая? Если да - то только (8).
|
|||
19
GANR
26.12.12
✎
11:20
|
+(18) >Если да - то только (8).
В смысле, если длина большая |
|||
20
zzzLEXzzz
26.12.12
✎
11:22
|
(18) да, там всегда будет только 9 цифр, спасибо огромное за решение, щас буду пробовать
|
|||
21
GANR
26.12.12
✎
11:24
|
(20) Значит (12)
|
|||
22
zzzLEXzzz
26.12.12
✎
11:33
|
(20) так?
Процедура ОтчетЭфесРус(ТабДок, ДатаКонец, ДатаНачало, Контрагент, Номенклатура) Экспорт //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОтчетЭфесРус) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Макет = ОтчетОбъект.ПолучитьМакет("ОтчетЭфесРус"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.Номер, |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,1,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,2,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,2,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,3,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,3,1) |Иначе "" |Конец | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.Представление, | РеализацияТоваровУслуг.Товары.( | Номенклатура.Артикул, | Номенклатура.Наименование, | РеализацияТоваровУслуг.Товары.Количество * РеализацияТоваровУслуг.Товары.Коэффициент * РеализацияТоваровУслуг.Товары.Номенклатура.КолЛвШТ КАК Количество, | Коэффициент, | Номенклатура.КолЛвШТ | ), | РеализацияТоваровУслуг.Контрагент.Код, | РеализацияТоваровУслуг.Контрагент.Наименование, | РеализацияТоваровУслуг.Контрагент.Родитель.Код |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачало И &ДатаКонец | И РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура) | И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)"; Запрос.УстановитьПараметр("ДатаКонец", ДатаКонец); Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы"); ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы"); ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); ТабДок.Вывести(ТоварыОбластьШапкаТаблицы); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать(); Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи); ТоварыОбластьДетальныхЗаписей.Параметры.Дата = ВыборкаДетальныеЗаписи.Дата; ТоварыОбластьДетальныхЗаписей.Параметры.Номер = ВыборкаДетальныеЗаписи.Номер; ТоварыОбластьДетальныхЗаписей.Параметры.Комментарий = ВыборкаДетальныеЗаписи.Комментарий; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентКод = ВыборкаДетальныеЗаписи.КонтрагентКод; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентНаименование = ВыборкаДетальныеЗаписи.КонтрагентНаименование; ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентРодительКод = ВыборкаДетальныеЗаписи.КонтрагентРодительКод; ТоварыОбластьДетальныхЗаписей.Параметры.Представление = ВыборкаДетальныеЗаписи.Представление; ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ КонецПроцедуры |
|||
23
GANR
26.12.12
✎
11:50
|
(22) только не 3 символа, а 9
|
|||
24
zzzLEXzzz
26.12.12
✎
12:01
|
(23) Извини за назойливость, вот смотри я вот так сделал, но он почему-то выдает ошибку
Макет = ОтчетОбъект.ПолучитьМакет("ОтчетЭфесРус"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.Номер, |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,1,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,2,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,2,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,3,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,3,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,4,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,4,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,5,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,5,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,6,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,6,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,7,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,7,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,8,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,8,1) |Иначе "" |Конец + |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,9,1) МЕЖДУ "0" и "9" |Тогда ПОДСТРОКА(Комментарий,9,1) |Иначе "" |Конец | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.Представление, | РеализацияТоваровУслуг.Товары.( | Номенклатура.Артикул, | Номенклатура.Наименование, | РеализацияТоваровУслуг.Товары.Количество * РеализацияТоваровУслуг.Товары.Коэффициент * РеализацияТоваровУслуг.Товары.Номенклатура.КолЛвШТ КАК Количество, | Коэффициент, | Номенклатура.КолЛвШТ | ), | РеализацияТоваровУслуг.Контрагент.Код, | РеализацияТоваровУслуг.Контрагент.Наименование, | РеализацияТоваровУслуг.Контрагент.Родитель.Код |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачало И &ДатаКонец | И РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура) | И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)"; Запрос.УстановитьПараметр("ДатаКонец", ДатаКонец); Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить(); {Форма.ОтчетЭфесРус.Форма(32,49)}: Неопознанный оператор |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "<<?>>0" и "9" (Проверка: Толстый клиент (обычное приложение)) {Форма.ОтчетЭфесРус.Форма(92,31)}: Ошибка в выражении Результат = Запрос.Выполнить(<<?>>); (Проверка: Толстый клиент (обычное приложение)) {Форма.ОтчетЭфесРус.Форма(132,32)}: Обнаружено логическое завершение исходного текста модуля ТабДок.Вывести(ОбластьПодвал);<<?>> (Проверка: Толстый клиент (обычное приложение)) |
|||
25
НЕА123
26.12.12
✎
12:20
|
В запросе все двойные кавычки должны быть задублированы.
типа ""0"", пустая строка """" |
|||
26
НЕА123
26.12.12
✎
12:22
|
и почему так не любят конструктор запросов?
|
|||
27
zzzLEXzzz
26.12.12
✎
12:51
|
(25) Огромное спасибо всё получилось, вообще супер )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |