Пишем, рисуем, конвертируем изображения с помощью Native API компоненты 1С, использующей GDI+

03.04.25

Разработка - Работа с интерфейсом

В архиве исходный код компоненты С++, 32 dll , 64 dll, обработка с примером использования 1С, все результаты выполнения кода, описанного ниже (картинки).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
1С Native API GDI+
.zip 2,89Mb
1
1 Скачать (1 SM) Купить за 1 850 руб.

Что у меня было:

1С:Предприятие 8.3 (8.3.24.1548) и пустая конфигурация.

Microsoft Visual Studio Community 2022.

Реализован базовый функционал.

В архиве исходники С++ и проект VS, можно дописать что угодно.

Начнем с описания методов:

Строка = GetStatus();  возвращает информационную структуру json о результате выполнения последней функции и дополнительные данные этих функций. 

 
 Пример:

Строка = GetDC();  возвращает информационную структуру json, настроек по умолчанию,  данных для рисования. Структура является основанием для заполнения параметров в функциях, в которых они не заполнены.

 
 Пример:

 

Строка = GetImageInfo();  возвращает информационную структуру json, описывающую загруженное изображение.

 
 Пример:

Строка = GetWindowsSize();  возвращает информационную структуру json. Размер экрана, верхнего окна и размер картинки.

 
 Пример:

 

bool LoadImage(Путь к файлу строка или Двоичные данные картинки). Загружает картинку.

Возвращает: Истина все нормально, Ложь - есть ошибка, также как и все функции ниже. Подробности в функции GetStatus();

bool CreateImage(Ширин число, Высота число). Создает картинку по размерам с белым фоном.

bool View(). Открывает окно с загруженной картинкой.

bool DrawString(Строка , Настройки(не обязательно) - строка json) . Рисует текст на картинке.

Описание параметров см выше. заполнять все параметры не обязательно.

bool DrawShape(Строка имя фигуры , Настройки- строка json) . Рисует фигуры на картинке.

Описание параметров см выше. заполнять все параметры не обязательно.

фигуры: "rect","ellipse","pie"- обязательно структура "Rect";

фигура  "polygon" обязательно массив "Points".

bool CreatePrtSc(Настройки- (не обязательно) строка json). Создает скрин экрана или верхнего окна.

структура:

{X=0, Y=0, width=100, height=100, ForegroundWindow=true}

bool или ДД SaveAs(строка Имя файла или пусто, Настройки(не обязательно) - строка json). Сохраняет картинку. Если сохраняем файл, тогда булево если имя файла не указано (параметр по умолчанию) двоичные данные.

А теперь вместо много текста - много кода (код конечно абстрактный не пинайте сильно):

&НаСервере
функция ПолучитьДДНаСервере(ИмяМакета)
	Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);
КонецФункции     

&НаКлиенте
Асинх Функция СоздатьКомпоненту()
	
	Компонента = Неопределено;
	СистемнаяИнформация = Новый СистемнаяИнформация;   
	//Получаем двоичные данные  длл-ки в соотвесвии с платформой клиента
	ДвоичныеДанныеДЛЛ = ПолучитьДДНаСервере(?(СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64, "DLL64", "DLL32"));
	ИмяФайлаДЛЛ = ПолучитьИмяВременногоФайла();	     
	ДвоичныеДанныеДЛЛ.Записать(ИмяФайлаДЛЛ);
	//создаем из файла
	Если Ждать ПодключитьВнешнююКомпонентуАсинх(ИмяФайлаДЛЛ, "malimgdrvdll", ТипВнешнейКомпоненты.Native) Тогда 
		Компонента = Новый("AddIn.malimgdrvdll.mal_img_drv");     
		Сообщить(Ждать Компонента.ПолучитьVersionАсинх()); //Версия обработки.
	КонецЕсли;	
	//Больше файл длл не нужен.
	УдалитьФайлыАсинх(ИмяФайлаДЛЛ);   
	Если Компонента = Неопределено Тогда 
		ВызватьИсключение "Что-то пошло не так!?";
	КонецЕсли;	                   

	Возврат Компонента;
КонецФункции

&НаКлиенте
Асинх Процедура ОбработатьКартинку(Команда) //эта кнопка на форме 
	
	ПоследнийСтатус = Новый Структура;
	Компонента = Ждать СоздатьКомпоненту();   
	ДвоичныеДанныеОригинал = ПолучитьДДНаСервере("png");
	
	//загружаем картинку из Двоичных данных
	Ждать Компонента.LoadImageАсинх(ДвоичныеДанныеОригинал);  
	//Паследний статус в DATA - данные картики
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента); //ошибка будет в сообщении      

	//Картику сохраняю в файл как есть без фильтров
	Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "origen.png"); 
	
	//Картику из файл как есть без фильтров
	Ждать Компонента.LoadImageАсинх(ДиректорияКартинок + "origen.png");      
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента); //ошибка будет в сообщении      

	//Картику сохранили в двоичные данные как есть без фильтров
	//И на форму это действо только для демонстрации возможностей
	Ожидания = Ждать Компонента.SaveAsАсинх();
	КартинкаОригенал = ПоместитьВоВременноеХранилище(Новый Картинка(Ожидания.Значение), УникальныйИдентификатор);                     

	//Читем информацию о текущей картинке
	Ожидания = Ждать Компонента.GetImageInfoАсинх();
	ИнформацияОКартинки = ПрочитатьЗначениеJSON(Ожидания.Значение);

	//Читем настройки поумолчанию
	Ожидания = Ждать Компонента.GetDCАсинх();
	НастройкиПоУмолчанию = ПрочитатьЗначениеJSON(Ожидания.Значение);

	//-------------------------------------------------------------------------
	//Напишем первую строку с настройками по умолчанию
	Ждать Компонента.DrawStringАсинх("Тест №1 одна строка.");       

	//-------------------------------------------------------------------------
	//Вторая строка созданим свои настройки другой шрифт и размер вырвнивание. 
	//Alignment имеет смысл когда строка вписана в прямоугольник или многостроный текст   
	Настройки =  Новый Структура("Text, Point", Новый Структура("Font, Alignment"
		, Новый Структура("Size, Name, Style", 32, "Segoe Script", "FontStyleBold"), "StringAlignmentCenter")
		, Новый Структура("X,Y", 100, 30.4));
	//Остальные не заполненые параметры будут заполнены по умолчанию
	Ждать Компонента.DrawStringАсинх("Тест №2 2 строки" + Символы.ПС + "стр 2 шрифт и выравнивания"
		, ЗаписатьЗначениеJSON(Настройки)); //Передадим настройки стракой json

	////-------------------------------------------------------------------------
	//третя строка - тестируем градиент текста, на основе настроек по умолчанияю.
	НастройкиПоУмолчанию.Point.Y = Настройки.Point.Y + 100;//Сдвигаемся вниз на основании преведущей надписи
	НастройкиПоУмолчанию.Text.Font.Size = 52;     
	НастройкиПоУмолчанию.Text.Color.Red = 255;
	НастройкиПоУмолчанию.Text.LinearGradientColor.Color.Green = 255;
	НастройкиПоУмолчанию.Text.LinearGradientColor.Point.X = 10;
	Ждать Компонента.DrawStringАсинх("Тест №3 ГРАДИЕНТ ЦВЕТА", ЗаписатьЗначениеJSON(НастройкиПоУмолчанию));       
	  //Паследний статус в DATA - прямоугольник в который вписали текст
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);

	
	//-------------------------------------------------------------------------
	//4 строка - Вписываем текст в прямоугольник "Rect" вместо "Pain" 
	//синим цветом с выравниванием выставили выше по коду (Настройки.Вставить("Alignment", "StringAlignmentCenter"))   
	//ПоследнийСтатус.Data.Y - получаем из статуа преведущей операции 
	Настройки.Text.Font.Size = 16;   
	Настройки.Text.Font.Name = "Arial";
	Настройки.Удалить("Point"); 
	Настройки.Text.Удалить("LinearGradientColor");
	Настройки.Text.Вставить("Color", Новый Структура("Blue", 255));
	Настройки.Вставить("Rect", Новый Структура("X,Y,Width,Height", 0, ПоследнийСтатус.Data.Y + 100, 100, 100));
	Ждать Компонента.DrawStringАсинх("Тест №4 строка1 строка2 строка3", ЗаписатьЗначениеJSON(Настройки));       
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);
	
	//-------------------------------------------------------------------------
	//5 строка - Прозрачность
	Настройки.Text.Вставить("Color", СоздатьЦветGDI(WebЦвета.Красный, 50));                                     
	Настройки.Удалить("Rect");                                                                                  
	Настройки.Вставить("Point", Новый Структура("X,Y",ПоследнийСтатус.Data.X + 100, ПоследнийСтатус.Data.Y));
	Настройки.Text.Font.Size = 32;    
	Настройки.Text.Font.Вставить("Style", "FontStyleBold");
	Ждать Компонента.DrawStringАсинх("Тест №5 Прозрачность", ЗаписатьЗначениеJSON(Настройки));       
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	
	//-------------------------------------------------------------------------
	//6. заливка под текстом
	Настройки.Text.Удалить("Color");
	Настройки.Point = Новый Структура("X, Y", ПоследнийСтатус.Data.X, ПоследнийСтатус.Data.Y + ПоследнийСтатус.Data.Height);
	Настройки.Вставить("Filling", Новый  Структура("Color", СоздатьЦветGDI( ,80)));
	Ждать Компонента.DrawStringАсинх("Тест №6 заливка", ЗаписатьЗначениеJSON(Настройки));                                                         
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	
	//-------------------------------------------------------------------------
	//7. заливка под текстом и цетной рамкой то толщине 10 точек
	Настройки.Point.X = ПоследнийСтатус.Data.X;
	Настройки.Point.Y = ПоследнийСтатус.Data.Y + ПоследнийСтатус.Data.Height;
	Настройки.Filling.Color = СоздатьЦветGDI();
	Настройки.Вставить("Borders", Новый Структура("Color, Width", Новый Структура( "Alpha, Green", 255, 255), 10));
	Ждать Компонента.DrawStringАсинх("Тест №7 заливка c рамкой", ЗаписатьЗначениеJSON(Настройки));       
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	//-------------------------------------------------------------------------
	//8. только рамка то толщине 5 точек
	Настройки.Point = Новый Структура("X, Y", ПоследнийСтатус.Data.X, ПоследнийСтатус.Data.Y + ПоследнийСтатус.Data.Height + 10);
	Настройки.Удалить("Filling");
	Настройки.Borders = Новый Структура("Color, Width", Новый Структура( "Alpha, Green, Blue", 190, 255, 255), 5);
	Ждать Компонента.DrawStringАсинх("Тест №8 рамка", ЗаписатьЗначениеJSON(Настройки));       
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	

	
	//-------------------------------------------------------------------------
	//9. поворот текста имитиреум вод. знак
	Настройки = Новый Структура("Point, Text, Rotate", Новый Структура("X, Y", 50, -50), Новый Структура, 45); 
	Настройки.Text.Вставить("Color", Новый Структура("Alpha", 128));  
	Настройки.Text.Вставить("Font", Новый Структура("Size", 84));     
	Ждать Компонента.DrawStringАсинх("Тест №9 поворот", ЗаписатьЗначениеJSON(Настройки));       
	
	
	//-------------------------------------------------------------------------
	//9. Прямоугольниr
	Настройки = Новый Структура("Rect, Filling, Borders", Новый Структура, Новый Структура, Новый Структура); 
	Настройки.Rect = Новый Структура("X,Y,Width,Height", 0, ПоследнийСтатус.Data.Y + 100, 200, 100);
	
	Настройки.Filling =  Новый Структура("Color, LinearGradientColor"
		, Новый Структура("Alpha, Blue", 255, 255), Новый Структура("Color, Point"
				, Новый Структура("Alpha, Red", 100, 255), Новый Структура("X", 1)));
		
	Настройки.Borders =  Новый Структура("Color, Width", Новый Структура("Alpha", 150), 5);
	
	Ждать Компонента.DrawShapeАсинх("Rect", ЗаписатьЗначениеJSON(Настройки));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   

	//-------------------------------------------------------------------------
	//9. Круг - элипс
	Настройки.Rect = Новый Структура("X,Y,Width,Height", ПоследнийСтатус.Data.X + 250, ПоследнийСтатус.Data.Y, 100, 100);
	Настройки.Filling.Color = Новый Структура("Alpha, Red", 255, 255);  
	Настройки.Filling.LinearGradientColor.Color = Новый Структура("Alpha, Green", 100, 255);  
	Настройки.Filling.LinearGradientColor.Вставить("Mode", "LinearGradientModeVertical");
	Настройки.Удалить("Borders");
	
	Ждать Компонента.DrawShapeАсинх("ellipse", ЗаписатьЗначениеJSON(Настройки));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	//-------------------------------------------------------------------------
	//9. Область круга
	Настройки.Rect = Новый Структура("X,Y,Width,Height", ПоследнийСтатус.Data.X + 150, Настройки.Rect.Y, 100, 100);
	Настройки.Вставить("Angle", Новый Структура("Start, Sweep", 0, 330));     
	Настройки.Filling.Удалить("LinearGradientColor");
	Настройки.Filling.Color = Новый Структура("Alpha, Green", 255, 255);
	Настройки.Вставить("Borders",  Новый Структура("Color, Width", Новый Структура("Alpha", 255), 2));
	
	Ждать Компонента.DrawShapeАсинх("Pie", ЗаписатьЗначениеJSON(Настройки));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	//-------------------------------------------------------------------------
	//9. многоугольник
	X = ПоследнийСтатус.Data.X + ПоследнийСтатус.Data.Width + 1;
	Y = Настройки.Rect.Y;
	Настройки = Новый Структура("Filling", Новый Структура); 
	Настройки.Filling.Вставить("Color", Новый Структура("Alpha, Blue, Green", 255, 255, 255));  
	Точки = Новый Массив;    
	Точки.Добавить(Новый Структура("X, Y", X, Y));
	Точки.Добавить(Новый Структура("X, Y", X + 200, Y - 20));
	Точки.Добавить(Новый Структура("X, Y", X + 100, Y + 100));
	Точки.Добавить(Новый Структура("X, Y", X + 120, Y + 120));
	Точки.Добавить(Новый Структура("X, Y", X + 50, Y + 200));
	Настройки.Вставить("Borders",  Новый Структура("Color, Width", Новый Структура("Alpha, Red", 255, 155), 5));
	Настройки.Вставить("Points", Точки);

	Ждать Компонента.DrawShapeАсинх("Polygon", ЗаписатьЗначениеJSON(Настройки));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	
	//-------------------------------------------------------------------------
	//Вывели нашщи изменения на втарую картинку и уменьщели размер(вписали) чтобы влезла в форму орег размер 1080*1080 
	НастройкиСохранения = Новый Структура("Rect, Enter", Новый Структура("X,Y,Width,Height",0,0,700,700), Истина);
	Ожидания = Ждать Компонента.SaveAsАсинх(, ЗаписатьЗначениеJSON(НастройкиСохранения));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	КартинкаРезультат = ПоместитьВоВременноеХранилище(Новый Картинка(Ожидания.Значение), УникальныйИдентификатор);                     
	
	//Востановили кортику до оригинала
	Ждать Компонента.LoadImageАсинх(ДвоичныеДанныеОригинал);  

	//-------------------------------------------------------------------------
	//Сохарнили маленкое изображение
	НастройкиСохранения = Новый Структура("Format, Rect, Enter", "jpeg", Новый Структура("Width,Height",20,20), Истина);
	Ожидания = Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "mini.jpeg", ЗаписатьЗначениеJSON(НастройкиСохранения));            
	Ждать Компонента.LoadImageАсинх(ДвоичныеДанныеОригинал);  

	
	//Образаем при сохранение
	НастройкиСохранения = Новый Структура("Format, Rect, Enter", "png", Новый Структура("Width", 200), Ложь);
	Ожидания = Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "Width.png", ЗаписатьЗначениеJSON(НастройкиСохранения));
	Ждать Компонента.LoadImageАсинх(ДвоичныеДанныеОригинал);  

	//-------------------------------------------------------------------------
	//Сохарнили изображение в 8 битцет  описание  EncoderParameters смотреть в MSDN   
	//до 8 бит удалось понизить только в тиф.
	EncoderParameters = Новый Массив;
	Параметр = Новый Структура("Guid, Type, Values", "66087055-ad66-4c7c-9a18-38a2310b8337", 4, Новый Массив);
	Параметр.Values.Добавить(8);
	EncoderParameters.Добавить(Параметр);	
	НастройкиСохранения = Новый Структура("Format, Rect, Enter, EncoderParameters"
		, "tiff", Новый Структура("Width,Height", 200,200), Истина, EncoderParameters);
	Ожидания = Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "mini2.tiff", ЗаписатьЗначениеJSON(НастройкиСохранения));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	
	
	//Создаем битмап 200*200 для заголовка инфостарта
	Ждать Компонента.CreateImageАсинх(200, 200);     
	Настройки =  Новый Структура("Text, Filling, Rect", Новый Структура("Font, Alignment, Color, LinearGradientColor"
				, Новый Структура("Size, Name, Style", 50, "Segoe Script", "FontStyleBold"), "StringAlignmentCenter", СоздатьЦветGDI(WebЦвета.Желтый)
					,  Новый Структура("Color, Mode", СоздатьЦветGDI(WebЦвета.Зеленый), "LinearGradientModeVertical")) 
		, Новый Структура("Color, LinearGradientColor", СоздатьЦветGDI(WebЦвета.Зеленый), Новый Структура("Color, Mode", СоздатьЦветGDI(WebЦвета.Желтый),"LinearGradientModeVertical"))
		, Новый Структура("Width, Height", 200,200));
		
	Ждать Компонента.DrawStringАсинх("1C " + Символы.ПС +  "GDI+", ЗаписатьЗначениеJSON(Настройки));   
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента);   
	НастройкиСохранения = Новый Структура("Format","png");
	Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "gdic.png", ЗаписатьЗначениеJSON(НастройкиСохранения)); 
	
	
	
КонецПроцедуры

&НаКлиенте
Асинх Процедура Принскрин(Команда)          
	
	Компонента = Ждать СоздатьКомпоненту();
    //Получим размеры текущего окна.
	Ожидания = Ждать Компонента.GetWindowsSizeАсинх();
	Размеры = ПрочитатьЗначениеJSON(Ожидания.Значение);

	//Сделаем прискри текущего окна немного обрезав
	НастройкиСохранения = Новый Структура("ForegroundWindow, x, y, width, height ", Истина
		, 3, 80, Размеры.Foreground.width - 3 - 3, Размеры.Foreground.height -80 -20);
	Ожидания = Ждать Компонента.CreatePrtScАсинх(ЗаписатьЗначениеJSON(НастройкиСохранения));
	ПоследнийСтатус = Ждать ОбновитьСтатус(Компонента); 
	
	//Сохраним в jpeg и уменшим размер вписав скрин
	НастройкиСохранения = Новый Структура("Format, Enter, Rect", "jpeg", Истина, Новый Структура("Width, Height"
		, ПоследнийСтатус.Data.Width - 200, ПоследнийСтатус.Data.Height - 200));
	Ожидания = Ждать Компонента.SaveAsАсинх(ДиректорияКартинок + "pts.jpeg", ЗаписатьЗначениеJSON(НастройкиСохранения));               
	
КонецПроцедуры

&НаКлиенте
Функция СоздатьЦветGDI(Цвет1С = Неопределено, Прозрачность = 255)    
	
	Если Цвет1С = Неопределено Тогда 
		Возврат  Новый Структура("Alpha, Red, Green, Blue", Прозрачность, 255, 255, 255);
	КонецЕсли;	
	АбсЦв1С = Цвет1С.ПолучитьАбсолютный();
	Возврат  Новый Структура("Alpha, Red, Green, Blue", Прозрачность, АбсЦв1С.Красный, АбсЦв1С.Зеленый, АбсЦв1С.Синий);
	
КонецФункции	

&НаКлиенте
Асинх Функция ОбновитьСтатус(Компонента)   
	
	Статус = Ждать Компонента.GetStatusАсинх();                                                  
	ПоследнийСтатус = ПрочитатьЗначениеJSON(Статус.Значение);        
	Если ПоследнийСтатус.Code Тогда   
		//ПоследнийСтатус.Code <> 0  эта ошибка
		ВызватьИсключение  ПоследнийСтатус.Info + " >> " + ПоследнийСтатус.Error;
	КонецЕсли;	
	
	Возврат ПоследнийСтатус;      
	
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ДиректорияКартинок = "C:\GDI_1C\TestImage\";
КонецПроцедуры


 

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    56013    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64380    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    20324    29    6    

45

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    26460    mrXoxot    44    

131

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    13728    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18949    1243    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    13303    172    acces969    31    

127

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    8917    kalyaka    6    

34
Оставьте свое сообщение