Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Обрезание результата полей

Обрезание результата полей
Я
   zzzLEXzzz
 
26.12.12 - 10:32
Привет всем, люди ну помогите новичку, вот код отчёта
Процедура ОтчетЭфесРус(ТабДок, ДатаКонец, ДатаНачало, Контрагент, Номенклатура) Экспорт
   //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОтчетЭфесРус)
 
   // Данный фрагмент построен конструктором.
 
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 

    Макет = ОтчетОбъект.ПолучитьМакет("ОтчетЭфесРус");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Дата,
    |    РеализацияТоваровУслуг.Номер,
    |    РеализацияТоваровУслуг.Комментарий,
    |    РеализацияТоваровУслуг.Ссылка,
    |    РеализацияТоваровУслуг.Представление,
    |    РеализацияТоваровУслуг.Товары.(
    |        Номенклатура.Артикул,
    |        Номенклатура.Наименование,
    |        РеализацияТоваровУслуг.Товары.Количество * РеализацияТоваровУслуг.Товары.Коэффициент * РеализацияТоваровУслуг.Товары.Номенклатура.КолЛвШТ КАК Количество,
    |        Коэффициент,
    |        Номенклатура.КолЛвШТ
    |    ),
    |    РеализацияТоваровУслуг.Контрагент.Код,
    |    РеализацияТоваровУслуг.Контрагент.Наименование,
    |    РеализацияТоваровУслуг.Контрагент.Родитель.Код
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    |    И РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
    |    И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)";

    Запрос.УстановитьПараметр("ДатаКонец", ДатаКонец);
    Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    Результат = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
    ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы");
    ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.НачатьАвтогруппировкуСтрок();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
        ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать();

        Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
            ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
            
            ТоварыОбластьДетальныхЗаписей.Параметры.Дата = ВыборкаДетальныеЗаписи.Дата;
            ТоварыОбластьДетальныхЗаписей.Параметры.Номер = ВыборкаДетальныеЗаписи.Номер;
            ТоварыОбластьДетальныхЗаписей.Параметры.Комментарий = ВыборкаДетальныеЗаписи.Комментарий;
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентКод = ВыборкаДетальныеЗаписи.КонтрагентКод;
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентНаименование = ВыборкаДетальныеЗаписи.КонтрагентНаименование;            
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентРодительКод = ВыборкаДетальныеЗаписи.КонтрагентРодительКод;
            ТоварыОбластьДетальныхЗаписей.Параметры.Представление = ВыборкаДетальныеЗаписи.Представление;
            ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
        КонецЦикла;

        ТабДок.ЗакончитьАвтогруппировкуСтрок();
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);

   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
 
КонецПроцедуры


Поля куда попадает "комментарий" и "представление" надо сократить, т.е сейчас попадает в "комментарий" например это значение"[523829584]-перебить" а нужно чтобы попадало только это "523829584" чисто цифры, с "представление" похоже, но на примере "комментарий" я думаю смогу сам сделать, подскажите пожалуйста как это сделать.
 
 
   Ёпрст
 
1 - 26.12.12 - 10:53
(0) обрежь его в самом запросе через
выразить как строка
   lEvGl
 
2 - 26.12.12 - 10:55
(1) ну это если фикс количество надо, а если Только цифры, то наверно только при переборе результата
   zzzLEXzzz
 
3 - 26.12.12 - 10:56
тут нужно первую квадратную скобку вырезать и всё что после цифр
   andreymongol82
 
4 - 26.12.12 - 10:59
(3) Сказали же. Перебором результата запроса
   Галахад
 
5 - 26.12.12 - 11:01
Найти, Сред и другие функции работы с строками...
   Buster007
 
6 - 26.12.12 - 11:03
СтрЗаменить
   Buster007
 
7 - 26.12.12 - 11:03
+(6) не, не пойдет) я думал там только скобочки)
   GANR
 
8 - 26.12.12 - 11:07
(5)(6) В языке ЗАПРОСОВ этого нет. Нужно раздробить строку на символы и конкатенировать цифры.

Для этого понадобятся 2 вещи:
1. Поздапрос, генерирующий последовательность чисел (номеров символов строки).
2. Получить каждый символ строки вот таким образом ПОДСТРОКА(Комментарий, Подзапрос1.ОчередноеЧисло, 1)

Пример подобного запроса здесь v8: Запрос в сообщении № 14. Мозгодробильно, но это единственный способ в рамках 1С-запросов.
   GANR
 
9 - 26.12.12 - 11:10
+(8)(0) Ну, а если не принципиально именно запросом делать - сойдет (5) и (6)
   НЕА123
 
10 - 26.12.12 - 11:11
ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "0" и "9"
Тогда ПОДСТРОКА(Комментарий,1,1)
Иначе ""
Конец +
ВЫБОР КОГДА ПОДСТРОКА(Комментарий,2,1) МЕЖДУ "0" и "9"
Тогда ПОДСТРОКА(Комментарий,2,1)
Иначе ""
Конец +
ВЫБОР КОГДА ПОДСТРОКА(Комментарий,3,1) МЕЖДУ "0" и "9"
Тогда ПОДСТРОКА(Комментарий,3,1)
Иначе ""
Конец +

и т.д.
типа так...
 
 Рекламное место пустует
   GANR
 
11 - 26.12.12 - 11:11
(7) Почему же? Перебрать символы строки, и заменить множество символов, не являющихся цифрами пустой стрококй - и всё.
   GANR
 
12 - 26.12.12 - 11:12
(10) Лобовое решение, быстро работает, но текст запроса будет громоздок.
   НЕА123
 
13 - 26.12.12 - 11:13
а вообще
(2)(4)(5)(6)(8) + 1
   БледноЗолотистый
 
14 - 26.12.12 - 11:15
Зачем пугать ТСа, ведь он уже перебирает результат при выводе. Делай как в (2).
   zzzLEXzzz
 
15 - 26.12.12 - 11:16
Извиняюсь за свою глупость, HEA12 скажите в какое место в коде я должен это вставить?
   sapphire
 
16 - 26.12.12 - 11:16
... а после сабж поля становятся взрослее? :)))
   andreymongol82
 
17 - 26.12.12 - 11:19
(16) И могут есть кошерную пищу
   GANR
 
18 - 26.12.12 - 11:19
(15) В тексте запроса, взамен фразы РеализацияТоваровУслуг.Комментарий, но ты уверен, что длина комментария и позиция последней цифры не очень большая? Если да - то только (8).
   GANR
 
19 - 26.12.12 - 11:20
+(18) >Если да - то только (8).
В смысле, если длина большая
   zzzLEXzzz
 
20 - 26.12.12 - 11:22
(18) да, там всегда будет только 9 цифр, спасибо огромное за решение, щас буду пробовать
   GANR
 
21 - 26.12.12 - 11:24
(20) Значит (12)
   zzzLEXzzz
 
22 - 26.12.12 - 11:33
(20) так?
Процедура ОтчетЭфесРус(ТабДок, ДатаКонец, ДатаНачало, Контрагент, Номенклатура) Экспорт
   //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОтчетЭфесРус)
 
   // Данный фрагмент построен конструктором.
 
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 

    Макет = ОтчетОбъект.ПолучитьМакет("ОтчетЭфесРус");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Дата,
    |    РеализацияТоваровУслуг.Номер,
    |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,1,1) МЕЖДУ "0" и "9" 
    |Тогда ПОДСТРОКА(Комментарий,1,1)
    |Иначе ""
    |Конец +
    |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,2,1) МЕЖДУ "0" и "9"
    |Тогда ПОДСТРОКА(Комментарий,2,1)
    |Иначе ""
    |Конец +
    |ВЫБОР КОГДА ПОДСТРОКА(Комментарий,3,1) МЕЖДУ "0" и "9"
    |Тогда ПОДСТРОКА(Комментарий,3,1)
    |Иначе ""
    |Конец 
    |    РеализацияТоваровУслуг.Ссылка,
    |    РеализацияТоваровУслуг.Представление,
    |    РеализацияТоваровУслуг.Товары.(
    |        Номенклатура.Артикул,
    |        Номенклатура.Наименование,
    |        РеализацияТоваровУслуг.Товары.Количество * РеализацияТоваровУслуг.Товары.Коэффициент * РеализацияТоваровУслуг.Товары.Номенклатура.КолЛвШТ КАК Количество,
    |        Коэффициент,
    |        Номенклатура.КолЛвШТ
    |    ),
    |    РеализацияТоваровУслуг.Контрагент.Код,
    |    РеализацияТоваровУслуг.Контрагент.Наименование,
    |    РеализацияТоваровУслуг.Контрагент.Родитель.Код
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    |    И РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
    |    И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)";

    Запрос.УстановитьПараметр("ДатаКонец", ДатаКонец);
    Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    Результат = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
    ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы");
    ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.НачатьАвтогруппировкуСтрок();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
        ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать();

        Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
            ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
            
            ТоварыОбластьДетальныхЗаписей.Параметры.Дата = ВыборкаДетальныеЗаписи.Дата;
            ТоварыОбластьДетальныхЗаписей.Параметры.Номер = ВыборкаДетальныеЗаписи.Номер;
            ТоварыОбластьДетальныхЗаписей.Параметры.Комментарий = ВыборкаДетальныеЗаписи.Комментарий;
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентКод = ВыборкаДетальныеЗаписи.КонтрагентКод;
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентНаименование = ВыборкаДетальныеЗаписи.КонтрагентНаименование;            
            ТоварыОбластьДетальныхЗаписей.Параметры.КонтрагентРодительКод = ВыборкаДетальныеЗаписи.КонтрагентРодительКод;
            ТоварыОбластьДетальныхЗаписей.Параметры.Представление = ВыборкаДетальныеЗаписи.Представление;
            ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
        КонецЦикла;

        ТабДок.ЗакончитьАвтогруппировкуСтрок();
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);

   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
 
КонецПроцедуры
   GANR
 
23 - 26.12.12 - 11:50
(22) только не 3 символа, а 9
   zzzLEXzzz
 
24 - 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)}: Обнаружено логическое завершение исходного текста модуля
    ТабДок.Вывести(ОбластьПодвал);<<?>> (Проверка: Толстый клиент (обычное приложение))
   НЕА123
 
25 - 26.12.12 - 12:20
В запросе все двойные кавычки должны быть задублированы.
типа ""0"", пустая строка """"
   НЕА123
 
26 - 26.12.12 - 12:22
и почему так не любят конструктор запросов?
   zzzLEXzzz
 
27 - 26.12.12 - 12:51
(25) Огромное спасибо всё получилось, вообще супер )))


Список тем форума
  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует