Имя: Пароль:
1C
1С v8
График
,
0 Учусь еще
 
14.04.12
16:06
а скажите-ка мне умные программиста
возможно ли построить график не с помощью отчетов
короче есть ТП в котором контрагенты и значения нарастающего итога, мне нужно при нажатии кнопки создать график по оси х - контрагенты, по у- значения
2 Учусь еще
 
14.04.12
16:15
начнем с первого
как создать ТП на 1000 колонок???
не писать Добавить()1000 раз
3 pumbaEO
 
14.04.12
16:18
Ну раз фото есть: (1) это шутка.
Что мешает использовать ТЧ для построения диаграммы?
4 Учусь еще
 
14.04.12
16:21
в ТП поле хранится вспомогательная информация, для получения значения нарастающего итога проводилось много действий и для проверки себя в я все считала в ТП, конечную информацию как раз нужно использовать для построения графика,
5 pumbaEO
 
14.04.12
16:23
Диаграмма = ЭлементыФормы.ДиаграммаПродаж;
   Диаграмма.КоличествоТочек = 0;
   
   Для Каждого мСтрока Из ПериодыПродаж Цикл
       
       Точка = Диаграмма.Точки.Добавить();
       Точка.Значение = мСтрока.Дата;
       Точка.Текст = мСтрока.Период;
       
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[0], мСтрока.Остатки);
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[1], мСтрока.Расход);

   КонецЦикла;
6 Учусь еще
 
14.04.12
16:25
а диаграмма продаж это специальный компонент?
7 Учусь еще
 
14.04.12
16:29
сделала так Диаграмма = ЭлементыФормы.АВСКлассификация;
   Диаграмма.КоличествоТочек = 0;
   
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       
       Точка = Диаграмма.Точки.Добавить();
       Точка.Значение = мСтрока.Контрагент;
       Точка.Текст = мСтрока.НарасИтог;
       
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[0], мСтрока.Контрагент);
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[1], мСтрока.НарасИтог);
         КонецЦикла;
пишет  Индекс находится за границами массива
8 Учусь еще
 
14.04.12
16:41
подскажите почему ошибка
9 m-serg74
 
14.04.12
16:45
что есть ТабличноеПоле1
10 m-serg74
 
14.04.12
16:48
и ошибку лучше полностью копи-пастить, там точно будет указано в какой именно строке ошибка происходит
11 Учусь еще
 
14.04.12
16:52
Диаграмма = ЭлементыФормы.АВСКлассификация;
   
   Диаграмма.КоличествоТочек = 0;
   
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       
       Точка = Диаграмма.Точки.Добавить();
       Точка.Значение = мСтрока.НарасИтог;
       Точка.Текст = мСтрока.Контрагент;
       
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[0], мСтрока.Контрагент);

табличное поле откуда берутся Контрагент и НарасИтог
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[1], мСтрока.НарасИтог);
         КонецЦикла;
12 Учусь еще
 
14.04.12
16:52
или я че то не правильно поняла
13 pumbaEO
 
14.04.12
16:52
v8: Заполнение колонки пост 66 = ТабличноеПоле1
14 Учусь еще
 
14.04.12
16:53
(13) и?
15 m-serg74
 
14.04.12
16:54
эт он мне объяснил)
16 Учусь еще
 
14.04.12
16:55
{Документ.АВСКлассификацияКлиентов.Форма.ФормаДокумента.Форма(140)}: Индекс находится за границами массива
       Диаграмма.УстановитьЗначение(Точка, Диаграмма.Серии[0], мСтрока.Контрагент);
17 m-serg74
 
14.04.12
16:58
значит в свойствах диаграммы смотри сколь у тебя серий, скорее всего 0 (по умолчанию)
18 Учусь еще
 
14.04.12
17:03
а можно его как то динамически сделать, потому что количество серий может быть больше чем задано
19 m-serg74
 
14.04.12
17:04
ну да например сколь контрагентов столько и
Диаграмма.Серии.Добавить();
20 Учусь еще
 
14.04.12
17:06
а как контрагентов посчитать??? воще уже голова не соображает..(((
21 Учусь еще
 
14.04.12
17:08
наверное так ВсегоСтрок = ТабличноеПоле1.Количество(); )))))
22 m-serg74
 
14.04.12
17:08
а тут голова не особо нужна, нужно знать русский язык и уметь открыть СП... ну наверное
23 m-serg74
 
14.04.12
17:09
примерно так как ты написала
24 Учусь еще
 
14.04.12
17:12
это было  только начало терь необходимо соединить прямой крайние точки кривой и найти точку
касания параллельной полученной прямой линии и сообщить эту точку...
25 Учусь еще
 
14.04.12
17:13
а далее  нужнно повторить процедуру,  соединив прямой начальную и конечную точки оставшейся части кривой,  и зафиксировать границы следующей группы,  проведя прямую, параллельную получившейся прямой в точке касания с кривой.
26 m-serg74
 
14.04.12
17:14
везет же тебе а я вот не знаю чем заняться)))
27 Учусь еще
 
14.04.12
17:16
завидую тебе...)))
может поможешь мне тогда)))
28 pumbaEO
 
14.04.12
17:18
За тебя справку почитать?
Посмотреть как в типовых графики строятся?
29 m-serg74
 
14.04.12
17:23
(28) ))) ну да потом в кассу прийти, тож за нее)))
30 Учусь еще
 
14.04.12
17:28
вы думаете я буду сидеть в СУББОТУ до 8 часов вечера на работе, да если бы мне потом нужно было идти в кассу,я  бы сама уже давно все написала, а за не имением навыков, мне только по окончанию написания этой проги максимум нужно будет идти к преподу)))
31 m-serg74
 
14.04.12
17:33
я просто смотрю в будущее)))
32 Учусь еще
 
14.04.12
17:37
))))
33 Учусь еще
 
14.04.12
17:39
нужно чтобы построить кривую скорее всего взять максимальное и минимальное значение НарасИтог и соединить их прямой
34 m-serg74
 
14.04.12
17:40
скорее 1е и последнее
35 m-serg74
 
14.04.12
17:41
извиняюсь чтоб построить кривую нужно взять все
36 m-serg74
 
14.04.12
17:42
а вот чтоб построить прямую (34)
37 Учусь еще
 
14.04.12
17:45
(34) а ну точно
38 m-serg74
 
14.04.12
17:48
ну так вперед и удачи)))
39 Учусь еще
 
14.04.12
18:01
первые последние точки нашла, терь график строить аналогично первому графику?
40 Учусь еще
 
14.04.12
18:06
объединила все в кучу

СтаршийИндекс = ТабличноеПоле1.Количество()-1;
                      Для Сч =1  По СтаршийИндекс Цикл
               ПерТочка=ТабличноеПоле1[0].НарасИтог;
               ВтрТочка=ТабличноеПоле1[СтаршийИндекс].НарасИтог;
           КонецЦикла;
   
   Диаграмма = ЭлементыФормы.АВСКлассификация;
   
   Диаграмма.КоличествоТочек = 0;
  ВсегоСтрок = ТабличноеПоле1.Количество();
   сер = ВсегоСтрок;  
   сер= Диаграмма.Серии.Добавить();
   
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       
       Точка = Диаграмма.Точки.Добавить();
       Точка.Значение = мСтрока.НарасИтог;
       Точка.Значение =ПерТочка;
       Точка.Значение =ВтрТочка;

       Точка.Текст = мСтрока.Контрагент;
       
       Диаграмма.УстановитьЗначение(Точка, сер, мСтрока.Контрагент);
       Диаграмма.УстановитьЗначение(Точка, сер, мСтрока.НарасИтог);
       Диаграмма.УстановитьЗначение(Точка, сер, ПерТочка);
       Диаграмма.УстановитьЗначение(Точка, сер, ВтрТочка);

         КонецЦикла;
терь рисует одну паралельную прямую((((
41 Учусь еще
 
14.04.12
18:15
каким методом можно соединить две точки??? ни как не найду с правке
42 m-serg74
 
14.04.12
22:05
для образца вот посмотри http://files.mail.ru/690036
43 m-serg74
 
14.04.12
22:48
не та ссылка((( вот http://files.mail.ru/H7OQAV
44 Учусь еще
 
15.04.12
10:55
можно еще раз ссылку сделать, а то там ничего нет
45 m-serg74
 
15.04.12
11:13
46 Учусь еще
 
15.04.12
11:17
спасибо, буду разбираться
47 m-serg74
 
15.04.12
11:25
там тока 3 задания нет ибо если честно то со слов даже не понял что нуно))) нарисуешь можно будет подумать))) кстати Христос Воскрес!
48 Учусь еще
 
15.04.12
11:28
почему вот так нельзя сделать

    СтаршийИндекс = ТабличноеПоле1.Количество()-1;
                      Для Сч =1  По СтаршийИндекс Цикл
               ПерТочка=ТабличноеПоле1[0].НарасИтог;
               ВтрТочка=ТабличноеПоле1[СтаршийИндекс].НарасИтог;
                           КонецЦикла;
           
     Серия = Диаграмма.Серии.Добавить();
   Серия.Текст = "Прямая 1";
   Диаграмма.УстановитьЗначение(Точка, Серия, ПерТочка);
   Диаграмма.УстановитьЗначение(Точка, Серия, ВтрТочка);
в данном случае он рисует но не правильно(((
49 Учусь еще
 
15.04.12
11:29
тебя тоже с праздником!!!
50 m-serg74
 
15.04.12
11:35
цикл то зачем? и 2-е ты в одну точку два значения пхаешь)))
51 m-serg74
 
15.04.12
11:36
а так в принципе сделать то можно но результат г...но
52 Учусь еще
 
15.04.12
11:38
как вы думаете лучше первое и споследнее значение тоже в ТП хранить??
53 m-serg74
 
15.04.12
11:41
зачем? оно уже там есть 1-е и Последнее)))) не надо на "Вы", а то обижусь)))
54 m-serg74
 
15.04.12
11:42
и вообще две колонки добавил для наглядности...
55 Учусь еще
 
15.04.12
11:45
хорошо!!!) как тогда использовать первое и последнее значение если нельзя  2-е точки в одну точку??
56 m-serg74
 
15.04.12
12:00
ты смотрела вообще что скачала?
57 Учусь еще
 
15.04.12
12:01
да смотрела
58 m-serg74
 
15.04.12
12:04
а зачем пытаешся переделать лучше спрашивай что не понятно...
59 m-serg74
 
15.04.12
12:04
а когда поймешь будешь переделывать
60 Учусь еще
 
15.04.12
12:07
ну вот это думаю оставить тут как раз берется первое и последнее значение

Серия = Диаграмма.Серии.Добавить();
   Серия.Текст = "Прямая";
   Минимум = Неопределено;
   Максимум = Неопределено;
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       //мСтрока.Контрагент = мСтрока.Контрагент + СокрЛП(ТабличноеПоле1.Индекс(мСтрока));
       Минимум = ?(Минимум = Неопределено, мСтрока.НарасИтог, Мин(Минимум, мСтрока.НарасИтог));
       Максимум = ?(Максимум = Неопределено, мСтрока.НарасИтог, Макс(Максимум, мСтрока.НарасИтог));
       Точка = Диаграмма.Точки.Добавить();
       //Точка.Текст = мСтрока.Контрагент;
       Точка.Значение = мСтрока.НарасИтог;
       Диаграмма.УстановитьЗначение(Точка, Серия, мСтрока.НарасИтог);
   КонецЦикла;
61 m-serg74
 
15.04.12
12:09
да эт я мутил заполнение ТП

а Точка.Текст = мСтрока.Контрагент; не надо убирать
62 Учусь еще
 
15.04.12
12:13
Тангенс для чего?
63 Учусь еще
 
15.04.12
12:18
о сделала что ль....))
64 Учусь еще
 
15.04.12
12:38
а как построить касательные к этой кривой????
геометрия полная....
65 Учусь еще
 
15.04.12
12:46
я так думаю для начала нужно сделать направляющий вектор касательной??
66 Учусь еще
 
15.04.12
12:54
или в моем случае сразу строить касательную..
67 Учусь еще
 
15.04.12
12:58
(61)а в вашем случае прямая два может служить касательной??
68 m-serg74
 
15.04.12
13:08
так так оно и есть))) ты не внимательна "Учусь еще"
69 Учусь еще
 
15.04.12
13:12
какая тут внимательность может быть я уже которые сутки на пролет окалачиваюсь возле пк
то есть прямая 2 это есть касательная к кривой?
70 Учусь еще
 
15.04.12
13:17
а что писать за место мСтрока.Прямая2???
в мСтрока.Прямая1 я писала мСтрока.НарасИтог
71 Учусь еще
 
15.04.12
13:41
(68)все равно не получается эту касательную построить
72 Учусь еще
 
15.04.12
13:43
(68)у вас она изначально задана...
73 m-serg74
 
15.04.12
13:47
ты почитай что написано в коде а потом вопросы (хоть ты и красивая девушка но это важно)
74 Учусь еще
 
15.04.12
13:52
ну вот у меня и вопрос где взять мСтрока.Прямая2
75 Учусь еще
 
15.04.12
13:53
и с чего ты взял, что я красивая девушка?)))
76 Учусь еще
 
15.04.12
14:05
ну подскажи, я уже столько вариантов испробывала если сделать мСтрока.Прямая1=мСтрока.Прямая2=мСтрока.НарасИтог
это будет не верно
77 Учусь еще
 
15.04.12
14:31
(73)а у кривой может быть несколько кривых, а в моем твоем случае она одна
78 Учусь еще
 
15.04.12
14:36
(73) по сути мСтрока.Прямая2 это будет точка качания прямой и кривой??
79 Учусь еще
 
15.04.12
14:39
хотя нет
80 Учусь еще
 
15.04.12
14:42
так что ж будет тогда точкой касания??
81 Учусь еще
 
15.04.12
14:48
вернее ее значение
82 Учусь еще
 
15.04.12
14:58
я так понимаю надо в цикле пройтись по значения кривой и прямой та точка совпадет и будет точкой касания, верно же
83 m-serg74
 
15.04.12
15:10
тим вьюнр поможет
84 Учусь еще
 
15.04.12
15:13
я уже сделала терь передо мной другие задачи стоят, работы то нынче много (25)
85 Учусь еще
 
15.04.12
15:22
как соединить прямой начальную и конечную точки оставшейся части кривой???
понимаю тоже нужно цикл
86 Учусь еще
 
15.04.12
15:25
или он сам будет чертить эти касательные  столько сколько нужно???? уже совсем запуталась(((
87 Учусь еще
 
15.04.12
16:08
скажите делаю так

Смещение = Неопределено;
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       Смещение = ?(Смещение = Неопределено, мСтрока.НарасИтог - мСтрока.Прямая1, Макс(Смещение, мСтрока.НарасИтог - мСтрока.Прямая1));
         
   Серия = Диаграмма.Серии.Добавить();
   Серия.Текст = "Касательная";
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
       мСтрока.Прямая2 = мСтрока.Прямая1 + Смещение;
       Индекс = ТабличноеПоле1.Индекс(мСтрока);
       Точка = Диаграмма.Точки[Индекс];
       Диаграмма.УстановитьЗначение(Точка, Серия, мСтрока.Прямая2);
   КонецЦикла;
   
   // переносим полученую точку касания в таблицу
   Для Каждого мСтрока Из ТабличноеПоле1 Цикл
   Если   мСтрока.НарасИтог= мСтрока.Прямая2
       Тогда ст=ИнтервалГрупп.Добавить();
       ст.Границы = мСтрока.НарасИтог*100;
   Иначе
       КонецЕсли;
            КонецЦикла;
               КонецЦикла;
почему он не правильно рисует касательные, по сути то он должен был соединив прямой начальную и конечную точки оставшейся части кривой,
88 Учусь еще
 
15.04.12
16:19
(83)все согласна на тим вьюнр... сил моих и мозгов уже нет(((
89 m-serg74
 
16.04.12
01:08
я п..н
90 m-serg74
 
16.04.12
01:15
(75) по фотке судя в профиле...
91 Torquader
 
16.04.12
01:20
А зачем нужен цикл для соединения точек - он что линии рисовать не обучен ?
92 Учусь еще
 
16.04.12
07:52
ну вот прошла целая ночь а вопрос до сих актуален...
93 m-serg74
 
16.04.12
08:38
какой именно?
94 m-serg74
 
16.04.12
08:38
(91) покажи как?
95 Учусь еще
 
16.04.12
08:51
(93)кривую я построила, соединила крайние точки прямой, построила параллельную это прямой линию, нашла точку касания, терь нужно соединить прямой точку касания с правой крайней точкой построить паралельную этой прямой найти точку касания и так далее...
96 m-serg74
 
16.04.12
08:52
(92) спать что ли легла? а я специально на работу не пошел))) думаю надо ж помочь...
97 Учусь еще
 
16.04.12
08:53
(96)какой там спать я уже забыла что это такое
98 m-serg74
 
16.04.12
08:54
в MS PAINT Prt Sc и на ICQ 567092745
99 m-serg74
 
16.04.12
08:55
ну и зря спать дело нужное)))
100 Учусь еще
 
16.04.12
09:02
когда передо мной стоят не решенные задачи я не могу спокойно спать..
101 m-serg74
 
16.04.12
10:25
ты где?