Имя: Пароль:
1C
1С v8
помогите с циклом
0 dimogen
 
26.03.12
22:10
помогите с процедурой, мне нужно вывести суммадок как разница отчетккм.суммадокумента и отчетккмвозврат.суммадокумента по одной кассе в один день, у меня не работает цикл, суммадок получается, но только по первой строке и вычитает туже самую сумму по всей выборке. вот код процедуры:

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

       Результат1 = Запрос1.Выполнить();
       Запрос2 = Новый Запрос;    
       Запрос2.Текст = "ВЫБРАТЬ
       |ОтчетККМВозврат.Номер,
       |НАЧАЛОПЕРИОДА(ОтчетККМВозврат.Дата, ДЕНЬ),
       |ОтчетККМВозврат.Касса КАК Касса,
       |ОтчетККМВозврат.Склад,
       |ОтчетККМВозврат.СуммаДокумента
       |ИЗ
       |Документ.ОтчетККМВозврат КАК ОтчетККМВозврат
       |ГДЕ
       |(ОтчетККМВозврат.Дата МЕЖДУ &ДатаНач И &ДатаКон)
       |И (ОтчетККМВозврат.Касса = &Касса)
       |СГРУППИРОВАТЬ ПО
       |ОтчетККМВозврат.Номер,
       |ОтчетККМВозврат.Касса,
       |ОтчетККМВозврат.Склад,
       |НАЧАЛОПЕРИОДА(ОтчетККМВозврат.Дата, ДЕНЬ),
       |ОтчетККМВозврат.СуммаДокумента
       |УПОРЯДОЧИТЬ ПО
       |Касса";
       Запрос2.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
       Запрос2.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
       Запрос2.УстановитьПараметр("Касса", ВыбКасса);
       
       Если Результат1.Пустой() Тогда
           Сообщить("Данных по указанным условиям не обнаружено!");
           Возврат;
       КонецЕсли;
       
       ВыборкаРезультат1 = Результат1.Выбрать();
       
       
       ИмяФайла="";
       ИмяФайла="ВыгрузкаОтчетовККМ";    
       Текст = Новый ЗаписьТекста(ПутьВыгрузки+"\"+ИмяФайла+".txt", КодировкаТекста.ANSI,,Ложь);
       Текст.ЗаписатьСтроку("ДатаДок"+" | "+"НомерДок"+" | "+"Склад"+" | "+ "Касса"+" | "+ "Сумма"+"");        
               
       Пока ВыборкаРезультат1.Следующий() Цикл
           Результат2 = Запрос2.Выполнить().Выбрать();
               Если ВыборкаРезультат1.Касса = Результат2.Касса Тогда
                   ДокОбъект = Результат1.Касса.Получитьобъект();
                   ДвижениеОстаткиТоваров = ДокОбъект.Движения.Касса;
                   ДвижениеОстаткиТоваров.Прочитать();
                   Для Каждого Стр Из ДвижениеОстаткиТоваров Цикл
                       СуммаДок = Стр.СуммаДок;
                   КонецЦикла;
               КонецЕсли;
               Пока Результат2.Следующий() Цикл
                   СуммаДок = ВыборкаРезультат1.СуммаДокумента - Результат2.СуммаДокумента;
               КонецЦикла;
           Сообщить("Сумма без возврата: " + ВыборкаРезультат1.СуммаДокумента + " сумма с возвратом: " + СуммаДок);
           Текст.ЗаписатьСтроку(Строка(Формат(ДатаНач,"ДЛФ=ДД"))+Символы.Таб+Строка(Результат2.Номер)+Символы.Таб+Результат2.Склад.Наименование+Символы.Таб+Результат2.Касса.Наименование+Символы.Таб+Строка(Формат(СуммаДок,"ЧГ=")));
       КонецЦикла;
       
       Текст.Закрыть();  
   Иначе
       Предупреждение("Не выбрана касса!!!");    
   КонецЕсли;
КонецЕсли;    
КонецПроцедуры
1 andrewks
 
26.03.12
22:21
тебе вчера же объясняли, как в одном запросе сразу получить готовое. нет, продолжаешь извращаться
2 dimogen
 
26.03.12
22:25
с тем запросом цикл не получается сделать
3 andrewks
 
26.03.12
22:25
(2) да ну!