Имя: Пароль:
1C
1C 7.7
v7: Выбрать из документа табличную часть
, ,
0 julia_rostov
 
14.04.14
11:41
Всем добрый день! Есть вопросы. Есть документ, из него нужно выбрать табличную часть.Делаю выборку за период по документам,за один день например. А обработка выводит только последние строки каждого документа. А мне нужно вывести все строки. Подскажите как? или дайте ссылку где почитать.Всем заранее спасибо
1 VladZ
 
14.04.14
11:42
Покажи, как делаешь.
2 vladko
 
14.04.14
11:42
док.выбратьСтроки();
Пока док.ПолучитьСтроку() = 1 Цикл
...
КонецЦикла;
3 aka AMIGO
 
14.04.14
11:42
интересно..
док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
// читай-не-хочу..
а вообще - СП
4 julia_rostov
 
14.04.14
12:47
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПриходнаяКредит = Документ.ПриходнаяКредит.ТекущийДокумент;
    |Товар = Документ.ПриходнаяКредит.Товар;
    |Цена = Документ.ПриходнаяКредит.Цена;
    |Группировка ПриходнаяКредит без групп;
    |Условие(ПриходнаяКредит = ВыбПриходнаяКредит);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    ДатаОтчета = ТекущаяДата();
    
    Док=СоздатьОбъект("Документ.ПриходнаяКредит");
    Док.выбратьСтроки();
  
    Пока Док.ПолучитьСтроку() = 1 Цикл
    
    КонецЦикла;
    
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ПриходнаяКредит
        Таб.ВывестиСекцию("ПриходнаяКредит");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
5 DmitriyDI
 
14.04.14
12:49
(4) что за бред написан тут)

Док=СоздатьОбъект("Документ.ПриходнаяКредит");
    Док.выбратьСтроки();
  
    Пока Док.ПолучитьСтроку() = 1 Цикл
    
    КонецЦикла;
6 aka AMIGO
 
14.04.14
12:51
ой-ёй.. не надо так..
срочно:
   //Док=СоздатьОбъект("Документ.ПриходнаяКредит");
   // Док.выбратьСтроки();
   //
   // Пока Док.ПолучитьСтроку() = 1 Цикл
   //  
   // КонецЦикла;

а вот тут переделать:

   Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ПриходнаяКредит
             Док = Запрос.ПриходнаяКредит.
Док.ВыбратьСтроки(); //если тебе надо уж вот как выбирать строки..
Пока получитьстроку()=1 Цикл
//...

        Таб.ВывестиСекцию("ПриходнаяКредит");
    КонецЦикла;
7 aka AMIGO
 
14.04.14
12:52
Пока док.получитьстроку()=1 Цикл
//...

блинчик..
8 DmitriyDI
 
14.04.14
12:53
(7) + Таб.ВывестиСекцию("ПриходнаяКредит"); тут надо еще будет посмотреть как обращение идет при выводе и скорее всего переделать
9 DmitriyDI
 
14.04.14
12:54
(8)+ это в самом макете уже
10 aka AMIGO
 
14.04.14
12:55
а лучше-то так:
    |Группировка ПриходнаяКредит без групп;
    |Группировка Товар без групп;
Пока Запрос.Группировка(1)=1 Цикл
...
Пока Запрос.Группировка(2)=1 Цикл
//... это и будет выборка по строкам документа
11 Mikeware
 
14.04.14
12:57
А группировку по строке документа гук делать будет?
12 aka AMIGO
 
14.04.14
12:58
(11) ей надо выбрать строки.. не нужна груп-ка по строкам
13 oslokot
 
14.04.14
13:06
весело тут

(12) нужна группировка по строке, иначе сгруппируется по одинаковому товару
14 aka AMIGO
 
14.04.14
13:08
(13) неа.. группировка будет по товару в одном доке,
первый цикл - выборка док
второй - выборка товара в одном доке..
15 aka AMIGO
 
14.04.14
13:09
+14 если в приходной один товар во многих строках - тогда пардон..
16 oslokot
 
14.04.14
13:09
(14) я и говорю, группировка по "Товар" сложит строки с одинаковым товаром
17 aka AMIGO
 
14.04.14
13:10
(16) а это уже проблемы бухов..
18 julia_rostov
 
14.04.14
14:09
ВСЕМ спасибочки, уже давно сама нашла свои ошибки))
19 Mikeware
 
14.04.14
14:10
(18) читайте Синтакс-помощник, и вам воздастся...
20 Попытка1С
 
14.04.14
14:12
Юлия все не тем занимается.. и не за те деньги видимо..
21 Mikeware
 
14.04.14
14:41
(20) я ей, помнится, советовал уйти на вдвое более высокооплачиваемую работу. но меня забанили...
22 КонецЦикла
 
14.04.14
14:49
(4) Док=СоздатьОбъект("Документ.ПриходнаяКредит");
    Док.выбратьСтроки();

Док не спозиционирован, сделай сообщить(Док)
Или в запрос добавить группировку или перебором
23 Тот же
 
14.04.14
14:54
(22) Правильно, позиционировать нужно.
ПрихДок = Запрос.ПриходнаяКредит.
Док.НайтиДокумент(ПрихДок).
И дальше уже цикл
Док.ВыбратьСтроки()
Пока Док.ПолучитьСтроку()
24 oslokot
 
14.04.14
14:59
дама уже ушла, джентльмены :)
25 Boroda
 
14.04.14
14:59
Если уж делать запрос именно построчно, то лучше группировать именно по номеру строки. Типа так:
ТекстЗапроса = "
   |Период с НачДата по КонДата;
   |ТекДок = Документ.Реализация.ТекущийДокумент;
   |НомерСтроки = Документ.Реализация.НомерСтроки;
   |Группировка Документ;
   |Группировка НомерСтроки;
   |";
26 Злопчинский
 
14.04.14
18:45
во-первых, дама без лица
а во-вторых - проще писать надо проще!! понятней! и разжевывать кому не лень ;-)
а то нагрузили девочку она опухла от тонны инфы и свалила
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший