Параллельная обработка очереди сообщений

Публикация № 1459203 15.06.21

Разработка - Математика и алгоритмы

параллельная многопоточная последовательность обмен данными очереди сообщений

Описание алгоритма обработки очереди последовательных сообщений регистрации изменений записей регистра сведений. Алгоритм может быть применим к любым объектам метаданных. Алгоритм основан на обработке объектов по их ключам.

Альтернативная реализация РИБ на RabbitMQ хорошо показала себя на практике. Более того она получила своё развитие. Тем не менее узким местом стала загрузка данных на стороне 1С. Средняя производительность составила приблизительно 1000 сообщений в минуту в один поток (фоновое задание) при среднем размере сообщения равным 3 Кб. В конечном итоге встал вопрос оптимизации загрузки, так как количество входящих сообщений по некоторым типам сообщений (объектам метаданных) составляло в пиках нагрузки несколько десятков, а иногда сотен тысяч сообщений за достаточно короткий промежуток времени.

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

Алгоритм рассмотрен на примере параллельной обработки регистра сведений "КурсыВалют".

Тем не менее, всё ниже сказанное в равной степени может быть применимо к ссылочным объектам метаданных и регистрам накопления, учитывая их специфические особенности.

 
1. Описание проблемы.
 
2. Алгоритм решения. 
 
3. Реализация алгоритма.
 
4. Применимость алгоритма.
 
5. Дополнительный алгоритм "срез последних".
 
6. Примерный код 1С. 

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 131 15.06.21 08:44 Сейчас в теме
регистрация изменений по всем полным ключам, удаляемых записей. Интересно отметить, что именно так работает регистрация изменений в таблицах изменений планов обмена 1С - там всегда региструются только полные ключи
Наверное, стоит отметить, что регистрируются "полные ключи" гранул регистрации изменений (т.е. все измерения, входящие в основной отбор), а не "полные ключи" записей регистра (которые могут состоять из большего числа измерений, чем кол-во входящих в основной отбор)
dabu-dabu; zhichkin; tormozit; +3 Ответить
3. zhichkin 1303 15.06.21 10:47 Сейчас в теме
(1) Согласен. "Гранула" - будет более точным подходом, тем более, что её состав может определяться не только свойством измерения "Основной отбор", но и бизнес-логикой приложения. Спасибо за уточнение.
2. Cyberhawk 131 15.06.21 08:56 Сейчас в теме
Неудобством алгоритма является то, что для каждого регистра сведений, для которого требуется выполнить оптимизацию параллельной обработки очереди сообщений, необходимо вручную создавать дополнительные специализированные регистры сведений
Предпринимались ли попытки построить для независимых регистров единый регистр-очередь для регистрации? В котором количество ресурсов, описывающих основной отбор, было бы равно максимальному числу измерений, входящих в основной отбор регистрируемых к обмену регистров сведений (Измерение1, Измерение2, Измерение3 и т.д.)?
zhichkin; +1 Ответить
4. zhichkin 1303 15.06.21 10:55 Сейчас в теме
(2) Нет, но мысль такая была. Стоит отметить вот эту статью - в ней используется ключ строкового типа длиной 200 символов, который получается путём "сложения" значений измерений - по сути хэш измерений, входящих в состав ключа.
5. DarkAn 1046 24.06.21 13:45 Сейчас в теме
(0) Ваша, задача без проблем решается с помощью Менеджер потоков 2.1, за счет "расчета ресурсов" и построения графа зависимостей, где номер сообщения является этим самым "ресурсом" и все последующие сообщения будут выстраиваться строго за ним и абсолютно не как не мешая параллельно обрабатывать другие сообщения с другим ключом.
(2) При этом не надо создавать промежуточные таблицы (справочники / регистры) на уровне метаданных. Сам менеджер состоит только из общих модулей - этого достаточно!!! При этом проблем с размером графа нет. В памяти могут строиться графы неограниченного размера, но если с памятью проблемы, в параметрах можно указать ограничение.
6. zhichkin 1303 24.06.21 16:17 Сейчас в теме
(5) Добрый день! Спасибо за комментарий!

Возник вопрос по использованию Вашей разработки.
Посоветуйте, пожалуйста, как её использовать в моём сценарии.

Имеем регистр сведений (очередь сообщений одного типа):
- НомерСообщения (число)
- ТелоСообщения (строка в формате JSON)

Ключи объектов лежат в поле ТелоСообщения, то есть предварительно нужно их "достать" из JSON'а, чтобы использовать для построения графа зависимостей. Требуется обработать 10 000 сообщений (записей регистра сведений) за один запуск регламентного задания. При этом ТелоСообщения может иметь размер от 2-3 Кб до 2-3 Мб. Заранее размер сообщений неизвестен.

Как будет правильно решить такую задачу при помощи Вашей разработки ?
7. DarkAn 1046 25.06.21 14:08 Сейчас в теме
(6)Добрый день!
Архитектура решения, следующая:
1) Запуск
• На клиенте вызывается (через метод) фоновое задание менеджера с передачей в него параметров;
• далее менеджер стартует фоновые задания (столько сколько указано было в параметрах, по умолчанию 10) обработки данных.
2) Следом на клиенте запускается цикл обработки сообщений – в вашем случае перебор данных из регистра сведений. Каждое сообщение (НомерСообщения и ТелоСообщения) постепенно скармливаются в менеджер, через метод «ОбработатьОбъект».
3) Далее менеджер в первую очередь оправляет в потоки данные для расчета ресурса – это определяется использованным методом «ОбработатьОбъект». Отправляет в те же самые фоновые задания запущенные для обработки, так что и расчет тоже проходит в многопоточном режиме (по умолчанию коэффициент определения сколько потоков выделено под расчет = 0,2 * на количество потоков для обработки, но не меньше 1 - это позволяет даже для длительных обработках иметь «коридор» - свободные потоки для расчета ресурсов). Как только все объекты будут рассчитаны или граф достигнет лимита (по умолчанию лимита нет) – потоки выделенные для расчета так же переходят в обработку и не простаивают.
4) После того как произошел расчет ресурса, менеджер по результатам строит граф зависимости. Результатом расчет ресурса может быть не только одно значение. На самом деле результатом является массив из массивов значений. Где массив верхнего уровня - это массив ресурсОВ, в вложенный массив это массив значений ресурсА. Что является ресурсом вы как разработчик определяете сами.
5) Как строится граф зависимости. Менеджер перебирает все ресурсы, полученные из расчета объекта. Если находит что в графе уже есть объект имеющий точно такой же ресурс, то текущий объект ставится в зависимость то объекта в графе. Далее берется следующий ресурс этого же объекта, и процедура повторяется, в итоге один объект может быть зависим от множества других объектов в графе и пока не будут обработаны все вышестоящие объекты графа текущий объект не будет передан в обработку потоками.
6) Далее менеджер выбирает из графа «свободные» объекты не зависящие от других и вот уже эти объекты менеджер передает в потоки на обработку.
В упрощенном виде это реализовано так.
Если я правильно понял Вашу архитектуру регистра, но НомерСообщения – это уникальный номер сообщения, и он не повторяется, а в ТелоСообщения – лежит как ключ, так и данные.
Для уменьшения нагрузки для работы менеджера (для передачи данных между ФЗ менеджер делает запись в БД и перегонять полное тело сообщения не выгодно), я бы сделал так:
В регистр добавил бы ресурс «Ключ» - перед записью «ТелаСообщения», я бы извлекал «Ключ» из «Тела» и складывал бы рядом в этом же регистре. Тогда в менеджер я бы передавал только «НомерСообщения» и его «Ключ». «Ключ» определял бы как результат расчета ресурсов (все сообщения с таким ключом становятся зависимыми и обрабатываются «последовательно»). А уже в ФЗ обработки я бы по «НомеруСообщения» вычитывал бы полное тело и обрабатывал его как требуется.
zhichkin; +1 Ответить
10. zhichkin 1303 26.06.21 14:27 Сейчас в теме
(7) Спасибо за подробные объяснения!
В регистр добавил бы ресурс «Ключ» - перед записью «ТелаСообщения», я бы извлекал «Ключ» из «Тела» и складывал бы рядом в этом же регистре.

Интересно чем это отличается от того, о чём я писал в своей публикации ? Мне кажется, что концептуально ничем.

Ваш алгоритм построения графа зависимостей основан на использовании объекта платформы 1С "Соответствие". Вам не кажется, что Ваш алгоритм аналогичен использованию оператора GROUP BY (СГРУППИРОВАТЬ ПО) СУБД, использование которого я тоже описываю в статье ? Разница есть конецно же - она в агрегирующей функции. Например SQL Server имеет аналогичную функцию STRING_AGG, а PostgreSQL - ARRAY_AGG. Так как язык запросов 1С не поддерживает эти функции, мне пришлось делать ЛЕВОЕ СОЕДИНЕНИЕ в запросе. Другими словами я использовал встроенные алгоритмы СУБД для решения задачи вместо того, чтобы реализовывать их средствами 1С.

Учитывая то, что Вы же сами и предлагаете добавить ресурс "Ключ" (см. цитату выше), Ваши первоначальные выводы относительно применимости Вашей разработки к решаемой задаче:
Ваша, задача без проблем решается с помощью "Менеджер потоков"

и
При этом не надо создавать промежуточные таблицы

выглядят, на мой взгляд, несколько поспешными.

В связи с этим у меня вопрос: как Вы понимаете термин "без проблем" ?
11. DarkAn 1046 27.06.21 14:16 Сейчас в теме
(10)"ключ" я предложил сделать только для того чтобы не гонять тело сообщения между ФЗ, можно конечно же без этого - это лишь кусок оптимизации. Прошу прощения за ошибки пишу с телефона
8. DarkAn 1046 25.06.21 14:15 Сейчас в теме
(6) На скринах я выложил построенный граф и алгоритм по которому программа его строила, ну и на всякий случай руководство тоже прикрепил, описание и эти же картинки приведены в руководстве на 43-44 стр.

Согласитесь, что описать столь сложную взаимосвязь объектов даже простым языком сложно, не говоря уже о программной линейной обработке, а алгоритм расчета ресурсов как видите весьма простой.
Прикрепленные файлы:
Руководство.pdf
9. DarkAn 1046 25.06.21 14:34 Сейчас в теме
(6) я Вам даже скажу так: если для обработки ТелаСообщения у Вас есть экспортная процедура, куда вы просто скидываете это тело, а дальше "оно само" обрабатывается, то менеджер потоков можно адаптировать под вашу задачу очень быстро - за 1-2 часа думаю можно легко уложиться. Изучите демо обработка в частности Вам будет интересна мпОбработатьОбъект

По большому счету весь код который надо написать написан ниже, а все остальное делает Менеджер :)

Вот основной код из обработки:
//*****************************************************************
&НаСервере
Процедура ВыполнитьВПотоках()
	ПараметрыМП = мпОсновнаяПрограммаВызовСервера.ПолучитьПараметрыИнициализацииМенеджераПотоков(
										"ОбработатьОбъект", 
										"мпСобытияРазработчикаОбработатьОбъект");
	ПараметрыМП.Граф.УчитыватьОбъектыБезРесурсов = ОбработатьОбъектыБезРесурса;
	ПараметрыМП.Общие.КоличествоПотоков = КоличествоПотоков;
	
	ПараметрыДляОбъекта = Новый Структура;
	ПараметрыДляОбъекта.Вставить("Алгоритм", Алгоритм);
	
	мпОсновнаяПрограммаВызовСервера.ИнициализироватьМенеджерПотоков(ПараметрыМП);
	Для Сч = 1 По РазмерКоллекции Цикл
		мпОсновнаяПрограммаВызовСервера.ОбработатьОбъект(ПараметрыМП, Сч, ПараметрыДляОбъекта);
	КонецЦикла;
	
	мпОсновнаяПрограммаВызовСервера.ДождатьсяОстановкиМенеджераПотоков(ПараметрыМП);	
КонецПроцедуры
Показать


А Вот модуль обработчиков:
#Область СлужебныйПрограммныйИнтерфейс

//*****************************************************************
Функция ОбработатьСобытиеРазработчика(пПараметрыСобытия) Экспорт
	ИмяСобытия      = пПараметрыСобытия.ИмяСобытия;
	Параметры       = пПараметрыСобытия.Параметры;
	
	ОтветСобытия = Неопределено;
	
	Если ИмяСобытия = "ПередЗапускомМенеджераПотоков" Тогда			//Основная программа
	ИначеЕсли ИмяСобытия = "ПриЗапускеМенеджераПотоков" Тогда		//ФЗ Менеджера потоков
	ИначеЕсли ИмяСобытия = "ПередЗапускомПотока" Тогда				//ФЗ Менеджера потоков
	ИначеЕсли ИмяСобытия = "ПриЗапускеПотока" Тогда   				//ФЗ Потока
	ИначеЕсли ИмяСобытия = "ПриРасчетеРесурсов" Тогда				//ФЗ Потока
		ОтветСобытия = ПриРасчетеРесурсов(пПараметрыСобытия);
	ИначеЕсли ИмяСобытия = "ПриОбработкеПотоком" Тогда				//ФЗ Потока
		ОтветСобытия = ПриОбработкеПотоком(пПараметрыСобытия);
	ИначеЕсли ИмяСобытия = "ПриОбработкеОшибки" Тогда				//Основная программа
	ИначеЕсли ИмяСобытия = "ПриОбработкеПропуска" Тогда				//Основная программа
		ПриОбработкеПропуска(пПараметрыСобытия);
	ИначеЕсли ИмяСобытия = "ПриОбработкеРезультата" Тогда			//Основная программа
		ПриОбработкеРезультата(пПараметрыСобытия);
	ИначеЕсли ИмяСобытия = "ПриПроизвольнойОбработкеГрафа" Тогда	//ФЗ Менеджера потоков
	ИначеЕсли ИмяСобытия = "ПередЗавершениемМенеджераПотоков" Тогда	//ФЗ Менеджера потоков
	ИначеЕсли ИмяСобытия = "ПриСохраненииГрафа" Тогда				//Основная программа
	ИначеЕсли ИмяСобытия = "ПриСборкеФрагментовКоллекции" Тогда		//Основная программа
	ИначеЕсли ИмяСобытия = "ПослеЗавершенияМенеджераПотоков" Тогда	//Основная программа
	КонецЕсли;
	
	Возврат ОтветСобытия;
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область События_ФЗ_Потока

//*****************************************************************
Функция ПриОбработкеПотоком(пПараметрыСобытия)
	ОбрабатываемыйОбъект = пПараметрыСобытия.Данные.ОбрабатываемыйОбъект;

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрШаблон(НСтр("ru='ОБРАБОТАН объект: %1 (сообщение из потока)'"), ОбрабатываемыйОбъект);
	Сообщение.Сообщить(); 
	
	Возврат НСтр("ru='Обработано'");
КонецФункции

//*****************************************************************
Функция ПриРасчетеРесурсов(пПараметрыСобытия)
	МассивРесурсов = Новый Массив;
	
	ОбрабатываемыйОбъект = пПараметрыСобытия.Данные.ОбрабатываемыйОбъект;
	ПараметрыДляОбъекта  = пПараметрыСобытия.Данные.ПараметрыДляОбъекта;
	
	Алгоритм = ПараметрыДляОбъекта.Алгоритм;
	Если Алгоритм = "СвязьПоДелителям4_9" Тогда
		Для Сч = 4 По 9 Цикл
			Если ОбрабатываемыйОбъект % Сч = 0 Тогда
				МассивРесурса = Новый Массив;
				МассивРесурса.Добавить(Сч);
				МассивРесурсов.Добавить(МассивРесурса);
			КонецЕсли;
		КонецЦикла;
		
	ИначеЕсли Алгоритм = "СвязьПоСуммеДелителей2_9" Тогда
		СуммаДелителей = 0;
		Для Сч = 2 По 9 Цикл
			Если ОбрабатываемыйОбъект % Сч = 0 Тогда
				СуммаДелителей = СуммаДелителей + Сч;
			КонецЕсли;
		КонецЦикла; 
		
		Если СуммаДелителей > 0 Тогда
			МассивРесурса = Новый Массив;
			МассивРесурса.Добавить(СуммаДелителей);
			МассивРесурсов.Добавить(МассивРесурса);
		КонецЕсли;	
	КонецЕсли;
	
	Возврат МассивРесурсов;
КонецФункции

#КонецОбласти

#Область События_ОсновнойПрограммы

//*****************************************************************
Процедура ПриОбработкеПропуска(пПараметрыСобытия)
	Данные = пПараметрыСобытия.Данные;
	
	Статус 				 = Данные.Статус;
	ОбрабатываемыйОбъект = Данные.ОбрабатываемыйОбъект;
	
	СтрокаДляПользователя = СтрШаблон(НСтр("ru='Статус обработки: %1; Объект: %2'"), Статус, ОбрабатываемыйОбъект);
	
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрокаДляПользователя;
	Сообщение.Сообщить();
КонецПроцедуры

//*****************************************************************
Процедура ПриОбработкеРезультата(пПараметрыСобытия)
	Данные = пПараметрыСобытия.Данные;
	
	Статус 				 = Данные.Статус;
	ОбрабатываемыйОбъект = Данные.ОбрабатываемыйОбъект;
	РезультатОбработки   = Данные.РезультатОбработки;
	
	СтрокаДляПользователя = СтрШаблон(НСтр("ru='Статус обработки: %1; Объект: %2; Результат: %3'"), Статус, ОбрабатываемыйОбъект, РезультатОбработки);
	
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрокаДляПользователя;
	Сообщение.Сообщить();	
КонецПроцедуры

#КонецОбласти

#КонецОбласти
Показать
Оставьте свое сообщение

См. также

Тестирование средств 1С для решения СЛАУ

Механизмы платформы 1С Математика и алгоритмы Платформа 1С v8.3 Россия Бесплатно (free)

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

23.11.2022    1165    gzharkoj    11    

15

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    2924    fishca    12    

32

Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Описан алгоритм установки отбора по списку значений при открытии формы выбора справочника. Параметром отбора является список значений передаваемый из одной формы обработки в другую форму этой же обработки. Тестировано под платформу 8.3.18

11.12.2021    5797    prog1c_vl    4    

3

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    4920    dusha0020    8    

62

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Распределенные алгоритмы РИБ 1С

Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

Небольшое исследование на тему применимости классических распределённых алгоритмов репликации и синхронизации данных между узлами обмена РИБ 1С.

02.07.2021    2018    zhichkin    1    

8

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4649    comol    10    

29

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5082    SergeyN    13    

39

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Рекурсия для начинающих

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    10086    szv    5    

13

Самый быстрый FizzBuzz на 1С

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Давайте попробуем найти самое быстрое решение задачи "BuzzFizz" на 1С.

03.02.2021    1872    Donrad    23    

11

Программное создание корректировочного счета-фактуры выданного в УПП 1.3

Математика и алгоритмы Механизмы типовых конфигураций Запросы Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет НДС Бесплатно (free)

Данный функционал можно использовать, например, в процессе оформления возвратов от поставщика (корректировка реализации по согласованию сторон) при автоматическом создании корректировок реализации по документам поставщика, он позволяет массово создать корректировочные счета-фактуры в УПП 1.3. При создании документа из первичного счета-фактуры выданного в новый корректировочный счет-фактуру выданный копируются значения свойств.

17.12.2020    1158    ksnik    0    

2

Параллельные вычисления расчета факториала числа N

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

29.06.2020    5381    RustIG    18    

25

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

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

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

18.02.2020    8281    randomus    20    

75

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

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

04.01.2020    5204    AnatolPopov    7    

22

[После]Новогодние задачи

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3988    Alxby    23    

9

30 задач. Странных и не очень

Математика и алгоритмы Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    38477    Infostart    63    

160

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    18999    ildarovich    24    

181

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Побитовые операции "на пальцах"

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Простой пример для понимания того, как это работает.

02.08.2019    5139    nbeliaev    16    

8

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    188416    AlbinaAAA    50    

722

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    6631    vandalsvq    19    

11

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    71182    Infostart    34    

128

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    99424    ids79    32    

331

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

24.06.2019    19218    RonX01    69    

88

Организация хранения промежуточных данных

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    5041    scientes    1    

3

Вычисление 200 тысяч знаков числа pi

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

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    10989    Oleg_nsk    97    

79

Парсер таблиц по шаблону. Автоматическая корректировка парсера. Представление таблиц в виде графа.

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

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

25.04.2019    4657    trim89    5    

24

Нечёткий поиск. Bitap алгоритм, модификация от Wu-Manber

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

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

01.04.2019    5789    trim89    10    

48

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Решение системы линейных уравнений

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Пример использования объекта Расчет систем линейных уравнений.

25.03.2019    10971    scientes    12    

49

Обсуждение двух задач на пересечение отрезков

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Ищем общее в частностях, или задача о пересечении отрезков.

15.03.2019    7568    scientes    16    

24

Многопоточное восстановление последовательностей

HighLoad оптимизация Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    17062    _ASZ_    33    

52

Возврат (loop) в Алгоритмах визирования. Бит Финанс

Бюджетирование и планирование Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Россия Бюджетный учет Бесплатно (free)

В статье рассматривается минимальная доработка конфигурации БИТ Финанс, с сохранением поддержки, для расширения функционала Визирования: Возрат к предидущим точкам алгоритмов. Полезно будет для программистов и специалистов, занимающихся внедрением БИТ Финанс.

07.08.2018    8597    gladky    2    

11

Извлечение текстов модулей из внешней обработки 1С

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

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

28.04.2018    17234    zenechka    6    

28

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Преобразование запросов

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    12962    vasilev2015    24    

17

"Взлом" теста "1С:Профессионал" методом машинного обучения

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.03.2018    23080    ildarovich    44    

95

Минимализмы 3

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    53718    ildarovich    47    

422

Очистка текста - в помощь копирайтеру

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

13.02.2018    8591    user748289    0    

5

Введение в CI для 1С

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

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    26055    real_MaxA    22    

92