![]() |
![]() |
![]() |
|
Создание диаграммы в 1С 7.7 | ☑ | ||
---|---|---|---|---|
0
sergei123654
07.09.09
✎
12:29
|
Здравствуйте, подскажите чайнику! Есть таблица значений, которая заполнена данными - Группа товара, Фактические колво и плановые колво. нужно построить диаграмму которая бы по Y(игрику) отражала количества, а по Х(иксу) группу товара(фактический столбец и плановый столбец).
пробую так: Диаграмма.Обновление(0); Серия = 1; Точка = 1; ТЗитог.Свернуть("РодительТовара","Факт,План"); ТЗитог.Сортировать("РодительТовара"); ТЗитог.ВыбратьСтроки(); Пока ТЗитог.ПолучитьСтроку() = 1 Цикл Диаграмма.УстановитьИмяСерии(Серия,ТЗитог.РодительТовара); Диаграмма.ЦветСерии(Серия,153,153,255); Диаграмма.УстановитьЗначение(Точка,Серия,ТЗитог.Факт); Серия = Серия + 1; КонецЦикла; результат - получаю столбец с фактическим количеством и имя этого столбца в легенде. Не знаю как к столбцу с фактическим количеством добавить столбец с плановым количеством, и добавить этим двум колонкам с низу имя этой группы. куда копать? |
|||
1
Kreont
07.09.09
✎
12:59
|
Копать лучше среди стандартных отчетов там есть работы с диаграмами
|
|||
2
Ёпрст
гуру
07.09.09
✎
13:00
|
||||
3
sergei123654
07.09.09
✎
13:06
|
(1) среди стандартных что то уж слишком все мудрЁнно(я, как малоопытный, долго там ковыряться буду) думал может что то попроще есть..
(2) спасибо, читаю... |
|||
4
sergei123654
07.09.09
✎
20:25
|
продвижений не каких, прочитал (2) кучу раз, перепробовал все... но все безрезультатно... Может у ого нибудь есть пример построения диаграмм по двум сериям?
|
|||
5
sergei123654
07.09.09
✎
21:33
|
по всей видимости вот эта конструкция строит нужную мне диаграмму
ТЗ.Свернуть("Родитель","План,Факт"); ТЗ.Сортировать("Родитель"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Диаграмма.УстановитьИмяСерии(Серия,ТЗ.Родитель); Точка = 1; Пока <<Условие>> Цикл //?????????????????????????? Диаграмма.УстановитьЗначение(Точка,Серия,<<Значение>>); Если Серия = 1 Тогда Диаграмма.УстановитьИмяТочки(Точка,<<Имя точки>>); //????????????????????????????? КонецЕсли; Точка = Точка + 1; КонецЦикла; Серия = Серия + 1; КонецЦикла; Подскажите, что должно быть во втором цикле? |
|||
6
Alexander Shevchuck
07.09.09
✎
22:23
|
Могу сбросить пример
|
|||
7
Alexander Shevchuck
07.09.09
✎
22:24
|
Я строил диаграмы с двумя сериями по таблице значений
|
|||
8
Alexander Shevchuck
07.09.09
✎
22:24
|
если он тебе, конечно еще нужен
|
|||
9
sergei123654
07.09.09
✎
22:33
|
Alexander Shevchuck БУДУ ВЕСЬМА ПРИЗНАТЕЛЕН, если вы скините свои примеры, куда вам удобней?
|
|||
10
Alexander Shevchuck
07.09.09
✎
22:35
|
Если я правильно понял, у тебя есть Таблица значений с тремя колонками
Родитель - это ссылка на элемент справочника; План - число и Факт - число. Серий тебе нужно две (план и факт). Я все правильно понял P.S. Можешь называть меня на "ты" :) |
|||
11
Alexander Shevchuck
07.09.09
✎
22:37
|
У тебя вышло построить хоть какуюто диаграму? Если да - то половина роботы сделана, если нет я розкажу как
|
|||
12
sergei123654
07.09.09
✎
22:40
|
(10) да совершенно верно, проблема еще в наименновании точек, то есть план и факт отнсятся к одному родителю.. но это думаю пол беды
|
|||
13
Alexander Shevchuck
07.09.09
✎
22:42
|
Чтобы точки не наименовались автоматически, навсякий случай напиши перед циклом
Диаграмма.АвтоУстановкаИменТочек(0); |
|||
14
Alexander Shevchuck
07.09.09
✎
22:45
|
Потом в цыкле пишешь
Диаграмма.УстановитьИмяТочки(<номер точки>,<метка>) |
|||
15
sergei123654
07.09.09
✎
22:45
|
(13) наисал
(5) что можно сделать с вопросом из 5? |
|||
16
Alexander Shevchuck
07.09.09
✎
22:46
|
Во первых нужен один цикл, насколько видно с твоего алгоритма, количество серий в твоей диаграме будет равно количеству строк в таблице значений, тоесть количеству родителей
|
|||
17
sergei123654
07.09.09
✎
22:53
|
(16) я тоже думал так... пробовал писать это:
Серия1 = 1; Серия2 = 2; Точка1 = 1; Точка2 = 1; ТЗитог.Свернуть("РодительТовара","Факт,План"); ТЗитог.Сортировать("РодительТовара"); ТЗитог.ВыбратьСтроки(); Пока ТЗитог.ПолучитьСтроку() = 1 Цикл Диаграмма.КоличествоСерий(2); Диаграмма.УстановитьИмяСерии(Серия1,ТЗитог.РодительТовара); Диаграмма.УстановитьИмяСерии(Серия2,ТЗитог.РодительТовара); Диаграмма.ЦветСерии(Серия1,153,153,255); Диаграмма.ЦветСерии(Серия2,217,0,234); Диаграмма.УстановитьЗначение(Точка1,Серия1,ТЗитог.План); Диаграмма.УстановитьЗначение(Точка2,Серия2,ТЗреализ.Факт); Точка1 = Точка1 + 1; Точка2 = Точка2 + 1; Серия1 = Серия1 + 1; Серия2 = Серия2 + 2; КонецЦикла результат - куча не понятно каких столбцов диаграммы.. |
|||
18
Alexander Shevchuck
07.09.09
✎
22:59
|
//==========ПОПРОБУЙ ТАК=======================
Диаграмма.Обновление(0); Диаграмма.Заголовок = "ПЛАН-ФАКТ АНАЛИЗ ("+ПериодСтр(НачДата,КонДата)+")"; Диаграмма.УстановитьИмяСерии(1,"План"); Диаграмма.УстановитьИмяСерии(2,"Факт"); А = 1; ТЗ.Свернуть("Родитель","План,Факт"); ТЗ.Сортировать("Родитель"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Диаграмма.УстановитьИмяТочки(А,ТЗ.Родитель); Диаграмма.УстановитьЗначение(А, 1, ТЗ.План); Диаграмма.УстановитьЗначение(А, 2,ТЗ.Факт); А = А+1; КонецЦикла; Диаграмма.Обновление(1); |
|||
19
Alexander Shevchuck
07.09.09
✎
23:00
|
Цвета потом подбирешь по вкусу
|
|||
20
Alexander Shevchuck
07.09.09
✎
23:01
|
//====== Я ДЕЛАЛ ТАК=========
Перем НачДата, КонДата, ТаблНаз, ТаблСырья; Процедура ПриОткрытии() НачДата = НачГода(ДобавитьМесяц(РабочаяДата(),-36)); КонДата = КонГода(ДобавитьМесяц(РабочаяДата(),-12)); ТаблНаз = СоздатьОбъект("ТаблицаЗначений"); ТаблНаз.НоваяКолонка("Дата"); //------------------------------------------------------ ТаблСырья = СоздатьОбъект("ТаблицаЗначений"); ТаблСырья.НоваяКолонка("Дата"); ТаблСырья.НоваяКолонка("БазисВес"); ТаблСырья.НоваяКолонка("Сумма"); ТаблСырья.УдалитьСтроки(); //------------------------------------------------------ ТаблНаз.УдалитьСтроки(); Период=ПериодСтр(НачДата,КонДата); КонецПроцедуры //---------------------------------------------- Процедура ИзмПериодПлюс() НачДата = НачГода(ДобавитьМесяц(НачДата,12)); КонДата = КонГода(ДобавитьМесяц(КонДата,12)); //------------------------------------------ Если НачДата > ПолучитьДатуТА() Тогда Предупреждение("Начало периода не может быть больше "+ ПолучитьДатуТА()+" !!!"); Пока НачДата > ПолучитьДатуТА() Цикл НачДата = НачГода(ДобавитьМесяц(НачДата,-12)); КонДата = КонГода(ДобавитьМесяц(КонДата,-12)); КонецЦикла; КонецЕсли; //------------------------------------------ Если КонДата > ПолучитьДатуТА() Тогда КонДата = КонМесяца(ДобавитьМесяц(ПолучитьДатуТА(),-1)); КонецЕсли; // Сообщить(КонецПериодаБИ()); //------------------------------------------ Период=ПериодСтр(НачДата,КонДата); КонецПроцедуры //---------------------------------------------- Процедура ИзмПериодМинус() НачДата = НачГода(ДобавитьМесяц(НачДата,-12)); КонДата = КонГода(ДобавитьМесяц(КонДата,-12)); Период=ПериодСтр(НачДата,КонДата); КонецПроцедуры //******************************************* Процедура СформироватьДиаграмму(Диаграмма1) // Блокируем обновление, пока обрабатываются данные Диаграмма1.Обновление(0); Диаграмма1.Заголовок = "Среднемесячная цена молока ("+ПериодСтр(НачДата,КонДата)+")"; Диаграмма1.УстановитьИмяСерии(1, "Цена за 1 кг "+ПериодСтр(НачДата,КонГода(НачДата))); Диаграмма1.УстановитьИмяСерии(2, "Цена за 1 кг "+ПериодСтр(НачГода(ДобавитьМесяц(НачДата,12)),КонГода(НачГода(ДобавитьМесяц(НачДата,12))))); Диаграмма1.УстановитьИмяСерии(3, "Цена за 1 кг "+ПериодСтр(НачГода(ДобавитьМесяц(НачДата,24)),КонГода(НачГода(ДобавитьМесяц(НачДата,24))))); Диаграмма1.АвтоУстановкаИменТочек(1); // Заполним диаграмму значениями Рег = СоздатьОбъект("Регистр.Поставщики"); Рег.УстановитьФильтр(,,,Константа.ОсновноеСырье); Рег.ВыбратьДвижения(НачДата,КонДата); Пока Рег.ПолучитьДвижение() = 1 Цикл ТаблСырья.НоваяСтрока(); ТаблСырья.Дата = НачМесяца(Рег.ТекущийДокумент().ДатаДок); ТаблСырья.БазисВес = Рег.БазисВес ; ТаблСырья.Сумма = Рег.Сумма + Рег.СуммаНДС + Рег.СуммаДотации ; КонецЦикла; ТаблСырья.Свернуть("Дата","БазисВес,Сумма"); А = 1; Б = 1; В = 1; ТаблСырья.ВыбратьСтроки(); Пока ТаблСырья.ПолучитьСтроку() = 1 Цикл //*********************************************************************** Если (ТаблСырья.Дата >= НачДата) И (ТаблСырья.Дата <= КонГода(НачДата)) Тогда Диаграмма1.УстановитьЗначение(А, 1, ТаблСырья.Сумма/ТаблСырья.БазисВес); А = А+1; КонецЕсли; //----------------------------------------------------------------------------------------------------------------- Если (ТаблСырья.Дата >= НачГода(ДобавитьМесяц(НачДата,12))) И (ТаблСырья.Дата <= КонГода(НачГода(ДобавитьМесяц(НачДата,12)))) Тогда Диаграмма1.УстановитьЗначение(Б, 2, ТаблСырья.Сумма/ТаблСырья.БазисВес); Б = Б+1; КонецЕсли; //--------------------------------------------------------------------------------------------------------------------- Если (ТаблСырья.Дата >= НачГода(ДобавитьМесяц(НачДата,24))) И (ТаблСырья.Дата <= КонГода(НачГода(ДобавитьМесяц(НачДата,24)))) Тогда Диаграмма1.УстановитьЗначение(В, 3,ТаблСырья.Сумма/ТаблСырья.БазисВес); В = В+1; КонецЕсли; //----------------------------------------------------------------------------------------------------------------- КонецЦикла; //*********************************************************************** //---------------------------------------------------------------- Диаграмма1.Обновление(1); КонецПроцедуры Процедура Печать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Диаграма"); ТаблНаз.УдалитьСтроки(); Таб.ТолькоПросмотр(1); Таб.Показать("Диаграма"); КонецПроцедуры |
|||
21
Alexander Shevchuck
07.09.09
✎
23:06
|
Если что непонял пиши
|
|||
22
sergei123654
07.09.09
✎
23:07
|
(20) о ёй ёй)))) я всего третий месяц в 7-ке, пока очень тяжело все дается.
(19) работает, спасибо большое. на именами снизу надо по колдовать еще чуть чуть и отлично, спасибо еще раз! |
|||
23
Alexander Shevchuck
07.09.09
✎
23:08
|
Диаграмма.УстановитьИмяТочки(А,ТЗ.Родитель); - это разве непомогло?
|
|||
24
Alexander Shevchuck
07.09.09
✎
23:09
|
Хотя я там не отменил автонаименование
|
|||
25
Alexander Shevchuck
07.09.09
✎
23:11
|
//==========ПОПРОБУЙ ЕЩЕ ТАК=======================
Диаграмма.Обновление(0); Диаграмма.Заголовок = "ПЛАН-ФАКТ АНАЛИЗ ("+ПериодСтр(НачДата,КонДата)+")"; Диаграмма.УстановитьИмяСерии(1,"План"); Диаграмма.УстановитьИмяСерии(2,"Факт"); Диаграмма.АвтоУстановкаИменТочек(0); А = 1; ТЗ.Свернуть("Родитель","План,Факт"); ТЗ.Сортировать("Родитель"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Диаграмма.УстановитьИмяТочки(А,ТЗ.Родитель); Диаграмма.УстановитьЗначение(А, 1, ТЗ.План); Диаграмма.УстановитьЗначение(А, 2,ТЗ.Факт); А = А+1; КонецЦикла; Диаграмма.Обновление(1); |
|||
26
sergei123654
07.09.09
✎
23:12
|
(23) выходят не все имена
(24) (25) проблема не решена |
|||
27
Alexander Shevchuck
07.09.09
✎
23:14
|
ааа...., забыл зказать, выводит только те которые помещаются, растяни мышью диаграму в таблице (как один из вариантов)
|
|||
28
sergei123654
07.09.09
✎
23:16
|
(27) да да, сижу раздвигаю))
а авто раздвигания как я понял нет... Спасибо за помощь Alexander Shevchuck! |
|||
29
Alexander Shevchuck
07.09.09
✎
23:18
|
Как вариант, можешь подписать цифрами (самый простой споб автонумерация), а внизу построить таблицу с расшифровкой. Смотрится довольно неплохо
|
|||
30
sergei123654
07.09.09
✎
23:20
|
(29) наверно расшивровку добавлю, и при нажании на столбец будет открываться имя это этого столбца, иа шрифт наименнований сницу, уменьшу до 6..
а там уже как клиент скажет. Спасибо, вопрос решен! |
|||
31
Alexander Shevchuck
07.09.09
✎
23:21
|
Пиши если что
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |