[VectorDrawing] — Векторная графика в 1С




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. Душелов

    Описание методов и объектов будет позже.

    Пока программно можно создавать только прямоугольник.

    А вот поиграться визуальным редактированием можно уже сейчас.

    Группировать объекты, вращать, растягивать, деформировать и т.п.

    Reply
  2. waol

    вещь нужная и есть немалое подозрение, что пригодится

    Reply
  3. norpn

    Если бы существовала возможность вызывать определенное событие в 1С (например, открытие формы списка или элемента) при определенных действиях с фигурами (например, при двойном клике), было бы просто супер

    Reply
  4. Душелов

    (3) А в чем проблема-то это сделать?

    Reply
  5. Душелов

    В примере есть показ отработки двойного щелчка мышкой на фигуре.

    Reply
  6. Арчибальд

    А сам грозился уехать на две недели. Их однозначно кучка!

    Reply
  7. alex_4x

    Вещь полезная.

    хорошо бы еще импорт объектов векторных хоть бы одного формата поддерживать.

    Reply
  8. Душелов

    (6) в 3Д что ли?

    (7) Пока отпуск задерживается 😉

    (8) Корел выложил формат своих файлов?

    Reply
  9. Душелов

    Добавил программное создание всех фигур.

    Добавил описание свойств и методов.

    Продолжаем работу дальше…

    Reply
  10. vip

    (10) Кгхрм…

    С тобой не соскучишься ;))

    Придется знакомиться глубже. Если понравится, с тебя не слезу :))

    Reply
  11. Abadonna

    >Придется знакомиться глубже. Если понравится, с тебя не слезу :))

    Вау :)))))))))))))))))))))))))

    Reply
  12. vip

    (12) Не сомневался в твоем ответе.

    Старый пошляк ;))))

    Reply
  13. Abadonna

    >Старый пошляк ;))))

    Модно подумать ты — пошляк молодой ;))))))))))))

    Reply
  14. Душелов

    (11) :))

    Смотри еще в сторону групиировки простых элементов в сложный. Визуально.

    Я пока программно это реализовываю. Ну и, конечно, будет ассоциация объекта с 1С-ными данными.

    Reply
  15. vip

    (15) Уже смотрю. Но интересует именно программная группировка.

    А так, очень богатая штука получается.

    Reply
  16. kolyada

    А можешь добавить описание как ты сделал сам Активикс, чтобы он работал с 1С? Я в своё время пытался, но знаний не хватило. Также не разобрался до конца, почему одни активиксы работают в 1С, другие — нет.

    Reply
  17. Душелов

    (17) Описания никакого. Обыкновенный активикс по всем правилам.

    Reply
  18. vip

    (17) Любой активикс может работать с 1С.

    Reply
  19. PowerBoy

    А как схему напечатать или сохранить в графический файл?

    Reply
  20. kolyada

    (19) я почему вспомнил это: пробовал какой-то зарубежный активикс (было это полгода назад, забыл уже что за хрень, вроде так и называется Vector Graphics ActiveX), позволяющий рисовать векторную графику, прямо как этот активикс от Душелова. Ну вот он и отказался работать в 1С. Хотя даже в Wordе работал.

    Reply
  21. Душелов

    (20) Пока никак.

    (21) Должен был заработать.

    Reply
  22. kolyada

    (22) Да точно (посмотрел свои записи) эта хрень Vector Graphics ActiveX v.1.6.7 в 1С не работает. А там более 1000 всевозможных графических методов.

    Reply
  23. GSoft

    подскажите как подключить в семерке

    Reply
  24. Душелов

    (24) Перем Рисование;

    Процедура ПослеОткрытия()

    Рисование= СоздатьОбъект(«АктивИкс»);

    Рисование.УстановитьАтрибут(Форма, «АктХ»);

    //»АктХ» — идентификатор элемента диалога, на месте которого будет создан элемент ActiveX.

    //только для реквизитов диалога типа «Текст».

    Рисование.СоздатьЭУ(«Душелов.VectorDrawing»);

    Рисование.УстановитьФокус();

    КонецПроцедуры

    Reply
  25. Душелов

    Добавил методы по группировке и редактированию.

    Reply
  26. Ёпрст

    (24)

    например так:

    АктивИкс = СоздатьОбъект(«АктивИкс»);

    АктивХ.УстановитьАтрибут(Форма,»ИдАтрибутаНаФорме»);

    АктивХ.СоздатьЭУ(«Душелов.VectorDrawing»);

    АктивХ.УстановитьФокус();

    Reply
  27. Ёпрст

    та ё… не обновился 🙁

    Reply
  28. Ёпрст

    странно, не отрабатывают горячие клавиши нефига 🙁

    Reply
  29. Ёпрст

    и хинтов бы добавить еще..

    Reply
  30. Душелов

    (29) Какие? ctrl + a и прочие?

    Reply
  31. Ёпрст

    (31) ага, в клюшках вообще ни одна не срабатывает 🙁

    Reply
  32. Ёпрст

    Ctrl+z работает 🙂

    Reply
  33. Abadonna

    В клюшках (в них самих) ваще нет сочетания CTRL+A (уроды, блин)

    Помню, когда делал форматтер для клюшек приходилось программно нажимать пункт меню «Выделить всё»

    Reply
  34. Ёпрст

    (34) ну… опенконфом можно сделать (у меня работает) 🙂

    Reply
  35. Ёпрст

    (31) не работают так же Del, еще например..

    Reply
  36. Abadonna

    ну дык опенконфом… я про то, что они не удосужились даже стандартные виндососвские замутить

    Reply
  37. GSoft

    (25, 27) спасибо

    Reply
  38. Душелов

    В ближайших планах — формирование собственной библиотеки примитивов и работа с 1С-ными объектами.

    Уже сейчас вполне можно сделать аналог схемы бизнес-процессов полностью программно.

    Reply
  39. napala@

    не, ну прикольно! ))) пригодится-нет, не знаю, альтернатива Paint ), еще бы цвет менять и сохранять… ваще PhotoShop будет!

    Reply
  40. Душелов

    (40) Цвет менять где?

    Reply
  41. e.kogan

    Не регистрируется (((

    Reply
  42. napala@

    (41) туплю, нав, у фигур не смогла…

    Reply
  43. Душелов

    (42) А что пишет?

    (43) ЦветФона1, ЦветФона2

    Reply
  44. napala@

    (44) ага, уже догадалась ))) спасибо. клёво!

    Reply
  45. dushich

    Ну как обычно 🙂 Душелов жжот 🙂

    Сделай пожалуйста дружищще описание методов и объектов.

    Мне как раз сейчас такая штука нужна.

    В табличном поле это не красиво выглядит да и изменять надо….

    есть на крайнем севере поселок…..

    вагончики стоят…..

    — Хм ну вот ваши вагончики… можете просто щелкнуть по одному и посмотреть кто там живет….

    — А если я вагончик передвину, ну или еще один поставлю, ну или уберу устаревший… как мне……..?

    — Ну там есть справочник «Вагончики», ну там есть коодинаты….

    — Коорди.. что? оО

    Reply
  46. dushich

    Не весь топик прочитал….

    того что есть в комментах уже достаточно

    Душевное спасибо!!!!

    Душелов, кинь мне на dushich(собака)mail.ru свой номер кошелька. Буду зарплатой делицца 🙂

    Reply
  47. Душелов

    (47) 🙂 В профиле у меня все указано 😉

    Reply
  48. kadr

    Векторная графика в 1С — вещь достаточно необходимая. Если поискать, в сети можно нарыть несколько достаточно хороших ActivXов.

    Только вот стоит ли разрабатывать что-то свое с нуля? Не проще взять к примеру открытый формат SVG и реализовать его средствами GDI?

    Reply
  49. Душелов

    (49) Платных?

    Стоит разрабатывать. Как минимум за то, что в векторную фигуру передавать ссылку на 1С-овский объект. Мне проще свое написать, чем брать чужие, платные, ломать их и т.п.

    Reply
  50. kadr

    (50)

    Я не говорю, что не стоит, может проще пойти по другому пути, взяв за основу что-то зарекомендовавшее себя? Если бы, как вы писали выше, Corel открыл свой формат, возможно Вы бы взяли его за основу ведь так?

    Почему платных? Тот же VGA версии 1,0 бесплатен, CorelSVG, AdobeSVG

    Что имеется ввиду передавать ссылку?

    Ассоциировать элемент графики с объектом 1С можно через какое-нибудь банальное id объекта.

    Reply
  51. Душелов

    (51) Ага. id.. И для того, чтобы, к примеру, при наведении мышкой на объект выпадало меню с действиями и с информацией о предварительной цене (к примеру ПВХ), наличии на складе. Что делать будем с этими зарекомендовавшими объектами? 😉

    Reply
  52. kadr

    Вывести дополнительным слоем или в отдельном ЭУ формы 🙂

    Reply
  53. kadr

    Не предполагал, что задумка у вас настолько глубока. Если удасться интегрировать ваш AX в среду настолько, насколько Вы описали — равных ему я думаю не будет.

    но в дальнейшем, как обычно, встанет вопрос скорости отрисовки объектов, расширения за счет скриптов 🙂

    Reply
  54. kadr

    Кстати, выпадать будет меню 1С?

    Reply
  55. Душелов

    (53) Ага, спасибо, и отдельный слой пересчитывать при масштабировании и скроллинге.

    (55) Нет, меню выпадать будет собственное, но оно будет генерить события в 1С.

    Reply
  56. kadr

    (53) Ага, спасибо, и отдельный слой пересчитывать при масштабировании и скроллинге.

    Затраты времени для пересчета при масштабировании и скроллинге будут заметны при большом количестве объектов, к примеру в ГИС приложении.

    Посмотрите библиотеку IbisMap разработки Rebelx — никаких задержек при большом количестве объектов

    (55) Нет, меню выпадать будет собственное, но оно будет генерить события в 1С

    Реализовывал это же на базе SVG пару лет назад — ничего сложного

    Я думал, вы хотите реализовать обработку событий объекта графики с помощью объектов 1С — меню, диалогов и т.д.

    Вот это было бы по настоящему….

    Reply
  57. Душелов

    (58) >Я думал, вы хотите реализовать обработку событий объекта графики с помощью объектов 1С — меню, диалогов и т.д.

    А оно это надо? Можно и это окно вызывать. Передаешь объект 1С-овский, у него свой форма с меню, ее вызывать без проблем, как в моей Tray1C, где всплывающее окно 1Совское вызывается.

    Reply
  58. kadr

    Кстати, в AX вы же можете получить контекст приложения?

    Или это только в ВК?

    Reply
  59. Душелов

    (60) Я могу передать объект 1С и работать с ним в полной мере.

    Контекст приложения только в ВК, хотя на эту тему еще подумать можно.

    Reply
  60. kadr

    А скорость отрисовки объектов не смотрели? Ну к примеру миллиона?

    Reply
  61. kadr

    Вот это было бы круто — вызывать объекты 1С а не собственные, а собственные использовать для целей графики (перемещения, масштабирования и тд)

    Reply
  62. Душелов

    (63) А какие объекты надо вызывать? У фигуры есть объект 1С, соответственно все методы и свойства используются 1С-овские.

    Reply
  63. kadr

    А возможно в объекте графики хранить ссылку на объект 1С?

    Чтобы к примеру отработал следующий код

    Предположим, что в свойстве ссылка объекта фигура хранится ссылка на объект 1С СправочникНоменклатура

    Процедура ЭлементУправления1ПриДвойномЩелчкеМышкойНаФигуре(Элемент, Фигура)

    //Сообщить(«Нажат » + Фигура.Имя);

    Фигура.Ссылка.ПолучитьОбъект().ПолучитьФорму().Открыть();

    КонецПроцедуры

    Reply
  64. Душелов

    (65) Я про это выше и говорил.

    Reply
  65. kadr

    что то в своей копии вашей библиотеки я этого не увидел..

    может есть версия новее?

    Reply
  66. e.kogan

    (44) Видимо, с сетевого диска просто не стартовало. Скопировала на локальный — всё пошло.

    Reply
  67. Душелов

    (67) Это все в разработке. Можно в комментариях посмотреть, что делается и что добавляется.

    (68) Да, с сетевого не рекомендуется.

    Reply
  68. kadr

    (69) ну тогда остается только пожелать терпения и удачи 🙂

    Reply
  69. igorK

    А есть такая компонента для 1С которая могла бы например определить что подключено 2-а монитора и выводить мне нужную информацию на второй монитор из 1С ?

    Reply
  70. Душелов

    (71) Думаю, такой нет.

    Reply
  71. Душелов

    Добавил возможность загрузки и выгрузки описания фигур (собственные объекты).

    Reply
  72. Душелов

    Правда пока еще есть загрузку до конца не доделал (текст пока не грузится, как положено), но все в процессе разработки дальше. Тестировать можно дальше.

    Так же слушаю предложения.

    В ближайшее время добавлю работу с 1С-ными объектами, ассоциированными фигурам.

    Reply
  73. Душелов

    В качестве примера в архиве добавил «стрелку».

    Reply
  74. igorK

    Я так понял из всего прочитанного выше вы хотите автоматизировать учет в кинотеатрах ?! Т.к. например в «USC примера» для автоматизации кинотеатров поддерживается монитор посетителя где кассир нажимает кнопку у себя и на втором мониторе показывается какие места свободны в зале. Ну а если в 1С невозможно реализовать работу с 2-я мониторами то не очень то и удобно это, особенно когда еще и зал то не один как было в моем случае, а аж 3-и и все разные по размерам и количествам мест. Думаю кассиру не очень объяснять на пальцах какое и где место свободно.

    Или есть какая то другая альтернатива монитору посетителя ?

    Т.к. я то же в свое время хотел написать по 8-ку автоматизацию кинотеатра.

    Reply
  75. Душелов

    (76) Это сюда 😉 http://infostart.ru/projects/4030/

    Reply
  76. PowerBoy

    Я все жду когда появится вывод схемы в графический файл и на принтер. Это по моему должна быть первостепенная задача, которая должна быть реализована. Без этого весь смысл схемы теряется.

    Reply
  77. Душелов

    (78) Это как раз совсем не сложно сделать. Первостепенная задача — это движок разработать, а всякие «рюшечки» — это уже потом.

    Reply
  78. Душелов

    Добавил метод:

    — СохранитьКартинку(ПутьКФайлу, ФорматФайла); //ФорматФайла — строка (bmp, emf, exif, gif, icon, jpg, memorybmp, png, tiff);

    Фон картинки — цвет фона панели рисования.

    Reply
  79. Душелов

    Ну что, товарищи, результаты тестов есть? 😉

    Какие пожелания бы хотелось видеть? А то релиз уже не за горами.

    Reply
  80. Душелов

    При закрытии обработки рекомендуется использовать метода «Закрыть()» для очистки памяти и предотвращение зависания 1С в задачах.

    Добавил у фигур свойство «Объект», которое хранит ссылку на любой объект 1С.

    Т.е. можно писать конструкции, вида:

    «Прямоугольник.Объект.ПолучитьФорму().Открыть();»

    Reply
  81. Душелов

    Добавил описание фигуры (свойство «Текст») и вывод его при наведении мышкой на фигуру.

    Reply
  82. PowerBoy

    1. Хотелось бы задавать размеры редактируемого поля ну и его вертикальный и горизонтальный скроллинг.

    2. Добавочное поле к каждому объекту «Title», которое выводилось бы всегда, либо в середине либо рядом с объектом (по выбору).

    3. Поле Текст оставить, что-то я его не обнаружил в компоненте.

    4. Возможность привязки соединительных линий к объектам и чтобы при перемещении объекта соединительная линия следовала за ним, ну и возможность установки стрелок у этих линий.

    Reply
  83. Душелов

    (84) 1. Ну да. Это у меня в планах стоит 🙂

    2,3. Текст у фигуры. Он как раз и является «Title».

    (4) Ага, аналог MS Visio и Бизнес-процессов 1С-ки.

    Reply
  84. Душелов

    Исправил ряд найденных ошибок.

    Добавил пример сложной фигуры (компьютер).

    Reply
  85. Душелов

    Добавил свойства компоненты:

    — Авторазмер //булево

    — Ширина

    — Высота

    При отключенном авторазмере скриншот будет делаться заданной ширины и высоты, а так же сама панель будет скроллиться.

    Reply
  86. Душелов

    Добавлено свойство у фигур:

    — ПоказыватьТекстВсегда; //булево — выводит всегда описание фигуры

    и метод у фигур:

    — Показать(); //скроллин видимого поля до выбранной фигуры

    Reply
  87. Ёпрст

    Свойство «Заблокирован» на что-нить влияет вообще ?

    Или не реализовано ?


    Reply
  88. Душелов

    (89) Реализовано, но не до конца 😉

    Как бы не можешь двигать и изменять размеры.

    Reply
  89. Ёпрст

    (90) как бы в в клюшках не работает 🙁

    А оч. надо…

    Reply
  90. Ёпрст

    +91 т.е даёт и двигать и изменять размеры…

    Reply
  91. Душелов

    (91) Компонента еще в процессе разработки. И до блокирования руки дойдут.

    Позже.

    Reply
  92. Душелов

    Обновил.

    Добавил несколько новых методов и свойств.

    Добавил демонстрационную конфигурацию «Визуализация сети», которая, используя компоненту, рисует сеть, можно посмотреть параметры компьютеров, щелкнуть мышкой по ним для открытия из форм…

    Reply
  93. Душелов

    — добавлена возможность двигать фигуры курсором

    — тестовая реализация фигуры «стрелка»

    Reply
  94. Boris_1c

    эх печать бы… была бы пуля а не компонента

    Reply
  95. Душелов

    (96) А в чем проблема с печатью? Сохранить в картинку и вставить в печатную форму — не вижу проблемы.

    Reply
  96. Душелов

    Добавлена функция получения списка фигур, которые содержат выбранную координату

    — ПолучитьФигурыПоКоординате(x, y); //возвращает массив объектов типа «Фигура» (ComSafeArray)

    Добавлены свойства у объекта типа «Фигура»:

    — ЗаблокированаДеформация //булево

    — ЗаблокированаДеформацияПоВысоте //булево

    — ЗаблокированаДеформацияПоШирине //булево

    — ЗаблокированПоворот //булево

    — ЗаблокированоПеретаскивание //булево

    — ЗаблокированоПеретаскиваниеПоГоризонтали //булево

    — ЗаблокированоПеретаскиваниеПоВертикали //булево

    Reply
  97. MAXXL

    А результаты Деформирования объекта не записываются что ли?

    Еще — если к существующим фигурам добавить стрелку , то при сохранении вываливается вот такая ошибка:

    Рисование.Объект.Записать(КаталогИБ()+»Элементы»+Наименование+».xml»);

    {Справочник.Элементы.Форма.Модуль(36)}: Dushelov.VectorDrawing1C: Не удалось привести тип объекта «Душелов.Graphics.Bidimensional.Common.ArrowAppearance» к типу «Душелов.Graphics.Bidimensional.Common.PolygonAppearance».

    И что про то что удаленные фигуры все равно сохраняются в файл что скажете?

    Reply
  98. MAXXL

    текст ошибки из (131)

    ************** Текст исключения **************

    System.InvalidCastException: Не удалось привести тип объекта «Душелов.Graphics.Bidimensional.Common.ArrowAppearance» к типу «Душелов.Graphics.Bidimensional.Common.PolygonAppearance».

    в Душелов._1C.Полигон.get_ЦветФона1()

    в Душелов._1C.Фигура.AddPolygonSettings(XmlWriter writer)

    в Душелов._1C.Фигура.AddFigure(XmlWriter writer)

    в Душелов.VectorDrawing.ПолучитьОписаниеФигур()

    в Душелов.VectorDrawing.Записать(String file)

    в Душелов.VectorDrawing.записатьToolStripMenuItem_Click(Object sender, EventArgs e)

    в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)

    в System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)

    в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)

    в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)

    в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)

    в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)

    в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)

    в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

    в System.Windows.Forms.Control.WndProc(Message& m)

    в System.Windows.Forms.ScrollableControl.WndProc(Message& m)

    в System.Windows.Forms.ToolStrip.WndProc(Message& m)

    в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

    в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

    в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    Reply
  99. Sudareva

    (10)Здравствуйте.

    где же просмотреть описание методов поподробнее?

    И пример обработки с масштабированием и обработкой событий???

    SIL

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *