Имя: Пароль:
1C
1С v8
Подсчёт срок в запросе и обрезка результата запроса
,
0 zzzLEXzzz
 
20.12.13
11:11
Привет всем, это опять я ))) 1с 8.2, имеется запрос, задача такая, нужно подсчитать сколько строк обработал запрос в запросе в документе "РеализацияТоваровИУслуг" и записать это в фаил, так же нужно результат который записывается в файл"ВыборкаДетальныеЗаписи.Номер" обрезать, например туда записывается номер "КП/00041646", а нужно чтобы записывался "41646", помогите реализовать, заранее спасибо ))))

Процедура КнопкаВыполнитьНажатие(Кнопка)
        
Текст = Новый ТекстовыйДокумент();


    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

    Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
    Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Объект", Контрагент);
    
    Результат = Запрос.Выполнить();

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

    
    
    ВыборкаДетальныеЗаписи.Следующий();
    Текст.ДобавитьСтроку("ООО ""Качественный Продукт"";2630042719;263001001;" + ВыборкаДетальныеЗаписи.Номер + ";" + ВыборкаДетальныеЗаписи.Дата + ";"+ ВыборкаДетальныеЗаписи.КППКлиента + ";" + ВыборкаДетальныеЗаписи.НаименованиеКонтр + " " + ВыборкаДетальныеЗаписи.Адрес + ";"  + ВыборкаДетальныеЗаписи.СУММАДокумента);
        
    ВыборкаДетальныеЗаписи1 = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
    Текст.ДобавитьСтроку(ВыборкаДетальныеЗаписи1.Код + ";260;" +ВыборкаДетальныеЗаписи1.Наименование + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ + ";" + ВыборкаДетальныеЗаписи1.Количетсво + ";" + ВыборкаДетальныеЗаписи1.Цена * 18% + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ+ ";" + ВыборкаДетальныеЗаписи1.СуммаНДС + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ * ВыборкаДетальныеЗаписи1.Количетсво);
    КонецЦикла;

    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА



Текст.Записать("C:\test.txt");

КонецПроцедуры
1 Галахад
 
гуру
20.12.13
11:16
Какой печальный запрос...
2 zzzLEXzzz
 
20.12.13
11:17
(1) ну какой смог сделать, я же не проф.
3 Галахад
 
гуру
20.12.13
11:19
(2) Может стоит запрос переделать, а не строки в нем считать?
4 zzzLEXzzz
 
20.12.13
11:21
(3) просто у меня для этого ума не хватит (((
5 salvator
 
20.12.13
11:23
(4) Тебе во вчерашней теме разжевали все по ненужности соединения табличной части и самого документа по ссылке.
6 zzzLEXzzz
 
20.12.13
11:28
(5) если я сделаю так, как мне вчера объясняли, тогда получится посчитать количество строк и обрезать номер?
7 salvator
 
20.12.13
11:29
"нужно подсчитать сколько строк обработал запрос"
Метод Количество() для выборки результата запроса

"так же нужно результат который записывается в файл"ВыборкаДетальныеЗаписи.Номер" обрезать"
посмотри на типовые функции, к примеру формирования номера при печати
8 Maxus43
 
20.12.13
11:33
соединение с контактной информацией надо делать по контрагенту.
У тебя щас без условий - это значит кросс джойн, + это значит что документы с контрагентами без адреса не попадут вобще в результат и т.д. и т.п.
9 salvator
 
20.12.13
11:38
(6) 1. Убери соединение табличной части с документом. Получай значения шапки из РеализацияТоваровУслугТовары.Ссылка.
2. Сделай левое с регистром сведений по контрагенту.
10 salvator
 
20.12.13
11:39
+(9) Левое соединение *
11 zzzLEXzzz
 
20.12.13
11:43
(8) у нас пока нет контрагентов без адреса, поэтому я сделал так
12 zzzLEXzzz
 
20.12.13
11:44
(7) я смотрел формирование номера при печати, но не разобрался как это вставить в мою обработку, а с подсчётом количества, сейчас буду пробовать
13 salvator
 
20.12.13
11:47
(12) Вызови мать-ёё функцию эту и номер обрежется.
14 zzzLEXzzz
 
20.12.13
11:56
(13) не злись ))) буду пробовать
15 zzzLEXzzz
 
20.12.13
11:57
вот попробовал сделать по "ссылке", что я тут не правильно намудрил?


Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   РеализацияТоваровУслугТовары.Ссылка,
        |    РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.Наименование КАК НаименованиеПОСТ,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.ИНН КАК ИНН,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.КПП КАК КПП,
        |    РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК Наименование,
        |    РеализацияТоваровУслугТовары.Номенклатура.КолЛвШТ КАК КолЛвШТ,
        |    РеализацияТоваровУслугТовары.Количество КАК Количетсво,
        |    РеализацияТоваровУслугТовары.Цена КАК Цена,
        |    РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаНДС,
        |    РеализацияТоваровУслуг.Ссылка.Номер КАК Номер,
        |    РеализацияТоваровУслуг.Ссылка.Дата КАК Дата,
        |    РеализацияТоваровУслуг.Сылка.Контрагент.КПП КАК КППКлиента,
        |    РеализацияТоваровУслуг.Ссылка.СуммаДокумента КАК СУММАДокумента,
        |    РеализацияТоваровУслуг.Ссылка.Контрагент.Наименование КАК НаименованиеКонтр,
        |    КонтактнаяИнформация.Представление КАК Адрес
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары,
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект = &Объект
        |    И РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |    И РеализацияТоваровУслуг.Ссылка.Контрагент В ИЕРАРХИИ(&Контрагент)";
16 salvator
 
20.12.13
12:05
Замени везде в тексте запроса "РеализацияТоваровУслуг" на "РеализацияТоваровУслугТовары". И учись работать с конструктором запроса. Быстрее, и таких ошибок не будет.
17 zzzLEXzzz
 
20.12.13
12:19
(16) я извиняюсь что мозги делаю, но всё теперь на запрос не ругается, но теперь ругается на строчку

Текст.ДобавитьСтроку(ВыборкаДетальныеЗаписи1.Код + ";260;" +ВыборкаДетальныеЗаписи1.Наименование + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ + ";" + ВыборкаДетальныеЗаписи1.Количетсво + ";" + ВыборкаДетальныеЗаписи1.Цена * 18% + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ+ ";" + ВыборкаДетальныеЗаписи1.СуммаНДС + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ * ВыборкаДетальныеЗаписи1.Количетсво);



пишет что    {Форма.Форма.Форма(60)}: Преобразование значения к типу Число не может быть выполнено
    Текст.ДобавитьСтроку(ВыборкаДетальныеЗаписи1.Код + ";260;" +ВыборкаДетальныеЗаписи1.Наименование + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ + ";" + ВыборкаДетальныеЗаписи1.Количетсво + ";" + ВыборкаДетальныеЗаписи1.Цена * 18% + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ+ ";" + ВыборкаДетальныеЗаписи1.СуммаНДС + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ * ВыборкаДетальныеЗаписи1.Количетсво);
18 salvator
 
20.12.13
12:25
(17) Текст.ДобавитьСтроку(""+ВыборкаДетальныеЗаписи1.Код +...
19 zzzLEXzzz
 
20.12.13
12:29
(18) попробовал всё равно то же самое

{Форма.Форма.Форма(60)}: Преобразование значения к типу Число не может быть выполнено
    Текст.ДобавитьСтроку(""+ВыборкаДетальныеЗаписи1.Код + ";260;" +ВыборкаДетальныеЗаписи1.Наименование + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ + ";" + ВыборкаДетальныеЗаписи1.Количетсво + ";" + ВыборкаДетальныеЗаписи1.Цена * 18% + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ+ ";" + ВыборкаДетальныеЗаписи1.СуммаНДС + ";" + ВыборкаДетальныеЗаписи1.КолЛвШТ * ВыборкаДетальныеЗаписи1.Количетсво);
20 zzzLEXzzz
 
20.12.13
12:30
(18) вот запрос


Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   РеализацияТоваровУслугТовары.Ссылка,
        |    РеализацияТоваровУслугТовары.Номенклатура.Код КАК Код,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.Наименование КАК НаименованиеПОСТ,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.ИНН КАК ИНН,
        |    РеализацияТоваровУслугТовары.СерияНоменклатуры.Производитель.КПП КАК КПП,
        |    РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК Наименование,
        |    РеализацияТоваровУслугТовары.Номенклатура.КолЛвШТ КАК КолЛвШТ,
        |    РеализацияТоваровУслугТовары.Количество КАК Количетсво,
        |    РеализацияТоваровУслугТовары.Цена КАК Цена,
        |    РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаНДС,
        |    РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
        |    РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
        |    РеализацияТоваровУслугТовары.Ссылка.Контрагент.КПП КАК КППКлиента,
        |    РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК СУММАДокумента,
        |    РеализацияТоваровУслугТовары.Ссылка.Контрагент.Наименование КАК НаименованиеКонтр,
        |    КонтактнаяИнформация.Представление КАК Адрес
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары,
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект = &Объект
        |    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |    И РеализацияТоваровУслугТовары.Ссылка.Контрагент В ИЕРАРХИИ(&Контрагент)";
21 Галахад
 
гуру
20.12.13
12:31
Чо это:
ВыборкаДетальныеЗаписи1.Цена * 18%
22 salvator
 
20.12.13
12:32
Это что млять такое?!
ВыборкаДетальныеЗаписи1.Цена * 18%
23 zzzLEXzzz
 
20.12.13
12:32
(21) ну до этого работало, умножает цена на 18%
24 salvator
 
20.12.13
12:35
(23) А, ну раз работало, тогда продолжайте наблюдения.
25 Enders
 
20.12.13
12:36
ВыборкаДетальныеЗаписи1.Цена * 18%
Ахах) Пятнично)
26 zzzLEXzzz
 
20.12.13
12:39
Ну туплю я, что ж поделать, ну правда не выдавала ошибку, пока я не перешёл "на ссылку" ))) щас убрал заработало
27 zzzLEXzzz
 
20.12.13
12:42
только вот как теперь количество строк подсчитать и обрезку номера сдлеать
28 zzzLEXzzz
 
20.12.13
13:05
подсчёт сделал так

КоличествоЗаписей = Запрос.Выполнить ().Выбрать().Количество();


вроде работает нормально. Подскажите как правильно вызвать функцию "формирования номера при печати"
29 zzzLEXzzz
 
20.12.13
13:24
(28) всё решили со мной не связываться??? ладно, спасибо всем за помощь, очень помогли ))))