| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Управляем 1С через сеть |
| Автор: Darksquall 28.1.2006, 13:53 | ||||||||||||||||
| Огромное количество организаций использует систему 1С:Предприятие, но не каждый пользователь подозревает о возможном проникновении в его систему чужаков и получении данных из базы, а также частичном управлении функциями 1С удаленно. Сразу скажу что, данный механизм использования 1С:Предприятие позволит усовершенствовать некоторые функции системы и ни коим образом не является руководством к разрушению (порче) данных или к помехам действий удаленного пользователя. Статья позволит программистам приобрести дополнительные навыки в использовании системы и расширить познания. Общий принцип механизма состоит в соединении с 1С через OLE и последующем использованием функций 1С на основе принимаемых команд от удаленного компьютера, т.к. в Delphi мы можем написать приложение невидимое для пользователя, то программа на Delphi, контролирующая 1С, будет скрыта от глаз пользователя и подвох не будет заметен, следовательно вину после приходящего на глазах у пользователя ужаса не на кого будет переложить кроме как на него самого. С помощью подобного механизма открываются возможности по управлению системы находясь за другим компьютером в сети, также появляется доступ к выгрузке данных из системы без согласия на то пользователя, т.к. попадаем мы в систему вместе с пользователем, под его учетной записью и паролем. Вооружившись Delphi (я использовал Delphi 6.0), приступим: Создаем обычное приложение, File->New->Application Создается форма, бросаем на форму Memo из вкладки Standard, 2 кнопки Button (вкладка Standard), Edit (вкладка Standard), IdUDPClient из вкладки IndyClients, IdUDPServer из вкладки IndyServers. Настроим компоненты. Компонента Мемо. Кликаем на Memo, в object inspeсtor находим параметр Line - нажимаем, появляется окно - стираем надпись Memo1, выходим из String List Editor. Для наглядности выбираем значение ScrollBars Memo равное ssVertical. Компонента Button. В object inspeсtor меняем содержимое параметра Caption на "Отправить 1С". Во второй кнопке то же самое. Компонента Edit. В object inspeсtor очищаем содержимое параметра Text. Компонента IdUDPClient - Отсылает данные. Выберем любой порт от 1 до 65000, через который будет происходить связь, я выбрал 122 (можете выбрать любой другой). Присваиваем это значение свойству Port компоненты. Заполним свойство Host, сюда записывается IP-адрес компьютера, которому будет отправляться сообщение. BroadCastEnabled устанавливаем в true. А вместо конкретного IP-адреса рекомендую использовать широковещательный (отправляется всем), последний октет 255.Например 192.168.12.255. Свойство Active устанавливаем в True. Компонента IdUDPServer - Получает данные. Выбираем тот же порт что и в IdUDPClient. BroadCastEnabled устанавливаем в true. Свойство Active устанавливаем в True. Все компоненты на форме, теперь приступим к написанию кода. Добавляем в Uses модуль comobj
Добавляем переменную
Кликаем 2 раза на форму приложения, в появившейся процедуре FormCreate(Sender: TObject); пишем следующий код
кликаем на компоненте IdUDPServer, выбираем вкладку Events, 2 раза кликаем по свойству OnUDPRead и заполняем процедуру следующим образом.
Добавим в программу еще одну процедуру.
Добавим ее в класс TFOrm.
Кликаем 2 раза на каждой из кнопок (Button) и записываем следующий код.
Вторая кнопка.
Итак, программа готова, компилируем ее (F9) на экране появляется форма программы. В нижнюю строчку запишем текст для передачи в окно сообщений 1С Предприятия, а верхнее поле предназначено для отправки текста программы на языке 1С. Единственное ограничение: подобным образом (через OLE) нельзя создавать переменные 1С Предприятия, но есть выход - использовать переменные системы, которые находятся в глобальном модуле конфигурации например Да=СоздатьОбъект("Документ.ПоступлениеТоваров"); переменная "Да" из глобального модуля. Многообразие команд языка 1С Предприятие открывает широкий доступ к системе, в 1С есть даже подобие SQL языка, приведу несколько примеров использования команд (все остальное в справочниках 1С Предприятия): Да=СоздатьОбъект("Документ.ПоступлениеТоваров"); Да.НайтиПоНомеру("00000001","01.01.2006"); Нет=Да.ТекущийДокумент(); ОткрытьФорму(Нет); Использованы глобальные переменные системы (Да и Нет),программа откроет документ и выведет его на экран без согласия пользователя, или например ОткрытьФорму("Справочник.Номенклатура"); откроет справочник номенклатура. Сообщить("Hello world!"); отправит в 1С Предприятие сообщение. Все, что останется сделать, так это подменить значок в нашей программе на значок 1С,положить ярлык (на комп юзера с параметром server) вместо ярлыка 1С на рабочий стол, запустить копию на нашем компе без параметров и хорошенько подумать, а стоит ли вообще усложнять жизнь юзерам и в особенности бухгалтерам :-). Подобный механизм открывает большие возможности для экспериментов над 1С Предприятием, а так же над ее пользователями, которые будут удивлены тем, что 1С начнет жить собственной жизнью, общаться с пользователем, создавать или уничтожать элементы системы, возможна даже реализация чата на основе 1С Предприятия. Желаю успехов в освоении и использовании. Полную версии моей статьи с примером проги качаем с http://www.xakep.ru/post/29747/default.asp http://www.xakep.ru/post/29747/default.asp Alimoff Roman (darksquall@yandex.ru) |
| Автор: Jureth 5.5.2006, 05:23 |
| Смешно. |
| Автор: Darksquall 5.5.2006, 14:27 |
| ага смехота, особенно када Юзер обнаружит все это |
| Автор: Jureth 6.5.2006, 05:45 | ||
Да дело не в том, обнаружит юзер это или нет - просто, чтобы установить это нужны полные права на машину юзера. Хакер, получив эти права будет заниматься другим и по другому. А программеру, как показывает практика, это наф не надо. У него на 1С и так обычно есть аккаунт с полными правами и он может творить чего захочет.
А чат и без OLE нормально на 1С делается. |
| Автор: XpyDi 6.5.2006, 09:05 |
| Можно написать неплохую систему удаленного администрирования для 1C Хотя, конечно, овчинка не стоит выделки! |
| Автор: Jureth 7.5.2006, 22:53 |
| Я вообще не понимаю, чего она может стоить, кроме лишних нервов. А если узнают, что ты что-то там делаешь используюя аккаунт буха втихаря от этого самого буха, причём таким странным способом, то можно смело начинать копать себе могилу. Ведь обьяснить подобное поведение, ИМХО, будет очень проблематично. |