Пишем игру Минер. Обработка событий ActiveX в 1С

Публикация № 627941 29.05.17

Разработка - Разработка внешних компонент

Пример демонстрирует обработку событий, генерируемых компонентой ActiveX в 1С.

Открываем  и создаем проект аналогично описанному в предыдущей статье  //infostart.ru/public/625457/.

Для хранения изображений колоды карт будем использовать компонент TImage. Кидаем его на форму и подгружаем изображения. Свойство Visible = false

Открываем Type Library и добавляем 3 метода:

AddCell  - добавляем ячейку

ChangeImage - поменять ячейку

ClearResource - Очищаем ресурсы с формы

Добавляем СОБЫТИЕ

Кодим:

Создаем класс

TCell = class
  Public
    Image : TImage;
    Row: Integer;
    Column: Integer;
    Par : Tw0rmMine;
    NameClass : string;
    Procedure OnRightClickImage(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  Constructor Create(x, y, iRow, iCol : Integer; iName: string);
  End;
procedure Tw0rmMine.MyEvent(Row, Column: Integer; Button, Name: string);
begin
  if FEvents <> nil then FEvents.OnClickCell(Row, Column, Button, Name);
end;

{ TCell }


constructor TCell.Create(x, y, iRow, iCol: Integer; iName: string);
begin
  x := x;
  y := y;
  Row := iRow;
  Column := iCol;
  NameClass := iName

end;


procedure TCell.OnRightClickImage(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Butt : String;

begin

  if Button = controls.mbRight then
    begin
      Butt := 'btRight';
    end;
  if Button = controls.mbLeft then
    begin
      Butt := 'btLeft';
    end;

    Par.MyEvent(Row, Column, Butt, NameClass); //!!!-ГЕНЕРИРУЕМ СОБЫТИЕ ДЛЯ 1С

end;


//Прорисовываем ячейку
procedure Tw0rmMine.AddCell(x, y, Row, Column: Integer;
  const Name: WideString);
var
  Cell : TCell;
const
  h=30; //Высота изображения
begin
  Cell := TCell.Create(x,y,Row,Column, Name);
  cell.Image := TImage.Create(Self);
  cell.Image.Parent:= Self;
  cell.Image.Left:=x;
  cell.Image.Top:=y;
  cell.Image.Width:=h;
  cell.Image.Height:=h;
  cell.Image.Name := Name;
  cell.Image.Canvas.CopyRect(Rect(0, 0, h, h), Image1.Canvas, Rect(column*h ,row*h, (column*h)+h, (row*h)+h));
  cell.Image.OnMouseDown := cell.OnRightClickImage;
  cell.Par := Self;
end;


//Меняем изображение в ячейке
procedure Tw0rmMine.ChangeImage(const Name: WideString; Row,
  Column: Integer);
Var
  img : TImage;
const
  h=30; //Высота изображения
begin
  img:=(FindComponent(Name)) as Timage;
  img.Canvas.CopyRect(Rect(0, 0, h, h), Image1.Canvas, Rect(column*h ,row*h, (column*h)+h, (row*h)+h));
end;

//Очищаем ресурсы 
procedure Tw0rmMine.ClearResource;
var i : integer;
begin
for i:= ComponentCount-1 downto 0 do
 begin
  If Components[i].Name <> 'Image1' then  Components[i].Free;
 end;
end;

Регистрируем компоненту.

Открываем 1С создаем обработку. Накидываем контролы. Видим, что появилось наше событие:

Кодим:

Перем МассивЯчеек;
Перем МассивИменЯчеек;
Перем МассивСостояниеЯчейки;
Перем МассивСостоянияФлагаЯчейки;
Перем ИдМины;

Процедура КнопкаВыполнитьНажатие(Кнопка)
	ЭлементыФормы.ЭлементУправления1.AddCell(0,0,1,2, "s1");
	ЭлементыФормы.ЭлементУправления1.AddCell(0,30,0,0, "s2");
КонецПроцедуры

Процедура ЭлементУправления1OnClickCell(Элемент, Row, Column, Button, Name)
	
	СпецификацияЯчейки = СтрЗаменить(Name, "_", Символы.ПС);
	Строк = Число(СтрПолучитьСтроку (СпецификацияЯчейки, 2)) - 1;
	Колонка = Число(СтрПолучитьСтроку (СпецификацияЯчейки, 3))-1;
	
	Если МассивСостояниеЯчейки[Строк][Колонка] =1 Тогда 
		Возврат;
	КонецЕсли;	
	
	Если Button = "btLeft" Тогда 
		
		ОбработатьГрафическийВыводЛеваяКнопка(Строк, Колонка, Name);
		
		Если МассивЯчеек[Строк][Колонка] = 0 Тогда
			ОбработатьПустуюЯчейку(Строк, Колонка);
			
			Выход = Ложь;
			
			Пока Выход = Ложь Цикл 
				Выход = Истина;
				
				Для а = 0 по КоличествоСтрок-1 Цикл 
					Для б = 0 по КоличествоКолонок-1 Цикл 
						Если МассивСостояниеЯчейки[а][б] = 99 Тогда 
							ОбработатьПустуюЯчейку(а, б);
							МассивСостояниеЯчейки[а][б] = 1;
							Выход = Ложь;
						КонецЕсли;	
						
					КонецЦикла;	
				КонецЦикла;
			КонецЦикла;	
			
		КонецЕсли;
		
		МассивСостояниеЯчейки[Строк][Колонка] = 1;
				
	КонецЕсли;	
	
	
	Если Button = "btRight" Тогда
		
		МассивСостоянияФлагаЯчейки[Строк][Колонка] = МассивСостоянияФлагаЯчейки[Строк][Колонка] + 1;
		Если МассивСостоянияФлагаЯчейки[Строк][Колонка] > 2 Тогда 
			МассивСостоянияФлагаЯчейки[Строк][Колонка] = 0;	
		КонецЕсли;	
		
		ОбработатьГрафическийВыводПраваяКнопка(Строк, Колонка, Name);
	
	КонецЕсли;	
	
	ПроверитьИгру();
	
КонецПроцедуры

Процедура ПриОткрытии()
	КоличествоКолонок = 10;
	КоличествоСтрок   = 10;
	КоличествоМин     = 10;
КонецПроцедуры

Процедура СтартНажатие(Элемент)	
	ЭлементыФормы.КомпонентПоле.ClearResource();
	ИнициализироватьПоле();
	ПрорисоватьПоле();
	ИдБомбы = 999;
	
КонецПроцедуры

Процедура ИнициализироватьПоле()
	
	МассивЯчеек = Новый	Массив(КоличествоСтрок, КоличествоКолонок);
	МассивСостояниеЯчейки = Новый	Массив(КоличествоСтрок, КоличествоКолонок);
	МассивСостоянияФлагаЯчейки = Новый	Массив(КоличествоСтрок, КоличествоКолонок);
	
	//Инициализируем массив
	Для а = 0 по КоличествоСтрок-1 Цикл 
		Для б = 0 по КоличествоКолонок-1 Цикл 
			МассивЯчеек[а][б] = 0;
			МассивСостояниеЯчейки[а][б] = 0;
			МассивСостоянияФлагаЯчейки[а][б] =0;
		КонецЦикла;	
	КонецЦикла;	
	
	//Расставляем мины
	
	Для ии = 1 По КоличествоМин Цикл  
		
		МинаРасставлена = Ложь;
		
		Пока МинаРасставлена = Ложь Цикл 
			Колонка = ПолучитьСлучайноеЧисло(0, КоличествоСтрок-1);
			Ряд = ПолучитьСлучайноеЧисло(0, КоличествоКолонок-1);	

			Если МассивЯчеек[Ряд][Колонка] = 0 Тогда 
				МассивЯчеек[Ряд][Колонка] = ИдМины; //Ид мины в маасиве
				МинаРасставлена = Истина;
			КонецЕсли;	
		КонецЦикла;	
			
	КонецЦикла;	
	
	//Обрабатываем поле
	
	Для а = 0 по КоличествоСтрок-1 Цикл 
		Для б = 0 по КоличествоКолонок-1 Цикл 
			Если МассивЯчеек[а][б] = 0 Тогда 
				МассивЯчеек[а][б] = ПроверитьЯчейку(а,б);
			КонецЕсли;
		КонецЦикла;	
	КонецЦикла;	



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

Процедура ПрорисоватьПоле()
	
	игрек = 0;
	МассивИменЯчеек = Новый	Массив(КоличествоСтрок, КоличествоКолонок);
	
	Для а = 0 по КоличествоСтрок-1 Цикл 
		икс = 0;
		Для б = 0 по КоличествоКолонок-1 Цикл 			
			имя = "Cell_" + СокрЛП(Формат(Число(а+1),"ЧГ=")) + "_" + СокрЛП(Формат(Число(б+1),"ЧГ="));
			МассивИменЯчеек[а][б] = имя;
			ЭлементыФормы.КомпонентПоле.AddCell(икс, игрек, 0, 0, имя);
			икс = икс + 30;
		КонецЦикла;
		игрек = игрек +30;
	КонецЦикла;	
	
КонецПроцедуры	

Функция ПолучитьСлучайноеЧисло(Мин,Макс) 

	//вместо Randomize 
	Для н = 1 По 100 Цикл 
		Уник = Новый УникальныйИдентификатор; 
	КонецЦикла; 

	//генерируем GUID 
	Уник = СокрЛП(Новый УникальныйИдентификатор); 

	//оставляем только цифры 
	Уник = СтрЗаменить(Уник,"-",""); 
	Уник = СтрЗаменить(Уник,"a",""); 
	Уник = СтрЗаменить(Уник,"b",""); 
	Уник = СтрЗаменить(Уник,"c",""); 
	Уник = СтрЗаменить(Уник,"d",""); 
	Уник = СтрЗаменить(Уник,"e",""); 
	Уник = СтрЗаменить(Уник,"f",""); 

//знаменатель должен иметь такое же количество нулей + 1 
	Знаменатель = 10; 
	Для н = 2 По (СтрДлина(СтрЗаменить(Уник,Символы.НПП,""))) Цикл 
		Знаменатель = Знаменатель * 10; 
	КонецЦикла; 

	Случ = Число(Уник) / Знаменатель; //здесь получается дробное случайное число от 0 до 1 

	//преобразуем его в случайное число из заданного интервала, округляем до целого 
	ЧислоИзИнтервала = Мин(Макс(Окр(Мин + (Макс-Мин)*Случ),Мин),Макс); 

	Возврат ЧислоИзИнтервала; 

КонецФункции

Функция ПроверитьЯчейку(Строк, Колонка)
	
	счетчик = 0;
	
	Если Строк-1 >= 0 и Колонка-1 >=0 Тогда 
		Если МассивЯчеек[Строк-1][Колонка-1] = ИдМины Тогда 
			счетчик = счетчик + 1;	
		КонецЕсли;	
	КонецЕсли;	
	
	Если Колонка-1 >=0 Тогда
		Если МассивЯчеек[Строк][Колонка-1] = ИдМины Тогда 
			счетчик = счетчик + 1; 
		КонецЕсли;	
	КонецЕсли;	
	
	Если Строк+1 < КоличествоСтрок и Колонка-1 >=0 Тогда 
		Если МассивЯчеек[Строк+1][Колонка-1] = ИдМины Тогда 
			счетчик = счетчик + 1;	
		КонецЕсли;
	КонецЕсли;	

	Если Строк-1 >=0 Тогда 
		Если МассивЯчеек[Строк-1][Колонка] = ИдМины Тогда 
			счетчик = счетчик + 1;	
		КонецЕсли;
	КонецЕсли;	
	
	Если Строк+1 <КоличествоСтрок Тогда 
		Если МассивЯчеек[Строк+1][Колонка] = ИдМины Тогда 
			счетчик = счетчик + 1;	
		КонецЕсли;
	КонецЕсли;	
	
	
	Если Строк-1 >=0 и Колонка+1 < КоличествоКолонок Тогда 
		Если МассивЯчеек[Строк-1][Колонка+1] = ИдМины Тогда 
			счетчик = счетчик + 1;
		КонецЕсли;		
	КонецЕсли;
	
	Если Колонка+1 < КоличествоКолонок Тогда 
		Если МассивЯчеек[Строк][Колонка+1]= ИдМины Тогда 
			счетчик = счетчик + 1;
		КонецЕсли;	
	КонецЕсли;	
	
	Если Строк+1 < КоличествоСтрок и Колонка+1 < КоличествоКолонок Тогда 
		Если МассивЯчеек[Строк+1][Колонка+1] = ИдМины Тогда 
			счетчик = счетчик + 1;
		КонецЕсли;	
	КонецЕсли;
	
	Возврат(счетчик);
КонецФункции	

Процедура ОбработатьПустуюЯчейку(Строк, Колонка)
	
		МассивСостояниеЯчейки[Строк][Колонка] = 1;
	
		Если Строк-1 >= 0 и Колонка-1 >=0 Тогда  
			ОбработатьГрафическийВыводЛеваяКнопка(Строк-1, Колонка-1, МассивИменЯчеек[Строк-1][Колонка-1]);
			Если МассивЯчеек[Строк-1][Колонка-1] = 0 и МассивСостояниеЯчейки[Строк-1][Колонка-1] <> 1 Тогда
				МассивСостояниеЯчейки[Строк-1][Колонка-1] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк-1][Колонка-1] = 1;	
			КонецЕсли;	
		КонецЕсли;	

		
		Если Колонка-1 >=0 Тогда 
			ОбработатьГрафическийВыводЛеваяКнопка(Строк, Колонка-1, МассивИменЯчеек[Строк][Колонка-1]);
			Если МассивЯчеек[Строк][Колонка-1] = 0 и МассивСостояниеЯчейки[Строк][Колонка-1] <> 1 Тогда	
				МассивСостояниеЯчейки[Строк][Колонка-1] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк][Колонка-1] = 1;	
			КонецЕсли;	
		КонецЕсли;	
		
		Если Строк+1 < КоличествоСтрок и Колонка-1 >=0 Тогда 
			ОбработатьГрафическийВыводЛеваяКнопка(Строк+1, Колонка-1, МассивИменЯчеек[Строк+1][Колонка-1]);	
			Если МассивЯчеек[Строк+1][Колонка-1] = 0 и МассивСостояниеЯчейки[Строк+1][Колонка-1] <> 1 Тогда
				МассивСостояниеЯчейки[Строк+1][Колонка-1] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк+1][Колонка-1] = 1;	
			КонецЕсли;
		КонецЕсли;	

		Если Строк-1 >=0 Тогда 
			ОбработатьГрафическийВыводЛеваяКнопка(Строк-1, Колонка, МассивИменЯчеек[Строк-1][Колонка]);	
			Если МассивЯчеек[Строк-1][Колонка] = 0 и МассивСостояниеЯчейки[Строк-1][Колонка] <> 1 Тогда 
				МассивСостояниеЯчейки[Строк-1][Колонка] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк-1][Колонка] = 1;	
			КонецЕсли;
		КонецЕсли;	
		
		Если Строк+1 <КоличествоСтрок Тогда  
			ОбработатьГрафическийВыводЛеваяКнопка(Строк+1, Колонка, МассивИменЯчеек[Строк+1][Колонка]);	
			Если МассивЯчеек[Строк+1][Колонка] = 0 и МассивСостояниеЯчейки[Строк+1][Колонка] <> 1 Тогда	
				МассивСостояниеЯчейки[Строк+1][Колонка] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк+1][Колонка] = 1;	
			КонецЕсли;
		КонецЕсли;	
		
		
		Если Строк-1 >=0 и Колонка+1 < КоличествоКолонок Тогда  
			ОбработатьГрафическийВыводЛеваяКнопка(Строк-1, Колонка+1, МассивИменЯчеек[Строк-1][Колонка+1]);	
			Если МассивЯчеек[Строк-1][Колонка+1] = 0 и МассивСостояниеЯчейки[Строк-1][Колонка+1] <> 1 Тогда	
				МассивСостояниеЯчейки[Строк-1][Колонка+1] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк-1][Колонка+1] = 1;	
			КонецЕсли;		
		КонецЕсли;
		
		Если Колонка+1 < КоличествоКолонок Тогда  
			ОбработатьГрафическийВыводЛеваяКнопка(Строк, Колонка+1, МассивИменЯчеек[Строк][Колонка+1]);
			Если МассивЯчеек[Строк][Колонка+1]= 0 и МассивСостояниеЯчейки[Строк][Колонка+1] <> 1 Тогда	
				МассивСостояниеЯчейки[Строк][Колонка+1] = 99;
			Иначе 	
				МассивСостояниеЯчейки[Строк][Колонка+1] = 1;
			КонецЕсли;	
		КонецЕсли;	
		
		Если Строк+1 < КоличествоСтрок и Колонка+1 < КоличествоКолонок Тогда  
			ОбработатьГрафическийВыводЛеваяКнопка(Строк+1, Колонка+1, МассивИменЯчеек[Строк+1][Колонка+1]);	
			Если МассивЯчеек[Строк+1][Колонка+1] = 0 и МассивСостояниеЯчейки[Строк+1][Колонка+1] <> 1 Тогда	
				МассивСостояниеЯчейки[Строк+1][Колонка+1] = 99;
			Иначе
				МассивСостояниеЯчейки[Строк+1][Колонка+1] = 1;	
			КонецЕсли;	
		КонецЕсли;	

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

Процедура ОбработатьГрафическийВыводЛеваяКнопка(Строк, Колонка, Name)
	
		Если МассивЯчеек[Строк][Колонка] = ИдМины Тогда 
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 4, 0);
			Предупреждение("Вы проиграли!");
		КонецЕсли;	
		
		Если МассивЯчеек[Строк][Колонка] = 0 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 4, 1);
		КонецЕсли;  		
		
		Если МассивЯчеек[Строк][Колонка] = 1 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 1, 0);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 2 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 1, 1);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 3 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 1, 2);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 4 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 2, 0);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 5 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 2, 1);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 6 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 2, 2);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 7 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 3, 0);
		КонецЕсли;
		
		Если МассивЯчеек[Строк][Колонка] = 8 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 3, 1);
		КонецЕсли;
		
		МассивСостоянияФлагаЯчейки[Строк][Колонка] =0;
	
КонецПроцедуры	

Процедура ОбработатьГрафическийВыводПраваяКнопка(Строк, Колонка, Name)
	
		Если МассивСостоянияФлагаЯчейки[Строк][Колонка] = 0 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 0, 0);
		КонецЕсли;  		
		
		Если МассивСостоянияФлагаЯчейки[Строк][Колонка] = 1 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 0, 1);
		КонецЕсли;
		
		Если МассивСостоянияФлагаЯчейки[Строк][Колонка] = 2 Тогда
			ЭлементыФормы.КомпонентПоле.ChangeImage(Name, 0, 2);
		КонецЕсли;
	
КонецПроцедуры	
	
Процедура ПроверитьИгру()
	
	сч = 0;
		
	Для а = 0 по КоличествоСтрок-1 Цикл 
		Для б = 0 по КоличествоКолонок-1 Цикл 
			Если МассивЯчеек[а][б] = ИдМины и МассивСостоянияФлагаЯчейки[а][б] =1 Тогда 
				
				сч = сч + 1;
			
			КонецЕсли;
		КонецЦикла;	
	КонецЦикла;	
	
	Если сч = КоличествоМин Тогда 
		Предупреждение("Вы победили");
	КонецЕсли;	
		
КонецПроцедуры		
		
		

 

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. user621724_Dimav1979 387 29.05.17 10:55 Сейчас в теме
Исходники
Прикрепленные файлы:
miner.zip
andrey7617; sasha777666; monsterZE; gzharkoj; netesoff; smirnov.es; +6 Ответить
2. rpgshnik 3365 29.05.17 11:09 Сейчас в теме
Картинки графики красивые, сам делал?
Прикрепленные файлы:
smirnov.es; +1 Ответить
3. user621724_Dimav1979 387 29.05.17 11:37 Сейчас в теме
(2) Картинки друг мой сделал - ДИМКА КОТ
корум; rpgshnik; +2 Ответить
4. Brawler 441 29.05.17 18:52 Сейчас в теме
ActiveX загибается загибается, да никак не загнется, как и мерзопакостный Delphi)))
5. user621724_Dimav1979 387 30.05.17 02:40 Сейчас в теме
(4) слова недалёкого человека...учите матчасть и не пишите больше чепухи
smirnov.es; Deslime; CyberCerber; rpgshnik; gzharkoj; +5 Ответить
8. Brawler 441 30.05.17 07:06 Сейчас в теме
(5) Давайте без оскорблений! Технология ActiveX в моём понимании ещё жива только из-за большой тяги Microsoft к обратной совместимости. Да в некоторых случаях удобно её использовать, но вот в проведенном вами решении есть проблема. Без танцев с бубном не заставить работать под тем же линуксом. А по поводу Delphi, свой путь в профессию начинал с него когда-то, но потом быстро переметнулся на С# и не жалею. Сдаётся мне у вас предвзятое отношение к пользователям сего ресурса. Ошибочное я бы сказал, тут многие освоили не только программирование на 1С.
sasha777666; rpgshnik; +2 1 Ответить
9. user621724_Dimav1979 387 30.05.17 08:46 Сейчас в теме
(8) Учитесь выбирать, конкретный инструментарий под конкретную задачу! Неважно дельфи это 7 версии или XE последней версии...да это тяжело, но приходит с опытом. Если человек не в состоянии применить навыки - это не значит, что невозможно это сделать.
11. Brawler 441 30.05.17 10:47 Сейчас в теме
(9) Учитесь не учить людей уму разуму
sasha777666; rpgshnik; +2 1 Ответить
6. &rew 35 30.05.17 05:33 Сейчас в теме
Я, конечно, дико извиняюсь, но мне кажется что все-таки Сапёр!
rpgshnik; +1 Ответить
7. rpgshnik 3365 30.05.17 06:47 Сейчас в теме
(6) Я вас дико поддерживаю!
10. ipoloskov 159 30.05.17 09:05 Сейчас в теме
Мне кажется, УникальныйИдентификатор - это не вполне случайное число, распределение будет совсем не равномерное.
Генератор случайных чисел
DrAku1a; Brawler; VitaliyCeban; +3 Ответить
12. Brawler 441 06.10.19 22:58 Сейчас в теме
Случайно снова наткнулся на эту статью и вспомнил, что месяц назад рылся в своих поделках древних на C# и находил клон Сапера))
Картинку прикладываю так чисто по трещать))
Прикрепленные файлы:
Оставьте свое сообщение

См. также

GGraphics - внешняя компонента для работы с картинками jpg (jpeg), png, bmp, gif, tif

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    72645    71    253    

187

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer). Работа с PDF основана на проекте PDFium из состава проекта Chromium/Chrome, для работы с TWAIN использован свободный проект twpp https://github.com/xricht17/twpp.

2400 руб.

12.05.2020    21408    110    84    

68

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    31675    95    121    

102

Внешняя компонента WebSocket для 1С (c поддержкой Authorization token bearer)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    13655    9    26    

14

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

1200 руб.

04.05.2018    41355    104    64    

55

Разработка внешней компоненты по технологии Native API. Мониторинг файловой системы в 1С

Разработка внешних компонент Платформа 1С v8.3 Россия Абонемент ($m)

Пример разработки внешней компоненты по технологии Native API для мониторинга выбранной папки файловой системы (изменение, переименование, удаление) файлов.

1 стартмани

12.03.2023    5200    5    binx    3    

45

Конвертор из PDF

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Native компонента для рендеринга PDF в картинки, и (или) извлечения текста из PDF файлов.

2 стартмани

25.01.2023    3054    22    bmk74    12    

23

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

1 стартмани

13.05.2022    8920    5    user1779098    34    

61

Делаем табло в обозревателе из 1Ски с нуля за полчаса. Без бутстрапов, реактов и ангуляров. Жизнетрюки от kuzkov.info

Разработка внешних компонент WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

На Инфостарте много разработок, которые предназначены для отображения в обозревателе данных на связи из 1С. С разными способами подключения, на разных технологиях. Есть платные, есть бесплатные. В данной публикации я хочу показать, как можно сделать сопряжение 1С обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно.

1 стартмани

02.05.2022    9732    127    Steelvan    0    

67

Внешняя компонента - универсальный, надежный перехватчик клавиатурных событий

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

29.11.2021    8782    20    Prometeus2011    14    

36

Внешняя компонента для мобильного приложения

Разработка внешних компонент Мобильная разработка Мобильная платформа Россия Абонемент ($m)

Внешняя компонента для дополнения мобильной платформы некоторыми функциями.

1 стартмани

02.11.2021    8997    28    Prometeus2011    45    

37

Распознавание речи в мобильном приложении 1С на Android

Мобильная разработка Разработка внешних компонент Мобильная платформа Абонемент ($m)

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

1 стартмани

15.07.2021    10164    9    salexdv    6    

36

Звуковое управление в 1С 8.3

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    10447    velemir    36    

81

Внешняя компонента: Android tools

Мобильная разработка Разработка внешних компонент Платформа 1С v8.3 Мобильная платформа Абонемент ($m)

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 390KB.

1 стартмани

12.01.2021    14349    39    KAV2    46    

16

GraphViz1С: внешняя компонента 1С Native API для построения графов

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешняя компонента Native API для Windows с исходными кодами на C++ для построения графов посредством библиотеки GraphViz. Граф строится на основании текстового описания в формате dot. Реализован экспорт в большинство графических форматов. Поддерживаются версии платформы от 8.3.14 и выше до 8.3.18.

22.12.2020    10932    214    kandr    15    

66

Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)

Разработка внешних компонент Мобильная разработка Платформа 1С v8.3 Абонемент ($m)

Используя данный драйвер, можно без единой строки кода, просто установив на ТСД мобильный клиент 1С, сразу начать подбирать товары в документах вашей учётной системы. А, адаптировав нужные формы под небольшой размер экрана ТСД, можно просто создать полноценное рабочее место для выполнения операций с помощью ТСД, не прибегая к стороннему софту. Если же на складе плохая связь (или её нет вовсе), то можно использовать возможности мобильного клиента в автономном режиме (потребуется доработка вашей конфигурации). Драйвер также можно использовать и для Android приложения на мобильной платформе. В результате чего можно обойтись без ненужных полей ввода и клавиатуры «на пол-экрана».

3 стартмани

09.10.2020    53425    378    ltfriend    221    

107

Мониторинг учетных записей пользователей Windows Server 2008/2012

Разработка внешних компонент Информационная безопасность Россия Абонемент ($m)

Программа позволяет отслеживать журнал событий безопасности действий над учетными записями пользователей (удаление, создание, блокировка, смена пароля и т.д.), и отправлять на E-mail уведомление системному администратору в случае изменения конфигурации пользователей Windows Server.

3 стартмани

10.09.2020    6957    0    ClickUp    0    

2

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Инструментарий разработчика Разработка внешних компонент WEB-интеграция Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    12274    8    DrZombi    7    

22

Внешняя компонента Native API для управления окнами и буфером обмена, получения снимков окон Windows и Linux

Разработка внешних компонент Управляемые формы Россия Абонемент ($m)

Внешняя компонента Native API для Windows и Linux с исходными кодами на C++. Возможности компоненты: получение списка окон и списка процессов, управление размерами и положением окна, снимок окон и снимок экрана, доступ к данным буфера обмена, взаимодействие по протоколу WebSocket.

2 стартмани

16.04.2020    12209    25    kandr    13    

30

Android Java и NativAPI C++ внешняя компонента для широковещательных сообщений (отправка и прием). Подключаем сканер ШК и клавиатуру к "1С мобильное приложение"

Оптовая торговля Розничная торговля Сканер штрих-кода Разработка внешних компонент Мобильная разработка Мобильная платформа Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Подключаем сканер ШК и клавиатуру к "1С мобильное приложение", на терминале сбора данных "ATOL Smart.Lite android 7.0". Работаем с буфером обмена. В архиве к теме; 1. исходник компоненты (папка package готовый zip); 2. исходник "AccessibilityService" для перехвата клавиатуры (папка package готовый apk); 3. cf - тестовая конфигурация

1 стартмани

15.04.2020    18668    105    SanyMaga    102    

20

Конвертация PDF в 1С

Разработка внешних компонент Абонемент ($m)

COM-компонента для работы с PDF (32/64 bit)

4 стартмани

31.03.2020    32754    157    SerVer1C    143    

77

Получение фото с веб-камеры

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Получение фото с веб-камеры без ActiveX. Внешняя компонента по технологии Native API.

1 стартмани

25.03.2020    21323    190    berezdetsky    51    

27

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    23055    80    Johny_v    20    

35

Сканирование по TWAIN в 1С (обычные и управляемые формы)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка показывает пример, как можно в 1С проводить сканирование с помощью компоненты TWAIN.

3 стартмани

03.01.2020    15579    51    Denr83    0    

20

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

21.10.2019    21734    18    ripreal1    34    

67

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    23167    50    vdv2701    40    

48

PinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

PinkRabbitMQ представляет собой Native API компоненту для 1С Предприятия 8 (Windows 32bit и 64bit) с открытым исходным кодом на с++ (можно собрать компоненту самостоятельно). PinkRabbitMQ это низкоуровневая компонента которая реализует обмен по протоколу AMQP с брокером сообщений RabbitMQ. Для организации высокоуровнего обмена между информационными базами предназначен Адаптер. Компонента разрабатывается в рамках проекта Адаптер.

29.07.2019    39170    1858    Begemoth80    255    

206

Компонента для 1С, принимающая вес с железнодорожных, автомобильных, крановых весов

Разработка внешних компонент Платформа 1С v7.7 Платформа 1С v8.3 Транспорт, автопарки, такси Россия Платные (руб)

Программа "Компонента приёма веса для 1С, версия 3.0" позволяет принимать и заносить вес с весов непосредственно в программу "1С" - то есть, прием веса осуществляется целиком и полностью из программы "1С".

26400 руб.

09.04.2019    14871    2    8    

5

Внешние компоненты мобильной платформы 1С для ОС Андроид

Разработка внешних компонент Мобильная разработка Мобильная платформа Бесплатно (free)

На трех простых примерах описана процедура разработки внешних компонент для Андроид. Статья написана по мотивам доклада на конференции INFOSTART 2018 EDUCATION.

31.01.2019    23258    IgorKissil    29    

80

Эмулятор ККМ по стандарту ФФД 1.1

Разработка внешних компонент Кассовые операции ККМ Платформа 1С v8.3 1С:Розница 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Эмулятор драйвера ККМ по стандарту ФФД 1.1 предназначен для использования всех возможностей программы, при отсутствии физической кассы. Подойдет как программистам при разработке интерфейса РМК, например, так и пользователям для тестирования возможностей программы.

1 стартмани

30.12.2018    38349    189    Matveymc    31    

28

Разработка внешних компонент на ассемблере goAsm

Разработка внешних компонент Абонемент ($m)

Создание внешней компоненты по технологии Com "с нуля", используя ассемблер goAsm.

1 стартмани

26.11.2018    12204    chessman    42    

137

WebSocket Клиент / Сервер. Внешний компонент

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Реализация протокола WebSocket. Клиентская часть для взаимодействия с внешними сервисами. Серверная часть для организации собственного сервера, принимающего клиентские соединения в многопоточном режиме. Возможно взаимодействие RabbitMQ Slack Asterisk и другие

1 стартмани

16.11.2018    34291    166    nomadon    74    

32

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок PCRE2 версии 10.36 (до версии 13, использовался boost::regex v 1.69). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    24355    62    KAV2    121    

82

TextRadar - компонента нечеткого поиска

Разработка внешних компонент Поиск данных Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Компонента предназначена для организации нечеткого поиска в текстовых данных, решения задач сопоставления списков и т.д. Вычисляемый коэффициент релевантности (похожести) - нормированный, лежит в диапазоне между 0 и 1. В случае необходимости (опционально) формируются данные для отображения найденных фрагментов. Расчет коэффициентов происходит в многопоточном режиме (на уровне компоненты). Для 32 и 64 разрядных систем.

19.09.2018    31505    42    TSSV    19    

19

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    45800    307    RSConsulting    21    

74

Распознавание лиц (off-line). Демонстрационная база.

Разработка внешних компонент Платформа 1С v8.3 Абонемент ($m)

Распознавание лиц входит в нашу жизнь стремительными темпами, бизнес стремится за событиями. В публикации находится описание и пример использования нейросетей для распознавания лиц.

1 стартмани

17.07.2018    25144    84    nomadon    45    

117