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


1С:Предприятие ::

Метки: 

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

Я
   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) Огромное спасибо всё получилось, вообще супер )))



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