![]() |
![]() |
![]() |
|
помогите с циклом | ☑ | ||
---|---|---|---|---|
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) да ну!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |