Программное формирование картинки в 1С:Предприятие 8.3.9 (ПотокВПамяти / ЗаписьДанных)

Публикация № 1061803

Разработка - Универсальные функции

картинка bmp программно

51
В статье представлен код программного формирования картинки (двоичные данные) без всяких внешних компонент, без формирования строки Base64, используя лишь встроенные механизмы 1С предприятие 8.3.9 (объекты ПотокВПамяти и ЗаписьДанных). Сам по себе код формирования картинки не несёт ничего нового. Всё описано в википедии. Захотелось попробовать новые методы, но никак не доходитили руки. В приложении обработка практически с этим же кодом.

Приступим к делу.

Будем формировать картинку в два этапа:
1. Сначала подготовим данные картинки, т.н. RGB матрицу. Именно здесь мы рисуем нашу будущую картинку путём определения цвета каждого пикселя. Т.е., если нужно нарисовать что-то своё, то меняем код именно здесь. 
2. А потом по этим данным уже сформируем двоичные данные.
Листинг функций представлен ниже. Плюс небольшие замечания.

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

Итак, к делу:

Сначала вспомогательная функция формирования матрицы цветов пикселей. Собственно здесь мы описываем цвет каждого пикселя по его координатам.
Создаём двумерный массив высотой и шириной в пикселях с нашу картинку. Элементы массива - структура с RGB компонентами цвета. Не самый лучший вариант в плане производительности, но самый наглядный из тех, что я смог придумать.

&НаСервереБезКонтекста
Функция МатрицаЦветовRGB(Высота, Ширина)
	
	// Устанавливаем размеры матрицы по которой сформируется картинка
	ТекМатрицаЦветовRGB = Новый Массив(Высота, Ширина);
	
	Для Индекс1 = 1 По Высота Цикл
		Для Индекс2 = 1 По Ширина Цикл
			
			// Далее идёт установка цвета пикселя в зависимости от координат.
			// Именно этот код предполагается модифицировать
			#Область Определение_цвета_пикселя

			Если ((Cos(Индекс2/Ширина*5*3.14)/2+0.5)*0.6 + 0.4)*Высота > Индекс1 Тогда
				ТекКрасный 	= Цел(255*Индекс1/Высота);
				ТекЗеленый 	= 50;
				ТекСиний 	= 50;
			Иначе
				ТекКрасный = 255;
				ТекЗеленый = 255; 
				ТекСиний = 255; 
			КонецЕсли;			
					
			#КонецОбласти
			
			ТекМатрицаЦветовRGB[Индекс1-1][Индекс2-1] = Новый Цвет(ТекКрасный, ТекЗеленый, ТекСиний);
			
		КонецЦикла;
	КонецЦикла;	
	
	Возврат ТекМатрицаЦветовRGB
	
КонецФункции

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

&НаСервереБезКонтекста
Функция СоздатьКартинку(МатрицаЦветовRGB)
	
	Высота = МатрицаЦветовRGB.Количество();
	Ширина = МатрицаЦветовRGB[0].Количество();
	
	// Для простоты формирования возьемём 24 бита. По 8 бит на каждый канал. Альфаканал не используем. 
	ТекГлубинаЦвета = 3; // Измеряется в байтах. 	
	
	// Каждая строка должна содержать количество байтов кратное 4.
	БайтовДополнение = (4-ТекГлубинаЦвета*Ширина%4)%4; 
	
	РазмерФайла = ТекГлубинаЦвета*Ширина*Высота + Высота*БайтовДополнение;	
	
	///////////////////////////////////////////////////////////////////////////////
		
	ПотокТело = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(ПотокТело);
		
	//BITMAPFILEHEADER
	
	//bfType 
	ЗаписьДанных.ЗаписатьЦелое16(16973, ПорядокБайтов.BigEndian); // 0x424D big-endian = 0x4D42 little-endian. Признак формата. Всегда это значение.
	//bfSize
	ЗаписьДанных.ЗаписатьЦелое32(54 + РазмерФайла);
	//bfReserved1
	ЗаписьДанных.ЗаписатьЦелое16(0);	
	//bfReserved2
	ЗаписьДанных.ЗаписатьЦелое16(0);	
	//bfOffBits
	ЗаписьДанных.ЗаписатьЦелое32(54);
	
	//BITMAPINFOHEADER // версия 3
	// biSize
	ЗаписьДанных.ЗаписатьЦелое32(40); 
	// biWidth
	ЗаписьДанных.ЗаписатьЦелое32(Ширина);			// ширина изображения в пикселах 
	// biHeight
	ЗаписьДанных.ЗаписатьЦелое32(Высота);			// высота изображения в пикселах
	// biPlanes
	ЗаписьДанных.ЗаписатьЦелое16(1);				// содержит единицу
	// biBitCount
	ЗаписьДанных.ЗаписатьЦелое16(ТекГлубинаЦвета*8);	// количество бит на пиксел 
	// biCompression
	ЗаписьДанных.ЗаписатьЦелое32(0);				// тип сжатия 
	// biSizeImage
	ЗаписьДанных.ЗаписатьЦелое32(РазмерФайла);		// размер изображения в байтах
	// biXPelsPerMeter
	ЗаписьДанных.ЗаписатьЦелое32(0);				// горизонтальное разрешение в пикселах на метр 
	// biYPelsPerMeter
	ЗаписьДанных.ЗаписатьЦелое32(0); 				// вертикальное разрешение в пикселах на метр 
	// biClrUsed
	ЗаписьДанных.ЗаписатьЦелое32(0);				//  количество используемых цветовых индексов в палитре 
	// biClrImportant
	ЗаписьДанных.ЗаписатьЦелое32(0);				// количество индексов
	
	///////////////////////////////////////////////////////////////////////////////
		
	Для Выс = 1 По Высота Цикл	// строки снизу вверх		
			
		Для Шир = 1 По Ширина Цикл
			
			ЦветаПикселя = МатрицаЦветовRGB[Выс-1][Шир-1];
			ЗаписьДанных.ЗаписатьБайт(ЦветаПикселя.Синий);
			ЗаписьДанных.ЗаписатьБайт(ЦветаПикселя.Зеленый);
			ЗаписьДанных.ЗаписатьБайт(ЦветаПикселя.Красный);
						
		КонецЦикла;
		
		// Забиваем нулями остаток строки. Так как размер строки должен быть кратен 4 байтам.
		Для Доп = 1 По БайтовДополнение Цикл		
			ЗаписьДанных.ЗаписатьБайт(0); 
		КонецЦикла;
		
	КонецЦикла;
		
	ЗаписьДанных.Закрыть();
	
	ДвоичныеДанныеТело = ПотокТело.ЗакрытьИПолучитьДвоичныеДанные();
	
	Возврат ДвоичныеДанныеТело;
		
КонецФункции

 

Теперь вернёмся к вопросу об использовании. Почему-то в 1С у меня не хотели отображаться bmp-файлы. Даже, если я их создавал в паинте. Получилось обойти проблему с помощью встроенного метода Преобразовать, преобразовывая картинки в формат png:

ТекМатрицаЦветовRGB = МатрицаЦветовRGB(ВысотаКартинок, 200);
ТекКартинкаДвоичныеДанные = СоздатьКартинку(ТекМатрицаЦветовRGB);

ТекКартинка = Новый Картинка(ТекКартинкаДвоичныеДанные);
ТекКартинкаПНГ = ТекКартинка.Преобразовать(ФорматКартинки.PNG);

Здесь же на инфостарте был найден способ отображения картинок в табичной части / динамическом списке используя навигационные ссылки. Статью к сожалению, найти не могу. В кратце:
Создаём справочник КартинкиДляТаблицы с двумя реквизитами:
1. ДанныеКартинки - Тип: ХранилищеЗначения
2. АдресКартинки - Тип: Строка(0)

Формируем картинку, и записываем в элемент справочника:

 

// Создаём картинку
ТекКартинкаДвоичныеДанные = СоздатьКартинку(ТекМатрицаЦветовRGB);
ТекКартинка = Новый Картинка(ТекКартинкаДвоичныеДанные);

// Преобразуем в PNG
ТекКартинкаПНГ = ТекКартинка.Преобразовать(ФорматКартинки.PNG);	

// Создаём элемент справочника
НовЭлемент = Справочники.КартинкиДляТаблицы.СоздатьЭлемент();

// Прописываем наименование, если нужно
НовЭлемент.Наименование = "График1";

// Присваиваем данные картинки. Формат PNG уже сжат, поэтому тратить ресурсы на излишнее сжатие не будем.
НовЭлемент.ДанныеКартинки = Новый ХранилищеЗначения(ТекКартинкаПНГ, Новый СжатиеДанных(0));

// Записываем, так как для ПолучитьНавигационнуюСсылку нужна ссылка.
НовЭлемент.Записать();

// Получаем навигационную ссылку на реквзит "ДанныеКартинки" у данного элемента справочника
// и записываем полученное значение
НовЭлемент.АдресКартинки = ПолучитьНавигационнуюСсылку(НовЭлемент.Ссылка, "ДанныеКартинки");

// После чего сохраняем элемент справочника
НовЭлемент.Записать(); 

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

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	КартинкиДляТаблицы.Ссылка КАК Ссылка,
|	КартинкиДляТаблицы.АдресКартинки КАК АдресКартинки
|ИЗ
|	Справочник.КартинкиДляТаблицы КАК КартинкиДляТаблицы";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	НовСтрока = Таблица.Добавить();
	НовСтрока.Картинка = Выборка.АдресКартинки;
	НовСтрока.Справочник = Выборка.Ссылка;
КонецЦикла;

Вуаля:

 

В файлах:
1. обработка с этим кодом
2. выгрузка конфигурации с этим справочником картинок и обработкой.

51

Скачать файлы

Наименование Файл Версия Размер
Формирование картинки.epf
.epf 9,37Kb
17.05.19
3
.epf 9,37Kb 3 Скачать
СправочникДляКартинок_ФормированиеКартинок.cf
.cf 19,16Kb
17.05.19
2
.cf 19,16Kb 2 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Serj1C 477 17.05.19 11:39 Сейчас в теме
Круто!
Тоже с 2013 года хочу свою обработку адаптировать под новые возможности 8.3
https://infostart.ru/public/77713/

Как долго генерируется картинка?
2. yku 329 17.05.19 12:56 Сейчас в теме
(1) Пример из статьи: 25*200 пикселей. Рисунок тоже из статьи - герерируется за 0.17-0.20 сек в среднем.

Я твою кстати скачивал. И возможно часть кода из неё почерпнул.
Тоже хочу сделать команды для рисования.
5. KAV2 86 17.05.19 18:02 Сейчас в теме
(2) И создать обертку над ними в JS Canvas )).
3. Darklight 20 17.05.19 15:25 Сейчас в теме
Волны в примере бегут? Если нет динамики - то это не так интересно
6. yku 329 17.05.19 18:48 Сейчас в теме
(3) конечно бегут. Это же bmp. И статья так и называется: "создаём анимацию" нет.
tsmult; CyberCerber; Itilive.ru; +3 Ответить
4. Поручик 4331 17.05.19 15:35 Сейчас в теме
7. Жолтокнижниг 249 09.06.19 23:54 Сейчас в теме
Есть еще вариант формирования картинок - SVG, поддержка с 8.3.?

Увы 1с не умеет SVG анимацию.
Оставьте свое сообщение

См. также

Простой способ загрузить файл Excel на тонком клиенте. 15

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Загрузка и выгрузка в Excel Универсальные функции

Самый простой способ загрузить файл Excel на тонком клиенте - это скопировать лист Excel в "табличный документ" на форме обработки и обрабатывать уже поля "табличного документа".

1 стартмани

30.10.2019    2114    1    John_d    16       

Картинка вместо кнопки без html 11

Инструменты и обработки Программист Бизнес-аналитик Руководитель проекта Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции

Вариант замены стандартных кнопок на форме для тех, кого не устраивают кнопки 1С и нет особых возможностей делать все с использованием html. Тестировал работу на платформах 8.3.10, 8.3.13, 8.3.14

1 стартмани

23.10.2019    1585    3    zatoichi    3       

Универсальная подсистема ДМ 6

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

ДМ — дополнительные модули Это не альтернатива или дополнение БСП. Данная подсистема призвана быстро получить множество нужных функций в любой конфигурации. Для использования подсистемы изменения в конфигурацию вносить не надо. К сожалению поддержка обычных форм прекращена и поэтому данная разработка предназначена только для УФ. Разработка ведётся с 2009 года, но именно этот релиз был подготовлен на платформе 8.3.15.1565

1 стартмани

22.10.2019    1046    2    strange2007    10       

Вывод QR-кода типовыми средствами. 8

Инструменты и обработки no Внешняя обработка (ert,epf) v8 КА1 УТ10 УПП1 Windows Абонемент ($m) Универсальные печатные формы Сканер штрих-кода Универсальные функции

Вывод QR-кода типовыми средствами. На данный момент очень часто нужно вывести в печатную форму QR-код. Показываю как на примере типового кода из УТ11 это сделать. Можно использовать в любых конфигурациях с обычными формами.

1 стартмани

21.10.2019    1457    1    Емельянов Алексей    13       

Генерация QR кода для любых конфигураций 1С (обычные и управляемые формы) 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Универсальные функции

Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет "КомпонентаПечатиQRКода". Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).

1 стартмани

11.10.2019    1386    7    dm1try    0       

Универсальное удаление движений регистров накопления по всем непроведенным документам 10

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции Чистка базы

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

1 стартмани

27.09.2019    2178    2    John_d    14       

1С REST API клиент. Обмен из 1С с сайтом/магазином WordPress/WooCommerce с помощью REST API 11

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Оптовая торговля Розничная торговля Абонемент ($m) Универсальные обработки WEB Универсальные функции

Обмен 1С с сайтом на WordPress и магазином Woocommerce. Внешняя обработка сделана как REST API клиент сайта WordPress, позволяет разработчику публиковать/изменять/удалять/просматривать посты/страницы/товары/фотографии (в связке с товаром/страницей) на сайте/магазине WordPress/Woocommerce. Обработки сделаны с использованием обычных форм, демо-формы использования в комплекте.

10 стартмани

29.07.2019    2485    4    osivv    14       

Экспортные процедуры и функции общих модулей БП 3.0, ЗУП 3.1, УТ 11 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

Таблицы экспортных процедур и функций общих модулей конфигураций БП КОРП 3.0, ЗУП КОРП 3.1, УТ 11 + обработка по формированию такой таблицы из любой конфигурации.

14.06.2019    4172    329    SanchoD    29       

Работа с графической схемой в объектной модели DOM 42

Статья Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) Универсальные функции

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    4214    5    botokash    19       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 548

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    28884    267    bonv    111       

Альтернатива внешним печатным формам. ЗУП 3.1 23

Статья Программист Расширение (cfe) v8 v8::СПР ЗУП3.x Зарплата Абонемент ($m) Печатные формы документов Универсальные функции Практика программирования Разработка

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    6823    10    Mogilnikova    2       

Создание и запуск скрипта для ввода текста на базе AutoHotkey 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

28.01.2019    2649    1    Wezoowy    1       

Использование подсистемы БСП "Заполнение объектов" 135

Статья Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    14202    8    ids79    22       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 13

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    12658    10    stvorl    0       

Пропорциональное распределение в запросе 35

Статья Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

28.06.2018    8452    1    invertex    7       

Проверка таблицы на дублирование строк (ТаблицаЗначений, ТабличнаяЧасть) и получение массива таких строк 9

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Функция для проверки дублирования строк в ТаблицеЗначений или ТабличнойЧасти. Также, если необходимо, возвращает массив задублированных строк (можно обработать).

1 стартмани

05.02.2018    8275    6    uri1978    27       

Свертка таблицы значений. С блэкджеком и всем остальным 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

22.01.2018    7877    2    dusha0020    10       

Определение MIME-типа файла 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшая, но полезная функция для определения MIME-типа файла по его расширению. Сэкономит время разработчикам.

1 стартмани

12.01.2018    7730    3    o.nikolaev    4       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    23476    21    agent00mouse    0       

Запуск приложений на клиенте из RDP-сессии 8

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

30.10.2017    8750    5    GusevNA    4       

Простые подсистемы: Библиотека подсистем 12

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика Универсальные обработки Универсальные функции

Библиотека простых подсистем и наработок, облегчающих жизнь разработчика и внедренца, предоставляя относительно готовые решения. Логическое развитие линейки публикаций "Простые подсистемы". Базируются на БСП. Вошли часть ранее опубликованных подсистем и новые. Всего 5 штук (будет больше).

1 стартмани

26.10.2017    8396    7    pbabincev    1       

Размеры управляемой формы 101

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    18856    51    json    8       

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения 86

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Шаблон внешней обработки призван упростить программисту процесс реализации внешнего регламентного задания. Пригоден к использованию во всех конфигурациях на управляемых формах, в которых присутствует подсистема "Дополнительные отчеты и обработки" из состава библиотеки стандартных подсистем (БСП) версии 2.1 и выше.

1 стартмани

28.05.2017    18384    144    Bassgood    10       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 177

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    39789    168    DarkAn    86       

Универсальная процедура по загрузке файла из интернета 10

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования WEB Универсальные функции

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

1 стартмани

17.05.2017    12152    9    json    2       

Правильный вопрос 16

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Заметили, что пользователи бездумно кликают по первой попавшейся кнопке, не удосужившись прочитать текст предупреждения или вопроса? Данная функция призвана решить данную проблему!

1 стартмани

15.05.2017    9517    SvoyakMartin    15       

Web сервис 1С 24

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Универсальные функции

Пример реализации простого web сервиса. Особенность: не используются XDTO пакеты, определяемые в дереве конфигураций; возможность передачи любых структур данных: списки значений, таблицы значений, табличные документы и т.п.

1 стартмани

21.03.2017    23316    74    hiduk    33       

Набор математических функций 20

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшой набор математических функций для работы с массивами чисел.

1 стартмани

12.01.2017    11340    2    SvoyakMartin    17       

Сравнение строк. Наибольшая общая последовательность 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Заданы две строки Строка1 и Строка2. Требуется найти наибольшую общую подпоследовательность (НОП) этих строк.

1 стартмани

14.11.2016    7697    2    Alex_YAM    4       

Набор процедур для парсера консоли запросов 7

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Данный набор функций и процедур необходимо вставить в Консоль запросов для управляемого приложения 1С 8.2 - 8.3 (Такси) http://infostart.ru/public/64522/, и вы получите возможность разбирать сложные запросы на вложенные, вносить необходимые правки и собирать измененные подзапросы в запрос. Данный модуль не содержит консоли!!! Ее придется отдельно скачать по ссылке http://infostart.ru/public/64522/

1 стартмани

09.11.2016    8148    3    blockcode    5       

Организация выбора месяца из списка (универсально + НЕ модально ) 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции

Пришлось столкнуться с такой проблемой, как выбор месяца из ниспадающего списка (с элементами вида "НазваниеМесяца Год") с возможностью изменения года. Хочу предложить универсальный вариант реализации данного механизма на основе механизма http://infostart.ru/public/167549/ ЗЫ: основные отличия: - вместо "НачалоВыбораИзСписка" работаем с "ОбработкаВыбора" без модальности - Обратное преобразование в дату не только на русском - Универсальность процедур. Одна функция выбирается в нескольких полях.

1 стартмани

09.11.2016    11116    11    igorkosmos    4       

Отладка/доработка модуля менеджера "на лету" 90

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

23.10.2016    23867    19    json    22       

Автоматическое разбиение строки на подстроки по ширине колонки / ячейки или по количеству символов 12

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки Универсальные функции

Длинный адрес контрагента или нестандартная фамилия не входит в одну строку, а РазмещениеТекста = Переносить по какой-либо причине не устраивает? Что можно сделать? Вот пара полезных функций для решения данного вопроса с примерами применения.

1 стартмани

21.10.2016    12293    2    SvoyakMartin    3       

Сверка таблиц при разработке через тестирование 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

09.10.2016    12517    11    json    1       

Функция преобразования промежутка времени в строку 7

Статья Программист Нет файла v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Функция предназначена для преобразования промежутка времени в строку с разбивкой по годам, дням, часам, минутам, секундам.

1 стартмани

23.09.2016    8625    5    vovant    1       

Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы 50

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Примеры взаимных преобразований Таблицы значения в Дерево значений или Табличный документ с использованием универсальных функций и макетов Системы компоновки данных. Примеры представлены в форме удобной для копирования в разработку.

1 стартмани

13.09.2016    29450    47    pavley2002    11       

Алгоритм по переносу вложенных запросов в пакеты 15

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Запросы неудобно отлаживать, если в них есть вложенные запросы. Данный алгоритм помогает отредактировать текст запроса таким образом, чтобы все вложенные запросы перенеслись в пакеты.

1 стартмани

26.08.2016    8415    19    ostapchenko.alexandr    20       

7 правил RFC 4180 29

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Что такое CSV? Описание правил формата RFC4180 и пара функций чтения/записи CSV текста в ТЗ согласно этим рекомендациям (с экранированием и _поддержкой многострочных полей_).

1 стартмани

22.08.2016    13333    16    kuzyara    2       

Запросы &НаКлиенте для Управляемого приложения 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Разбитый между клиентом и сервером код размывает и усложняет логику прикладного решения. Для запроса из базы данных одной записи предлагаю &НаКлиенте использовать универсальную процедуру "ЗаполнитьИзЗапроса".

1 стартмани

08.05.2016    7461    2    sereginseregin    14       

Консоль и функция рекурсивного запроса 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Тестирование и исправление Универсальные функции

Консоль предназначена для отладки и просмотра результатов выполнения РЕКУРСИВНОГО ЗАПРОСА в режиме 1С:Предприятие. В консоли реализована универсальная функция для выполнения рекурсивных запросов.

1 стартмани

10.02.2016    11132    5    sereginseregin    1       

Генерация QR-кода (управляемая форма, обычное и управляемое приложение) 59

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Универсальные функции Универсальные обработки

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    37154    155    tunesoft    24       

Динамический отбор динамического списка. Управляемая форма 1С: 8.3 11

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

25.01.2016    17420    23    1prog@bk.ru    3       

Расчет интегралов 8

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Универсальные функции

Обработка для расчета определенного интеграла методом прямоугольников

1 стартмани

27.11.2015    8684    sojuznik    12       

Автоматическая подстановка уничтожений временных таблиц в текст запроса 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    15838    SeiOkami    3       

Механизм контроля заполнения реквизитов 32

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Механизм позволяет в пользовательском режиме настраивать контролируемые реквизиты, тем самым помогает справиться с невнимательностью пользователей. Не требует снятия с поддержки типовых объектов, внося минимум изменений в конфигурацию. Не привязан ни к конкретным конфигурациям, ни к БСП.

1 стартмани

25.10.2015    10739    28    yur4ik9408    10       

Регистрация запуска обработок во внешнем источнике данных 16

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Универсальные функции

На нашем предприятии эксплуатируется три информационные базы, в которые по просьбам трудящихся постоянно создаются и добавляются новые внешние отчеты и обработки. Некоторые из них устаревают сразу же после их первого использования, другие чуть позже, какие-то используются постоянно. Давно хотел получить инструмент, позволяющий отслеживать статистику использования внешних отчетов и обработок.

1 стартмани

23.10.2015    8719    4    vsuh    2       

Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы) 31

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции Практика программирования

В данной статье мы рассмотрим, как просто и быстро в любую конфигурацию на базе управляемых форм добавить функционал прикрепления внешних файлов к документам и справочникам. Я начну описание с нуля, т.е. с создания пустой конфигурации. Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации. Если Вам не хочется разбираться с ниже написанной инструкцией, можете скачать файл*.doc с описанием и скриншотами, либо уже саму готовую конфигурацию.

1 стартмани

15.10.2015    65152    122    omenfarsh    27