Консультация № 67946
21.12.2006, 08:38
0.00 руб.
0 1 1
Спасибо за ответы на вопрос №67773 , но может я неправильно сформулировала вопрос, мне надо так, допустим по цеху2, цеху4, по цеху оборот каждого материала, а потом посчитать общее колво материала и сумму по этим цехам. При этом названия цеха в отчете должны располагаться по горизонтали а материалы по вертикали и на пересечении цеха и материала должно стоять их колво. Вот так выдает все вперемешку.

Приложение:
Процедура Сформировать()  Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьПланСчетов(ПланыСчетов.основной); Ит.ИспользоватьРазделительУчета(Константа.ОснФирма); Ит.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения,,1); Ит.ИспользоватьКорСубконто(ВидыСубконто.Материалы,,1); Таб.ВывестиСекцию("Шапка"); Ит.ВыполнитьЗапрос(датаС,датаПо,"20","10.2",,2); Ит.ВыбратьКорСубконто(); Пока Ит.ПолучитьКорСубконто()=1 Цикл  Цех1=ит.КорСубконто();  Если Цех1.ПринадлежитГруппе(группа)=1 Тогда   гр=группа;   Таб.Вывестисекцию("группа");     КонецЕсли;  Ит.ВыбратьКорСубконто(2) ;  Пока Ит.ПолучитьКорСубконто(2)=1 Цикл   Матер=Ит.КорСубконто(2);      Обк=Ит.Кордо(3);     КонецЦикла;  

Обсуждение

Неизвестный
21.12.2006, 19:16
общий
это ответ
Здравствуйте, Fifina!

Примерно так. Если что-то не понятно пишите ivan@riodonetsk.com

Приложение:
Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("ШапкаСтрока|ШапкаВерх"); Т = СоздатьОбъект("ТаблицаЗначений");Т.НоваяКолонка("Цех");Т.НоваяКолонка("Материал");Т.НоваяКолонка("Колво"); СпЦеха = СоздатьОбъект("СписокЗначений");// здесь должно быть заполнение таблицы// ...// Т.Свернуть("Цех,Материал","Колво");Т.Сортировать("Материал+,Цех+"); Т.Выгрузить(СпЦеха,,,"Цех"); Для пер = 1 по СпЦеха.Рамерсписка(); цикл Цех = СпЦеха.ПолучитьЗначение(пер); Таб.ПрисоединитьСекцию("ШапкаСтрока|ЦехВерх");КонецЦикла; Если Т.КоличествоСтрок() = 0 тогда Сообщить("Нечего выводить в таблицу"); Возврат;КонецЕсли; Материал = Т.ПолучитьЗначение(1,"Материал"); ТекНомерЦеха = 1; ИтоговоеКолвоПоМатериалу = 0; Таб.ВывестиСекцию("СтрокаМатериалы|ШапкаВерх"); Т.ВыбратьСтроки(); Пока Т.Получитьстроку() = 1 Цикл ТекЦех = Т.Цех; ТекКолво = Т.Колво; ТекМатериал = Т.Материал; Если Материал <> ТекМатериал Тогда ТекНомерЦеха = 1; // выводим итог по материалу ИтогоКолво = ИтоговоеКолвоПоМатериалу; Таб.ПрисоединитьСекцию("СтрокаМатериалы|ИтогоМатериалВерх"); ИтоговоеКолвоПоМатериалу = 0; Материал = ТекМатериал; КонецЕсли; // Найдём цех в списке цехов ПозицияВСписке = СпЦеха.НайтиЗначение(ТекЦех); Если ПозицияВСписке = 0 тогда // странно. такого не может быть Иначе Если ПозицияВсписке <> ТекНомерЦеха Тогда // позиция в списке не может быть меньше текущего номера цеха, потому-что всё идёт по алфавиту // поэтому если позиция в списке больше текущего номера цеха, то количество по всем цехам между // ними равно 0 Для пер = ТекНомерЦеха по ПозицияВСписке-1 цикл Колво = 0; Таб.ПрисоединитьСекцию("СтрокаМатериалы|ЦехВерх"); ТекНомерЦеха = ТекНомерЦеха + 1; КонецЦикла; КонецЕсли; Цех = ТекЦех; Колво = ТекКолво; ИтоговоеКолвоПоМатериалу = ИтоговоеКолвоПоМатериалу + ТекКолво; Таб.ПрисоединитьСекцию("СтрокаМатериалы|ЦехВерх"); ТекНомерЦеха = ТекНомерЦеха + 1; КонецЕсли; КонецЦикла; // надеюсь итог по цехам вывести у Вас получиться, если нет, то обращайтесь ICQ 293345675 Таб.Показать();
Форма ответа