Имя: Пароль:
IT
 
Рисуем блок схемы из1С в екселе
0 skunk
 
12.10.05
17:28
//*******************************************
procedure btDraw()
   // сперва пробуем поймать сервер екселевский...
   // вдруг на машинке он нету офиса )))
   try
       Excel = createobject("Excel.Application");
   except
       // неполучилось... шлем нах...
       message("Нет возможности подключиться к Excel!");
       Excel = 0;
   endtry;
   if Excel <> 0 then
       // while all good.
       // для ушустрение работы сделаем следующие:
       // спрячем Excel.
       Excel.Visible = 0;
       // отучаем реагировать на события.
       Excel.EnableEvents = 0;
       // отучаем перерисовывать экран.
       Excel.ScreenUpdating = 0;
       // добавим новую книгу
       Book = Excel.Workbooks.Add();
       // возьмем первый лист из новой книги
       Sheet = Book.Sheets.Item(1);
       // рисуем первый блок...
       Rectangle = Sheet.Shapes.AddShape(2, 10, 10, 150, 70);
       // добавим в него коммент...
       Rectangle.TextFrame.Characters().Text = "User Guide" + chr(10) + "использование моющего средства для ухода за волосяным покровом головы.";
       // выставим позиционирование...
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       // рисуем следующий блок... шаг 1
       Rectangle = Sheet.Shapes.AddShape(1, 30, 100, 110, 40);
       Rectangle.TextFrame.Characters().Text = "шаг 1" + chr(10) + "намочить голову теплой водой.";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       // сделаем жирным "шаг 1"
       Rectangle.TextFrame.Characters(1, 5).Font.FontStyle = "полужирный";
       // нарисуем стрелку к блоку "шаг 2";
       Arrow = Sheet.Shapes.AddLine(85, 140, 85, 160);
       Arrow.Line.EndArrowheadStyle = 2;
       // рисуем блок... шаг 2
       Rectangle = Sheet.Shapes.AddShape(1, 30, 160, 110, 50);
       Rectangle.TextFrame.Characters().Text = "шаг 2" + chr(10) + "нанести моющее средство на волосяной покров головы.";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       Rectangle.TextFrame.Characters(1, 5).Font.FontStyle = "полужирный";
       // а далее по аналогии... стрелка ... блок... до шага 4
       Arrow = Sheet.Shapes.AddLine(85, 210, 85, 230);
       Arrow.Line.EndArrowheadStyle = 2;
       Rectangle = Sheet.Shapes.AddShape(1, 30, 230, 110, 65);
       Rectangle.TextFrame.Characters().Text = "шаг 3" + chr(10) + "тщательно втерать моющее средство в волосяной покров до образования пены.";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       Rectangle.TextFrame.Characters(1, 5).Font.FontStyle = "полужирный";
       Arrow = Sheet.Shapes.AddLine(85, 295, 85, 315);
       Arrow.Line.EndArrowheadStyle = 2;
       Rectangle = Sheet.Shapes.AddShape(1, 30, 315, 110, 30);
       Rectangle.TextFrame.Characters().Text = "шаг 4" + chr(10) + "смыть пену с головы.";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       Rectangle.TextFrame.Characters(1, 5).Font.FontStyle = "полужирный";
       Arrow = Sheet.Shapes.AddLine(85, 345, 85, 370);
       Arrow.Line.EndArrowheadStyle = 2;
       // нарисуем проверку... черт не поню как правильно она зазывается...
       Rectangle = Sheet.Shapes.AddShape(4, 30, 370, 110, 80);
       Rectangle.TextFrame.Characters().Text = "проверить" + chr(10) + "чистая голова?";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       // теперь три линии если голова грязная...
       // тобишь нет ... и вовзрат ко второму шагу...
       // у первых двух... нам нах ничего менять... поэтому рисуем просто
       Sheet.Shapes.AddLine(140, 410, 190, 410);
       Sheet.Shapes.AddLine(190, 410, 190, 185);
       // у последней надо будеть нарисовать стрелку...
       Arrow = Sheet.Shapes.AddLine(190, 185, 140, 185);
       Arrow.Line.EndArrowheadStyle = 2;
       // добавим метку "Нет"...
       Label = Sheet.Shapes.AddLabel(1, 155, 395, 0, 0);
       Label.TextFrame.Characters().Text = "Нет";
       // теперь стрелка для "Да"...
       Arrow = Sheet.Shapes.AddLine(85, 450, 85, 480);
       Arrow.Line.EndArrowheadStyle = 2;
       Label = Sheet.Shapes.AddLabel(1, 90, 455, 0, 0);
       Label.TextFrame.Characters().Text = "Да";
       // закочим мытье головы ;)
       Rectangle = Sheet.Shapes.AddShape(1, 30, 480, 110, 30);
       Rectangle.TextFrame.Characters().Text = "закочим мытье головы ;)";
       Rectangle.TextFrame.HorizontalAlignment = 2;
       Rectangle.TextFrame.VerticalAlignment = 2;
       // разрешаем экселю перерисовывает экран.
       Excel.ScreenUpdating = 1;
       // пусть опять начинает реагировать на события...
       Excel.EnableEvents = 1;
       // кажем что навояли...
       Excel.Visible = 1;
   endif;
endprocedure //btDraw
1 skunk
 
12.10.05
17:29
а по английский то понимает... то нет... странно
2 Alexor
 
12.10.05
18:35
Удивительно, но работает. :).
Может пригодиться.
3 Ковычки
 
12.10.05
20:59
(0) Заразилси... ;)
4 Guk
 
12.10.05
21:01
(0) А что это было? Для несведущих?...
5 goodfella
 
12.10.05
21:01
Круто, блин.
6 Ковычки
 
12.10.05
21:04
Везет народу, даже коменты пишут, я вот сам у себя незнаю где и какая переменная, и когда и гле какой скрипт сохранил...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.