Имя: Пароль:
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) всё решили со мной не связываться??? ладно, спасибо всем за помощь, очень помогли ))))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn