Многопоточная выгрузка одного сообщения обмена

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

Разработка - Практика программирования

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

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

В своей статье о планах обмена я поделился результатами исследования этого объекта конфигурации.

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

Заранее прошу прощения если это "баян". В таком случае просьба дать ссылки где почитать источники.

Код состоит из двух частей:

1. Управление формированием фоновых заданий и объединение результатов их работы.

2. Управление выполнением списка фоновых заданий.

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

Идея заключается в следующем:

1. Мы как обычно начинаем выгрузку.

2. В момент, когда начинаем выбирать изменения, мы распараллеливаем запись файла сообщения обмена по объектам конфигурации, которые входят в состав плана обмена. Для каждого такого объекта мы создаём отдельное фоновое задание и пишем все его изменения в отдельный файл - часть сообщения обмена. Подробнее можно посмотреть в моей статье в разделе "Запись изменений в сообщение обмена".

3. Ожидаем завершения выполнения всех сформированных заранее фоновых заданий.

4. Объединяем результаты фоновых заданий в один главный файл сообщения обмена.

5. Завершаем выгрузку как обычно.

Код главной управляющей процедуры выглядит следующим образом:

Процедура СформироватьСообщениеОбмена()
	
	УзелОбмена = ПланыОбмена.Тестовый.НайтиПоНаименованию("Узел получатель", Истина);
	
	// Получаем список объектов конфигурации, который входят в состав плана обмена
	СоставПланаОбмена = Метаданные.ПланыОбмена.Тестовый.Состав;
	
	// Открываем главный файл сообщения обмена
	ЗаписьXML = Новый ЗаписьXML();
	ПолноеИмяФайла = КаталогСообщений + "\" + Строка(УзелОбмена.УникальныйИдентификатор()) + ".xml";
	ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла);
	
	// Создаём объект "ЗаписьСообщенияОбмена" и блокируем узел (объектная блокировка)
	ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
	ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
	НомерСообщения = ЗаписьСообщения.НомерСообщения;
	
	// Массив фоновых заданий - по одному на каждый объект конфигурации, который входит в состав плана обмена
	СписокФоновыхЗаданий = Новый Массив();
	
	// Количество постоянно активных фоновых заданий.
	// Управление их выполнением осуществляется специальными процедурами (см. ниже).
	// Обычно их количество должно равняться количеству ядер сервера.
	// На практике нужно подбирать их количество в зависимости от загрузки сервера.
	// Слишком большое количество фоновых заданий может "положить" сервер.
	КоличествоАктивныхЗаданий = 4;
	
	// Цикл формирования списка фоновых задний и их параметров
	Для Каждого Элемент Из СоставПланаОбмена Цикл
		
		ИмяЗадания = "Экспорт сообщения № " + Формат(НомерСообщения, "ЧГ=0") + ": " + Элемент.Метаданные.ПолноеИмя();
		
		Параметры = Новый Массив();
		Параметры.Добавить(УзелОбмена);
		Параметры.Добавить(НомерСообщения);
		Параметры.Добавить(Элемент.Метаданные);
		
		ПараметрыФоновогоЗадания = Новый Структура();
		ПараметрыФоновогоЗадания.Вставить("ИмяЗадания", ИмяЗадания);
		ПараметрыФоновогоЗадания.Вставить("ИмяПроцедуры", "ОбщийМодульОбменаДанными.ВыполнитьВыгрузкуИзмененийОбъектаКонфигурации");
		ПараметрыФоновогоЗадания.Вставить("ПараметрыПроцедуры", Параметры);
		
		СписокФоновыхЗаданий.Добавить(ПараметрыФоновогоЗадания);
		
	КонецЦикла;

	// Передача списка фоновых заданий управляющим процедурам на выполнение
	// Формируем части сообщения обмена по одному файлу для каждого объекта конфигурации
	ВыполнитьФоновыеЗадания(СписокФоновыхЗаданий, КоличествоАктивныхЗаданий);
	
	// Собираем все части сообщения обмена вместе в главном файле (см. выше)
	СформироватьЕдиноеСообщениеОбмена(СоставПланаОбмена, УзелОбмена, НомерСообщения, ЗаписьXML);
	
	// Завершаем формирование сообщения обмена
	ЗаписьСообщения.ЗакончитьЗапись();
	
КонецПроцедуры

Очень важно ничего не напутать с именованием файлов частей сообщения. Для этого код формирования такого имени вынесен в отдельную функцию. Вот она:

Функция ПолучитьИмяФайлаЧастиСообщенияОбмена(УзелОбмена, НомерСообщения, ОбъектМетаданных)
	
	Возврат КаталогСообщений +
		"\" +
		Строка(УзелОбмена.УникальныйИдентификатор()) +
		"_" +
		Формат(НомерСообщения, "ЧГ=0") +
		"_" +
		ОбъектМетаданных.Имя + ".xml";
		
КонецФункции

Процедура, которая формирует файл части сообщения:

// Процедура общего модуля для вызова из фонового задания и формирования части сообщения по объекту метаданных
Процедура ВыполнитьВыгрузкуИзмененийОбъектаКонфигурации(УзелОбмена, НомерСообщения, ОбъектМетаданных) Экспорт
	
	Выборка = ПланыОбмена.ВыбратьИзменения(УзелОбмена, НомерСообщения, ОбъектМетаданных);
	
	Если Не Выборка.Следующий() Тогда
		Возврат;
	КонецЕсли;
	
	ЗаписьXML = Новый ЗаписьXML();
	ПолноеИмяФайла = ПолучитьИмяФайлаЧастиСообщенияОбмена(УзелОбмена, НомерСообщения, ОбъектМетаданных);
	ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла);
	
	ЗаписатьXML(ЗаписьXML, Выборка.Получить());
	
	Пока Выборка.Следующий() Цикл
		ЗаписатьXML(ЗаписьXML, Выборка.Получить());
	КонецЦикла;
	
	ЗаписьXML.Закрыть();
	
КонецПроцедуры

Собираются все части вместе такой процедурой:

Процедура СформироватьЕдиноеСообщениеОбмена(СоставПланаОбмена, УзелОбмена, НомерСообщения, ЗаписьXML)
	
	Для Каждого ОбъектМетаданных Из СоставПланаОбмена Цикл
		
		ПолноеИмяФайла = ПолучитьИмяФайлаЧастиСообщенияОбмена(УзелОбмена, НомерСообщения, ОбъектМетаданных);
		
		Файл = Новый Файл(ПолноеИмяФайла);
		Если Файл.Существует() Тогда
			
			ЧтениеТекста = Новый ЧтениеТекста(ПолноеИмяФайла, КодировкаТекста.UTF8);
			
			// Дописываем часть в главный файл сообщения обмена
			ЗаписьXML.ЗаписатьБезОбработки(ЧтениеТекста.Прочитать());
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Внимание!

Накладные расходы на создание файлов частей сообщения + последующее их объединение в один главный файл сообщения могут "съесть" всю выгоду от распараллеливания процесса. Это зависит от размеров такого сообщения. Тестируйте код перед его применением!

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

Наименование Файл Версия Размер
Многопоточная выгрузка одного сообщения обмена

.txt 8,28Kb
1
.txt 8,28Kb 1 Скачать

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Рейтинг 1-го уровня
11. Tangram 154 07.12.16 17:15 Сейчас в теме
Сейчас на практике реализую порционный обмен (по правилам обмена).
Я пошел другим путем - весь массив изменений, заранее выбранный запросами, бьется на порции, а потом каждая порция выбирается и выгружается.
По метаданным неудобно - в выгрузке может быть несколько сотен одинаковых объектов, например Реализаций, велика вероятность нарваться на блокировку.
21. kolya_tlt 24 11.01.17 14:24 Сейчас в теме
Добрый день, Дмитрий.
вы не пробовали объединить общие для всех узлов справочники\регистры и выгрузить их один раз для всех узлов?
1. TODD22 18 05.12.16 14:50 Сейчас в теме
Этот код я так понимаю пишет в один файл? То есть это для выгрузки в один узел?
А можно таким же способом выгружать сразу по нескольким узлам? Например по 4 магазинам?
6. Makushimo 157 06.12.16 06:25 Сейчас в теме
Про выгрузку по правилам обмена тут можно и не заикаться?
14. Tangram 154 07.12.16 23:08 Сейчас в теме
а вот про блокировки интересно...
Мои опыты на КА 1.1 (с изменениями) показывают следующее:
ВыбратьИзменения() отрабатывает оч. быстро, данные из боевой базы: 177000 объектов в выборке за 6 секунд.
А вот потом начинается мистика (или суровая реальность), из-за которой я затеял порционный обмен:
фактически все 177000 объектов блокируются на запись до окончания выгрузки до операторов
// Завершаем запись сообщения
ЗаписьСообщения.ЗакончитьЗапись();

ЗаписьXML.Закрыть();
Причем это я проверял даже на копии: выбираю все изменения, там 150 документов "Реализация". выбираю из них первые 50 и на них делаю ВыбратьИзменения(). иду отладчиком по процедуре выгрузки (я слегка модиф. типовую) и в другом сеансе пытаюсь проводить документы. Пока не пройдет ЗакончитьЗапись(), ни один из "выбранных" 50 документов перепровести нельзя (стандартная ошибка MS SQL на превышение времени блокировки), остальные пожалуйста.
15. Tangram 154 07.12.16 23:44 Сейчас в теме
А вот сейчас воспроизвел ситуацию на типовой КА 1.1.61.2 и все документы, попавшие в ВыбратьИзменения(), спокойно перепроводятся в процессе выгрузки...
Завтра попробую 1.1.78 и походу буду искать блокировку в доработках...
20. Tangram 154 08.12.16 00:28 Сейчас в теме
типовой код примерно такой:
НачатьТранзакцию();
ВыбратьИзменения(...все...);

Далее Цикл по выборке, но через каждые условно 10 объектов
идет ЗафиксироватьТранзакцию(); НачатьТранзакцию();

и в типовой конфе реально объекты, захваченные в первой десятке, отпускаются после первого же ЗафиксироватьТранзакцию().
а в моей базе почему-то не так...
Спасибо большое за наводки, завтра на свежую голову буду копать дальше. Если что интересное для науки найду, напишу ).
10. caponid 07.12.16 16:17 Сейчас в теме
Не тянет это на публикацию - нет цельной идеи.
3. caponid 05.12.16 17:24 Сейчас в теме
Вот тут "ЧтениеТекста.Прочитать()" вполне возможно получить когда нибудь "Out of memory". причем внезапно.. память течет и фрагментируется.
А вот тут "Выборка.Получить()" вместо объекта - блокировку
Оставьте свое сообщение

См. также

Перенос объектов 1С Промо

Перенос данных из 1C8 в 1C8 v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой и наглядный перенос объектов между любыми базами 1С 8 с предварительным анализом на возможные различия в данных (через файл, через интернет, через буфер обмена). Интерактивная настройка правил обмена на стороне источника и получателя. В обработке есть удобный обзор по подсистемам, поиск и обработка данных по заданному фильтру. Сравнение объектов, поиск ссылок. Конструктор кода по созданию объектов, написание скриптов и отладка мини-функций в УФ. Отключение/включение регламентных заданий. Регистрация/снятие с регистрации объектов в планах обмена. И многое другое. Инструменты администратора в одной обработке.

1 стартмани

16.03.2015    96593    2095    moolex    199    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

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

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

5 стартмани

21.12.2020    3914    19    huxuxuya    11    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    29915    26    Stepa86    46    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    23598    6    m-rv    90    

Выгрузка данных из УТ 11.3/11.4 в БП 3.0 (перенос документов и справочной информации из "Управление торговлей" ред. 11.3/11.4 в "Бухгалтерия предприятием" ред. 3.0). Обновлен до УТ 11.3.4.х/11.4.7х и БП 3.0.7х.х Промо

Обмен через XML Перенос данных из 1C8 в 1C8 v8 БП3.0 УТ11 Абонемент ($m)

Данная обработка предназначена для выгрузки в формате XML данных из программы «Управление торговлей» ред. 11.3/11.4 по основным группам документов (документы покупки/продажи товаров и услуг, складские документы, счета-фактуры, ценообразование), а также набор основных справочников. Загрузка данных в БП ред. 3.0 через обработку «Универсальный обмен данными XML». Основная цель обработки – оптимизация работы бухгалтеров во время обмена данными между программами, а также выборочная корректировка загруженных ранее документов.

04.03.2016    60005    3    SEOAngels    63    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    24286    13    RocKeR_13    16    

Обмен данными между УТ 10.3 и Розницей 2.2 (правила обмена данными между "Управлением торговлей" ред. 10.3. и "Розницей" ред. 2.2) Промо

Обмен через XML Перенос данных из 1C8 в 1C8 Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 УТ10 Розница УУ Абонемент ($m)

Данные правила предназначены для обмена в формате XML данных из программы «Управление торговлей» ред. 10.3. и "Розница" ред. 2.2 по основным группам документов и основных справочников. Загрузка данных осуществляется через встроенную обработку «Универсальный обмен данными XML». Основная цель обработки – корректировка типовых правил на выявленные ошибки и расширение выгрузки для корректной выгрузки данных по ЕГАИС и продажам в целом. Протестировано до УТ 10.3.47.х и Розница 2.2.11.х

3 стартмани

16.09.2016    49257    2    SEOAngels    65    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    31287    28    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    56343    21    kalyaka    16    

Выгрузка документов из ЗУП в БП (1С 8.2-8.3) Промо

Перенос данных из 1C8 в 1C8 Зарплата Зарплата v8 БП2.0 ЗУП2.5 Абонемент ($m)

Обработка для выгрузки документов из конфигурации "Зарплата и управление персоналом" 8.2 в конфигурацию "Бухгалтерия предприятия" 8.2. Использует правила обмена. В обработке создан удобный интерфейс для гибкого формирования списка документов кадрового учета и начисления ЗП.

1 стартмани

18.12.2012    17552    138    d.zhukov    20    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    32844    88    m-rv    58    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    35042    11    SITR-utyos    13    

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1

Обмен через XML Зарплата Перенос данных из 1C8 в 1C8 Зарплата v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    43040    141    kostya_whiskas    24    

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Перенос данных из 1C8 в 1C8 Универсальные обработки Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    214703    4288    ekaruk    184    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    30842    20    mvxyz    17    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    29360    56    kwazi    6    

Перенос справочников и документов из УТ 10.3 в БП 3.0

Перенос данных из 1C8 в 1C8 v8 УТ10 БП3.0 Россия БУ НУ УУ Абонемент ($m)

Синхронизация справочников и документов из Управление торговлей 10.3 в Бухгалтерию предприятия 3.0. Обработка не затрагивает штатный механизм. Подключение и перенос документов происходит посредством OLE. Без ввода начальных остатков.

10 стартмани

25.07.2017    25210    16    2casp    6    

Выгрузка данных из УТ 10.3 в БП 3.0 (своими руками) Промо

Перенос данных из 1C8 в 1C8 v8 УТ10 БП3.0 Россия Абонемент ($m)

Старая добрая, позабытая многими выгрузка из УТ 10.3 в БП 1.6. Ее еще можно оживить, и она послужит на благо всем желающим, всем уставшим от автоматических обменов.

2 стартмани

30.10.2014    44685    325    TESL    41    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    147322    13    signum2009    48    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    34492    119    romasna    49    

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

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    39055    96    json    25    

Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена) Промо

Инструментарий разработчика Универсальные обработки Перенос данных из 1C8 в 1C8 v8 КА1 БП2.0 ЗУП2.5 УТ10 УПП1 Абонемент ($m)

Вы внедряете обмен данными между двумя типовыми или основанными на типовых БД и вам необходим инструмент, чтобы сопоставить между собой справочники этих конфигураций? Вы хотите навести порядок в обмене данными, потому что вам надоело вылавливать дублирующиеся объекты? Вам очень хочется перепоручить сопоставление объектов обменивающихся баз пользователям, но нет подходящего и понятного пользователям интерфейса? Тогда вам нужна именно эта обработка!

4 стартмани

11.11.2015    42733    108    catsam    8    

Соответствия объектов обмена

Распределенная БД (УРИБ, УРБД) Перенос данных из 1C8 в 1C8 v8 КА1 Россия Абонемент ($m)

Обработка позволяет проверять, исправлять ошибки, добавлять и удалять соответствия объектов в обменах данными между конфигурациями на основе «Комплексной автоматизации 1.1» или похожими конфигурациям. Подходит для обменов с использованием регистра сведений «СоответствиеОбъектовДляОбмена».

1 стартмани

26.08.2016    24285    9    xxxelaaa    1    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    50872    36    Demanoidos    60    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    61765    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

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

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    67327    199    rozer    66    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

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

1 стартмани

26.04.2016    66732    19    arakelyan    22    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    87475    165    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    20186    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    53940    54    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    61206    201    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

16.02.2016    25271    8    Tatitutu    5    

Выгрузка/загрузка данных в формате JSON v 1.0.8

Распределенная БД (УРИБ, УРБД) Перенос данных из 1C8 в 1C8 v8 1cv8.cf Абонемент ($m)

Обработка предназначена для обмена данными между схожими конфигурациями в формате JSON. Этот формат обладает рядом существенных преимуществ по сравнению с xml и прочими популярными форматами. В отличие от существующих аналогов, обработка не использует никаких дополнительных библиотек. (де)Сериализация всех объектов происходит средствами встроенного языка и методов ЗаписатьJSON() и ПрочитатьJSON(). Работает на платформе версии не ниже 8.3.6.

3 стартмани

27.01.2016    47484    356    kser87    44    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    42279    20    milkers    4    

Нечеткий поиск одним запросом

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    30462    72    vasvl123    9    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.

1 стартмани

06.12.2015    60613    50    YPermitin    19    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    102523    482    Luchik    210    

Быстрое определение интервалов в запросе

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    55573    35    ildarovich    41    

Полезные приемы при работе с Excel из 1С (Версия 3.1)

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

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

1 стартмани

22.09.2015    222992    476    Zerocl    76    

Javascript и 1С. Кросс-платформенное взаимодействие

Практика программирования v8 1cv8.cf Абонемент ($m)

Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.

1 стартмани

14.09.2015    73834    210    VitaliyCeban    59    

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I

Практика программирования v8 Абонемент ($m)

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    24205    3    Serginio    2