7.7 Отчет по регистру с выборкой документов

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Mitay_D, 21 июн 2011.

  1. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте уважаемые программисты. Не могу получить в запросе по регистру данные табличной части документа.
    Код:
    Если ПоДокументам = 1 Тогда 
    Пока Запрос.Группировка("Документ") = 1 Цикл 
    Если ТекДолг = 0 Тогда
    ТекДолг = ТЗ.ОстНач - Запрос.ДолгПриход + Запрос.ДолгРасход;  
    Иначе
    ТекДолг = ТекДолг - Запрос.ДолгПриход + Запрос.ДолгРасход;
    КонецЕсли;
    
    ТЗД.НоваяСтрока();  
    ТЗД.Контрагент = Запрос.Контрагент.ТекущийЭлемент(); 
    ТЗД.Документ   = Запрос.Документ;
    Если ТЗД.Документ.Вид() = "РеализацияПродукции" Тогда  
    // вот здесь не знаю чего написать
    КонецЕсли;  
    ТЗД.ОстНач     = - Запрос.ДолгНачОст;
    ТЗД.Приход     =   Запрос.ДолгПриход;  
    ТЗД.Расход     =   Запрос.ДолгРасход;                                                                      
    ТЗД.ОстКон     = ТекДолг;  
    КонецЦикла;	
    КонецЕсли;
    
    
    Если добовлять код
    регистр РасчетыСПокупателями 1С 7.7 ПУБ. Спасибо

    Вложения:

  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Зачем вам все измерения в запросе?
    2) О каком зацикливании речь? Все у вас нормально. Нужно же добавить цикл по перебору строк... (если я правильно понял)
  3. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Измерения нужны для вывода данных по долгу контрагента и его оплатах.
    получаю документ реализации в запросе, а выбрать строки в документе не могу
    Код:
    Если ПоДокументам = 1 Тогда 
    Пока Запрос.Группировка("Документ") = 1 Цикл 
    Если ТекДолг = 0 Тогда
    ТекДолг = ТЗ.ОстНач - Запрос.ДолгПриход + Запрос.ДолгРасход;  
    Иначе
    ТекДолг = ТекДолг - Запрос.ДолгПриход + Запрос.ДолгРасход;
    КонецЕсли;
    
    ТЗД.НоваяСтрока();  
    ТЗД.Контрагент = Запрос.Контрагент.ТекущийЭлемент(); 
    ТЗД.Документ   = Запрос.Документ;
    Если ТЗД.Документ.Вид() = "РеализацияПродукции" Тогда  
    Пока ТЗД.Документ.ПолучитьСтроку() = 1 Цикл
    Товар = ТЗД.Документ.Товар; // выводит пустоту и цикл не прекращаеться, в итоге выдает ошибку что память закончилась
    КонецЕсли;  
    ТЗД.ОстНач     = - Запрос.ДолгНачОст;
    ТЗД.Приход     =   Запрос.ДолгПриход;  
    ТЗД.Расход     =   Запрос.ДолгРасход;                                                                      
    ТЗД.ОстКон     = ТекДолг;  
    КонецЦикла;	
    КонецЕсли;
    
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А инициализировать выборку кто за вас будет?
    Код:
    ....
    ТЗД.Документ.ВыбратьСтроки();
    Пока ТЗД.Документ.ПолучитьСтроку() = 1 Цикл                                
    ...
    
    
    
  5. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Это опечатка, не дописал, выборку делаю
    Код:
    				Если ТЗД.Документ.Вид() = "РеализацияПродукции" Тогда  
    ТЗД.Документ.ВыбратьСтроки();   
    Пока ТЗД.Документ.ПолучитьСтроку() = 1 Цикл  
    Сообщить("!!!");
    КонецЦикла;
    КонецЕсли;  
    
    
    по выбранному контрагенту 2-е реализации, товара 10 наименований, а он ни чего не выдает из цикла выйти не может
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот так сработает:
    Код:
    дд=СоздатьОбъект("Документ");
    дд.найтидокумент(ТЗД.Документ.ТекущийДокумент());
    дд.ВыбратьСтроки();
    Пока дД.ПолучитьСтроку()=1 Цикл
    //..
    КонецЦикла;					
    
    
  7. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Все заработало, а почему таким образом работает, а как пытался я нет?
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Потому что ссылка на документ получилась неявной из-за запроса.

Поделиться этой страницей