staff
|
|
« : 16-07-2009 07:33 » |
|
помогите с правильностью написания отчета
необходимо выводить в Макет Отчета значение, что бы происходило сложение и отнимание по указанной части
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #1 : 16-07-2009 13:07 » |
|
Чего??? Не ленись описать задачу...
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #2 : 17-07-2009 06:35 » |
|
сейчас пришу отчет в 1С 8.1, суть заключается в чем, необходимо суммировать и отнимать данные из ячейки, программа предназначена для элеватора семян, есть транспотрер по которому идет загрузка семян и банки где эти семена хранятся, когда в складском документе начинаю вбивать значения загрузку семян или выгрузку (определенный транспортер, определенная банка) в отчете формируются отдельные позиции (не происходит суммирование или отнимание из банок) вот код отчета Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. Запрос = новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОборотнаяВедомость.Транспортер КАК Транспортер, | ОборотнаяВедомость.Банки КАК Банки, | ОборотнаяВедомость.ВидСемян КАК ВидСемян, | ОборотнаяВедомость.Регистратор КАК Регистратор, | СУММА(ОборотнаяВедомость.СуммаНачальныйОстаток) КАК НачОстаток, | СУММА(ОборотнаяВедомость.СуммаКонечныйОстаток) КАК КонОстаток, | СУММА(ОборотнаяВедомость.СуммаПриход) КАК Приход, | СУММА(ОборотнаяВедомость.СуммаРасход) КАК Расход |ИЗ | РегистрНакопления.ОборотнаяВедомость.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ОборотнаяВедомость "; Флаг1=0; если не ВыбТранспортер.Пустая() тогда Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Транспортер=&ПТранспортер "; Флаг=1; конецЕсли; Если не ВыбБанки.Пустая() тогда Если флаг1=0 тогда Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Банки=&ПБанки "; Флаг1=1; иначе Запрос.Текст=Запрос.Текст+"И ОборотнаяВедомость.Банки=&ПБанки "; конецесли; конецесли; если ПечБанки тогда Если флаг1=0 тогда Запрос.Текст=Запрос.Текст+"ГДЕ ОборотнаяВедомость.Банки.ВыводПриПечати "; Иначе Запрос.Текст=Запрос.Текст+"И ОборотнаяВедомость.Банки.ВыводПриПечати"; конецесли; конецесли; Запрос.Текст=Запрос.Текст+" |СГРУППИРОВАТЬ ПО ОборотнаяВедомость.Транспортер, ОборотнаяВедомость.Банки, ОборотнаяВедомость.ВидСемян, ОборотнаяВедомость.Регистратор |ИТОГИ СУММА(НачОстаток), СУММА(КонОстаток), СУММА(Приход), СУММА(Расход) |ПО Транспортер, Банки, ВидСемян, регистратор |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("НачалоПериода", НачПериода); Запрос.УстановитьПараметр("КонецПериода", КонПериода); Если не ВыбТранспортер.Пустая() тогда Запрос.УстановитьПараметр("ПТранспортер", ВыбТранспортер); конецесли; Если не ВыбБанки.Пустая() тогда Запрос.УстановитьПараметр("ПБанки", ВыбБанки); конецесли; Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); темп = новый ТабличныйДокумент; ТабДок=ПолучитьМакет("Макет"); ОбластьПериод=ТабДок.ПолучитьОбласть("Период"); ОбластьПериод.Параметры.Период=" Период с "+НачПериода+" по "+КонПериода; Темп.Вывести(ОбластьПериод); ОбластьШапка=ТабДок.ПолучитьОбласть("Шапка"); Темп.Вывести(ОбластьШапка); Пока Выборка.Следующий() цикл ОбластьТранспортер=ТабДок.ПолучитьОбласть("Транспортер"); ОбластьТранспортер.Параметры.Транспортер="Транспортер "+Выборка.Транспортер; Темп.Вывести(ОбластьТранспортер); ВыборкаБанки=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока выборкаБанки.Следующий() цикл ФлагБанки=0; ВыборкаВидСемян=ВыборкаБанки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока выборкаВидСемян.Следующий() цикл если выборкаВидСемян.ВидСемян.Пустая() тогда продолжить конецесли; Если ФлагБанки=0 тогда ОбластьБанки=ТабДок.ПолучитьОбласть("Банки"); ОбластьБанки.Параметры.Банки="Банки "+ВыборкаБанки.Банки; Темп.Вывести(ОбластьБанки); ФлагБанки=1; конецесли; ОбластьВидСемян=ТабДок.ПолучитьОбласть("ВидСемян"); ОбластьВидСемян.Параметры.ВидСемян=ВыборкаВидСемян.ВидСемян; Если ВыборкаВидСемян.НачОстаток>0 тогда ОбластьВидСемян.Параметры.НачальныйОстатокПриход=ВыборкаВидСемян.НачОстаток; иначе ОбластьВидСемян.Параметры.НачальныйОстатокРасход=-ВыборкаВидСемян.НачОстаток конецесли; Темп.Вывести(ОбластьВидСемян); ВыборкаРегистратор=ВыборкаВидСемян.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаРегистратор.Следующий() цикл Если ВыборкаРегистратор.Регистратор<>Неопределено тогда ОбластьРегистратор=ТабДок.ПолучитьОбласть("Регистратор"); Если ВыборкаРегистратор.Приход>0 тогда ОбластьРегистратор.Параметры.Контрагент=ВыборкаРегистратор.Регистратор; конецесли; Если ВыборкаРегистратор.Расход>0 тогда ОбластьРегистратор.Параметры.Контрагент=ВыборкаРегистратор.Регистратор; конецесли; ОбластьРегистратор.Параметры.Приход=ВыборкаРегистратор.Приход; ОбластьРегистратор.Параметры.Расход=ВыборкаРегистратор.Расход; ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.дата; Темп.Вывести(ОбластьРегистратор); конецесли; конеццикла; ОбластьИтогоВидСемян=ТабДок.ПолучитьОбласть("ИтогоВидСемян"); Если ВыборкаВидСемян.КонОстаток>0 тогда ОбластьИтогоВидСемян.Параметры.КонечныйОстатокПриход=ВыборкаВидСемян.КонОстаток; Иначе ОбластьИтогоВидСемян.Параметры.КонечныйОстатокРасход=-ВыборкаВидСемян.КонОстаток конецесли; Темп.Вывести(ОбластьИтогоВидСемян); конеццикла; конеццикла; конеццикла; ТабФорма=Отчеты.ОтчетПоСеменам.ПолучитьФорму("ФормаТаблицы"); ТабФорма.Открыть(); ТабФорма.ЭлементыФормы.Результат.Вывести(Темп); конецпроцедуры
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #3 : 17-07-2009 06:39 » |
|
что необходимо добавить в код что бы происходило суммирование или отнимание из банок (загрузка и отгрузка производится по разным транспортерам в одну банку)
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #4 : 17-07-2009 06:55 » |
|
По-моему необходимо убрать: Группировка (и итоги) по Регистратору лишняя. Или у тебя в пределах одного документа есть одинаковые Транспортер/Банка/ВидСемян и тебе нужно именно их просуммировать?
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #5 : 17-07-2009 07:30 » |
|
само дело в чем, когда составляю складской документ выбираю отдельно процедуру (загрузка или отгрузка), вид семян которую мы используем, дальше транспортер (то по чем происходит загрузка или отгрузка в банки) и сама банка где хранится семена, банка одна и таже тока изменяются транспортреры (загружаем в банку по одному транспортеру или же выгружаем из банки по другому транспортеру). когда ставлю загрузку по транспортеру (например 12) и банку (111) и вид семян (подсолнух) делаю проводку в отчете создается позиция, когда делаю отгрузку по транспортеру (12) и банку (111) и вид семян (подсолнух) то происходит отнимание и в ИтогоВидСемян отобразается остаток, но когда ставлю отгрузку по транспортеру (14) и банку (111) и вид семян (подсолнух) то происходит создание другой позиции в отчете где из банки (111) ничего не отнимается. пробовал убрать группировки по регистратору у меня нечего не выводит
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #6 : 17-07-2009 07:44 » |
|
ОборотнаяВедомость.Транспортер - это что? Измерение или Реквизит? Логично предположить что это реквизит, тогда остатки по нему не ведутся. Опусти его в группировках ниже чем Банка и ВидСемян: СГРУППИРОВАТЬ ПО ОборотнаяВедомость.Банки, ОборотнаяВедомость.ВидСемян, ОборотнаяВедомость.Транспортер, ...
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #7 : 17-07-2009 07:46 » |
|
это у меня измерение
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #8 : 17-07-2009 07:48 » |
|
у меня должно происходить изменение остатков по определенной банке
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #9 : 17-07-2009 08:13 » |
|
А в форме записей регистра нужная запись присутсвует? попробуй написать просто й запрос и протестировать его, а потом усложняй до нужного функционала
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #10 : 17-07-2009 09:00 » |
|
сейчас создал новую форму отчета, кроме даты и банки у меня ничего не выводится
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #11 : 17-07-2009 10:07 » |
|
"загружаем в банку по одному транспортеру или же выгружаем из банки по другому транспортеру" в принципе подразумевает что транспортер нужно ставить в конец группировок Отчет в прикрепленном файл выводит следующую картинку по твоим данным Это то, что тебе нужно?
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #12 : 20-07-2009 08:11 » |
|
такой вопрос, как можно сделать (в конфигураторе) что бы столбцы в отчете подгонялись под результаты (НачОстаток, Приход, Расход и КонОстаток), а так же ВидСемян и Транспортер до заголовка, так как во время печати затрачивается много листов??? а то когда в параметрах печати ==> ставить под масштаб шаблона, идет печать отчета мелкими буквами
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #13 : 20-07-2009 08:39 » |
|
Варианты на выбор: 1. Попробуй выводить данные через макет, как это у тебя было и раньше (Построитель отчета я использовал для достижения быстрого результата) 2. Используй ТабличныйДокумент=Новый ТабличныйДокумент; Построитель.Вывести(ТабличныйДокумент); ТабличныйДокумент.Область.ШиринаКолонки = ХХХ; ТабличныйДокумент.Показать(); 3. Изучай СКД: Система компоновки данных
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #14 : 21-07-2009 13:07 » |
|
пробовал дальше разрабатывать ОтчетПоСеменам все та же проблема значения как выводились так и выводятся, что можете подсказать в таком случае, даже вашу ТестОстатки дорабатывал ничего не выводит
|
|
|
Записан
|
|
|
|
staff
|
|
« Ответ #15 : 21-07-2009 13:56 » |
|
даже пробовал через СКД, но начальство сказало что хотим так, вручную написанно
|
|
|
Записан
|
|
|
|
|
|