Выполнение внешней обработки в фоновом задании

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

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

ВнешняяОбработка ДлительныеОперации ДлительнаяОперация ФоновыеЗадания Программирование БСП Фон Обработка СведенияОВнешнейОбработке ВыполнитьКоманду Форма ДополнительныеОтчетыИОбработки

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

Warning

Данная статья не претендует на оригинальность и не является конечным решением.

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

 

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

Ниже представлен вариант реализации длительной операции из внешней обработки. Обязательные требования: обработка должна быть добавлена в справочник ДополнительныеОтчетыИОбработки и наличие БСП v3.

Итак, поехали!

  1. Управляемая форма:
  2.  
     Демонстрационный код модуля внешней обработки (тут все топорно просто):
    
    Функция СведенияОВнешнейОбработке() Экспорт
    	
    	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    	ПараметрыРегистрации.БезопасныйРежим = Ложь;
    	
    	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    	НоваяКоманда.Представление = Метаданные().Синоним;
    	НоваяКоманда.Идентификатор = "Открыть форму";
    	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    	
    	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    	НоваяКоманда.Представление = "Выполнить мой алгоритм";
    	НоваяКоманда.Идентификатор = НоваяКоманда.Представление;
    	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    	
    	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    	НоваяКоманда.Представление = "Выполнить тест";
    	НоваяКоманда.Идентификатор = НоваяКоманда.Представление;
    	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    	
    	Возврат ПараметрыРегистрации;
    	
    КонецФункции
    
    Процедура МояДлительнаяПроцедура()
    	
    	ВремяФиниша = ТекущаяДата() + 100;
    	Пока ТекущаяДата() < ВремяФиниша Цикл
    		Процент = 100 - (ВремяФиниша - ТекущаяДата());
    		Если НЕ (Процент % 10) И Процент Тогда
    			ДлительныеОперации.СообщитьПрогресс(Процент, СтрШаблон("Задание пройдено на %1 процентов", Процент));
    		КонецЕсли;
    	КонецЦикла;
    	
    КонецПроцедуры
    
    Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды) Экспорт
    	
    	// поиск и выполнение запрошенной команды
    	Если ИдентификаторКоманды = "Выполнить мой алгоритм" Тогда
    		МояДлительнаяПроцедура();
    	ИначеЕсли ИдентификаторКоманды = "Выполнить тест" Тогда
    		Сообщить("Тест пройден");
    	КонецЕсли;
    	
    КонецФункции
    

     

  3. Сама реализация запуска кода модуля внешней обработки в фоновом задании из управляемой формы:

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    	
    	// получим объект обработки
    	ВнешняяОбработка = РеквизитФормыВЗначение("Объект");
    	
    	// если обработка открыта из справочника проверим заполненность ссылки
    	Параметры.Свойство("ДополнительнаяОбработкаСсылка", ДополнительнаяОбработкаСсылка);
    	
    	// если пустая значит открыти из вне, нужно поискать ее в справочнике
    	Если ДополнительнаяОбработкаСсылка.Пустая() Тогда
    		ДополнительнаяОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ВнешняяОбработка.Метаданные().Синоним);
    	КонецЕсли;
    	
    	// если забыли добавить в справочник выполнить в фоне не получится :-(
    	ДоступноВыполнениеВФоне = НЕ ДополнительнаяОбработкаСсылка.Пустая();
    	
    	// получим сведения о внешней обработке
    	СведенияОВнешнейОбработке = ВнешняяОбработка.СведенияОВнешнейОбработке();
    	
    	// загрузим все идентификаторы и представления команд в таблицу формы
    	Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    	ТаблицаКоманд.Загрузить(СведенияОВнешнейОбработке.Команды.Скопировать(Новый Структура("Использование", Использование)));
    	// заполним список выбора команд внешней обработки
    	Элементы.КомандаОбработки.СписокВыбора.ЗагрузитьЗначения(ТаблицаКоманд.Выгрузить().ВыгрузитьКолонку("Представление"));
    	
    КонецПроцедуры
    
    &НаСервере
    Процедура ВыполнитьМетодТекущегоОбъекта(ИдентификаторКоманды)
    	
    	ВнешняяОбработка = РеквизитФормыВЗначение("Объект");
    	ВнешняяОбработка.ВыполнитьКоманду(ИдентификаторКоманды, Новый Структура);
    	
    КонецПроцедуры
    
    // это взято из Справочник ДополнительныеОтчетыИОбработки ФормаЭлемента 
    &НаСервереБезКонтекста
    Функция НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор)
    	ИмяПроцедуры = "ДополнительныеОтчетыИОбработки.ВыполнитьКоманду";
    	
    	ПараметрыПроцедуры = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения");
    	ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
    	ПараметрыПроцедуры.ИдентификаторКоманды          = ВыполняемаяКоманда.Идентификатор;
    	ПараметрыПроцедуры.ОбъектыНазначения             = ВыполняемаяКоманда.ОбъектыНазначения;
    	
    	НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
    	НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр("ru = 'Дополнительные отчеты и обработки: Выполнение серверного метода обработки'");
    	
    	Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, НастройкиЗапуска);
    	
    КонецФункции
    
    &НаКлиенте
    Процедура ВыполнитьКомандуВФоне(ИдентификаторКоманды)
    	
    	// настройки ожидания
    	НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтаФорма);
    	НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина;
    	НастройкиОжидания.ВыводитьСообщения = Истина;
    	НастройкиОжидания.ТекстСообщения = НСтр("ru = 'Выполняется обработка данных.'");
    	
    	// выполнить команду
    	ВыполняемаяКоманда = Новый Структура("Ссылка, Идентификатор, ОбъектыНазначения", ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, Новый Массив);
    	ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, ЭтаФорма.УникальныйИдентификатор);
    	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Неопределено, НастройкиОжидания);
    	
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьИдентификаторВыбраннойКоманды()
    	// получим выбранный идентификатор
    	Возврат ТаблицаКоманд.Выгрузить().Найти(КомандаОбработки).Идентификатор;
    КонецФункции
    
    &НаКлиенте
    Процедура ВыполнитьКоманду(Команда)
    	
    	Если ПустаяСтрока(КомандаОбработки) Тогда
    		Возврат;
    	КонецЕсли;
    	
    	// получим выбранный идентификатор
    	ИдентификаторКоманды = ПолучитьИдентификаторВыбраннойКоманды();
    	
    	// начать обработку данных
    	Если ДоступноВыполнениеВФоне Тогда
    		ВыполнитьКомандуВФоне(ИдентификаторКоманды);
    	Иначе
    		ВыполнитьМетодТекущегоОбъекта(ИдентификаторКоманды);
    	КонецЕсли;
    	
    	КомандаОбработки = "";
    	
    КонецПроцедуры

     

  4. Результат:

Описание работы алгоритма:

  • Получает все команды из функции "СведенияОВнешнейОбработке()";
  • Отбирает только те, где "Использование = ТипКомандыВызовСерверногоМетода";
  • Выводит их пользователю для запуска;
  • После нажатия на команду, получает ее идентификатор;
  • Выполняет запуск команды через ДлительныеОперации.ВыполнитьВФоне();
    • Передает ссылку на ДополнительныеОтчетыИОбработки и идентификатор команды;
    • Фоновое задание получает экземпляр обработки из справочника, подключает и запускает стандартную процедуру "ВыполнитьКоманду()";
    • Выполняет передачу прогресса и сообщений;
  • Выводит меню ожидания с прогрессом выполнения и сообщениями.

Плюсы использования данного подхода:

  • Отсутствие какого либо другого варианта;
  • По сути делает аналогичные действия, как если в справочнике дополнительных отчетов и обработок - нажать на кнопку "Выполнить";
  • Выводит прогресс и сообщения;
  • Вместо пустого массива в "ОбъектыНазначения" можно передать полезные данные в фоновое задание.

 

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

Лучшие комментарии
16. Xershi 981 20.05.19 21:05 Сейчас в теме
(13) ключевой плюс этой публикации в том, что все разжевано без лишних соплей и отсебятины. Описание хромает, но зато четко дает понять, что пилить конфу не надо, рисовать форму не надо, а есть не только прогресс в процентах, но и доп текст, куда можно остаток времени записать или другую информацию! Все есть в БСП, главное это правильно написать код, а это мы и так умеем!
Остальные комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. qwinter 624 12.05.19 11:38 Сейчас в теме
Ну и любят же 1Сники велосипеды)))
creatermc; Eret1k; +2 Ответить
2. qwinter 624 12.05.19 11:45 Сейчас в теме
Отсутствие какого либо другого варианта;

Не благодарите)

3. Eret1k 780 12.05.19 11:50 Сейчас в теме
(2) Я имел в виду варианты запуска кода модуля в ФЗ, а за то что из обработки можно сделать регламентное задание благодарим БСП.
12. rpgshnik 2188 13.05.19 05:14 Сейчас в теме
4. Xershi 981 12.05.19 13:42 Сейчас в теме
Ранее процент выполнения длительной операции можно было вывести только если на форме нарисовать элементы. С версии БСП 3.0 это уже не нужно или и ранее так работало?
5. Xershi 981 12.05.19 13:57 Сейчас в теме
А понял в чем дело. Использовал другой код.
&НаКлиенте
Процедура ВыполнитьЗагрузкуКурсовФоново()
	
	Если ЗначениеЗаполнено(Объект.ИдентификаторКоманды) Тогда
		
		//ПараметрыКоманды = ДополнительныеОтчетыИОбработкиКлиент.ПараметрыВыполненияКомандыВФоне(Параметры.ДополнительнаяОбработкаСсылка);
		ПараметрыКоманды = Новый Структура();
		ПараметрыКоманды.Вставить("ДополнительнаяОбработкаСсылка",	Объект.ОбъектСсылка);
		ПараметрыКоманды.Вставить("СопровождающийТекст",			НСтр("ru = 'Выполняется загрузка курсов валют...'"));
		ПараметрыКоманды.Вставить("ФормаВладелец",					ЭтаФорма);
		ПараметрыКоманды.Вставить("СписокВалют",					ПолучитьАдресТаблицыВалют());
		ПараметрыКоманды.Вставить("НачалоПериода",					Объект.НачалоПериода);
		ПараметрыКоманды.Вставить("ОкончаниеПериода",				Объект.ОкончаниеПериода);
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершениеЗагрузкиКурсовФоново", ЭтотОбъект);
		
		ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне(Объект.ИдентификаторКоманды, ПараметрыКоманды, ОписаниеОповещения);
		
	Иначе
		
		ВыполнитьЗагрузкуКурсовНаСервере();
		
	КонецЕсли;

КонецПроцедуры
Показать
6. Xershi 981 12.05.19 14:14 Сейчас в теме
Переписал на ваш метод:
&НаКлиенте
Процедура ВыполнитьЗагрузкуКурсовФоново()
	
	Если ЗначениеЗаполнено(Объект.ИдентификаторКоманды) Тогда
		
		////ПараметрыКоманды = ДополнительныеОтчетыИОбработкиКлиент.ПараметрыВыполненияКомандыВФоне(Параметры.ДополнительнаяОбработкаСсылка);
		ПараметрыКоманды = Новый Структура();
		ПараметрыКоманды.Вставить("ДополнительнаяОбработкаСсылка",	Объект.ОбъектСсылка);
		ПараметрыКоманды.Вставить("СопровождающийТекст",			НСтр("ru = 'Выполняется загрузка курсов валют...'"));
		//ПараметрыКоманды.Вставить("ФормаВладелец",					ЭтаФорма);
		ПараметрыКоманды.Вставить("СписокВалют",					ПолучитьАдресТаблицыВалют());
		ПараметрыКоманды.Вставить("НачалоПериода",					Объект.НачалоПериода);
		ПараметрыКоманды.Вставить("ОкончаниеПериода",				Объект.ОкончаниеПериода);
		//
		ПараметрыКоманды.Вставить("ИдентификаторКоманды",			Объект.ИдентификаторКоманды);
		ПараметрыКоманды.Вставить("ОбъектыНазначения",				Новый Массив);
		ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершениеЗагрузкиКурсовФоново", ЭтотОбъект);
		//
		//ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне(Объект.ИдентификаторКоманды, ПараметрыКоманды, ОписаниеОповещения);
				
		// настройки ожидания
		НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтаФорма);
		НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина;
		НастройкиОжидания.ВыводитьСообщения			 = Истина;
		НастройкиОжидания.ТекстСообщения			 = НСтр("ru = 'Выполняется загрузка курсов валют...'");
		
		// выполнить команду
		//ВыполняемаяКоманда = Новый Структура("Ссылка, Идентификатор, ОбъектыНазначения", ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, Новый Массив);
		//ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, ЭтаФорма.УникальныйИдентификатор);
		ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ПараметрыКоманды, ЭтаФорма.УникальныйИдентификатор);
		ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОписаниеОповещения, НастройкиОжидания);
		
	Иначе
		
		ВыполнитьЗагрузкуКурсовНаСервере();
		
	КонецЕсли;

КонецПроцедуры
Показать

Не взлетело, прогресса нет. БСП в конфе 3.0.1.314.
В процедуре, которая считает все
ДлительныеОперации.СообщитьПрогресс(Процент, СтрШаблон("Загрузка курсов завершена на %1 %", Процент));		

В статье говорится, что команда должна иметь "ВызовСерверногоМетода". А я открываю форму же через "ОткрытиеФормы". Далее по кнопке вызываю длительную операцию. Выходит команда "ОткрытиеФормы", должна дернуть другую команду "ВызовСерверногоМетода"?
Возможно дело еще в:
ПараметрыРегистрации.Вставить("ВерсияБСП", "2.4.2.169");
Попробую поменять, но думаю не в этом дело.
7. Eret1k 780 12.05.19 17:13 Сейчас в теме
(6)
Команда которая должна быть выполнена в фоне, должна иметь тип: ДополнительныеОтчетыИОбработкиКлиентСервер. ТипКомандыВызовСерверногоМетода();

Код обработки можно отлаживать если, установлен параметр запуска "РежимОтладки", но правда каждый раз придется обновлять обработку в справочнике.

8. Xershi 981 12.05.19 20:40 Сейчас в теме
(7) да заработало! Как через файл, если добавить обработку в справочник, так и через внешние.
Единственный минус, мне нужно передавать параметры, когда я открываю форму.
Команда с "ВызовСерверногоМетода" используется для формирования регламентного задания. Подумаю как обойти это и будет вообще песня!

У меня также есть обработка, которая таким макаром запускает несколько потоков, но там везде был клиентский метод и прогресс не выводился. Возможно ли несколько потоков запустить таким вариантом?
Прикрепленные файлы:
10. Eret1k 780 12.05.19 22:10 Сейчас в теме
(8)
возможно ли несколько потоков запустить таким вариантом?

Да делал такое, НачатьВыполнениеСервернойКомандыВФоне() запускал в цикле, разделяя данные по порциям и передавал их в "ОбъектыНазначения". Собирал массив длительных операций и потом на клиенте опять в цикле передавал их в ДлительныеОперацииКлиент.ОжидатьЗавершение();
11. Xershi 981 12.05.19 23:07 Сейчас в теме
(10) не совсем понял.
ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ПараметрыКоманды, ЭтаФорма.УникальныйИдентификатор);
		ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОписаниеОповещения, НастройкиОжидания);
		

Это делаем в цикле? Для чего собирать ДлительнаяОперация в массив?
22. Nuuq 76 10.10.19 10:42 Сейчас в теме
(7)
Команда которая должна быть выполнена в фоне, должна иметь тип: ДополнительныеОтчетыИОбработкиКлиентСервер. ТипКомандыВызовСерверногоМетода();

Код обработки можно отлаживать если, установлен параметр запуска "РежимОтладки", но правда каждый раз придется обновлять обработку в справочнике.

А можно по подробнее, как отладить?
Я в параметр запуска написал "РежимОтладки", в Конфигураторе - Отладка - Подключение - Автоматическое подключение - галочки стоят Клиентские и внешние соединения на сервере и Фоновые задания (т.о. в табличке Сервер и Тонкий клиент 2 строчки). Открыл обработку в конфигураторе, поставил точку. Добавил (обновил) обработку в справочнике Дополнительных внешних обработок, тут же нажал "Выполнить" - но в отладку не попадает.
ЧЯДНТ?
9. Xershi 981 12.05.19 21:56 Сейчас в теме
Проверил на БСП 2.4.2.169 работает!
А вот на 2.3.2.51 пишет, что прогресс может выводить, а вот сообщения нет.
{ОбщийМодуль.ОбщегоНазначенияКлиентСервер.Модуль(2642)}: Если параметр ПараметрыОжидания.ВыводитьПрогрессВыполнения установлен в Истина, то параметр ПараметрыОжидания.ВыводитьСообщения должен быть установлен в Ложь в ДлительныеОперацииКлиент.ОжидатьЗавершение
		ВызватьИсключение ТекстИсключения;

Посмотрел код, там тоже работает! Только нужно закомментить проверку в общем модуле "ДлительныеОперацииКлиент" процедуре "ПроверитьПараметрыОжидатьЗавершение"
//ОбщегоНазначенияКлиентСервер.Проверить(Не (ПараметрыОжидания.ВыводитьПрогрессВыполнения И ПараметрыОжидания.ВыводитьСообщения), 
		//	НСтр("ru = 'Если параметр ПараметрыОжидания.ВыводитьПрогрессВыполнения установлен в Истина, то параметр ПараметрыОжидания.ВыводитьСообщения должен быть установлен в Ложь'"),
		//	"ДлительныеОперацииКлиент.ОжидатьЗавершение");
		

Она вызывает исключение, а после комментирования все работает!
wowik; Eret1k; +2 Ответить
13. Oldsad 13.05.19 08:34 Сейчас в теме
Существуют ситуации, когда нужно реализовать некий алгоритм и выполнить его в фоновом режиме. Подобных ситуаций может быть масса, а возможностей реализаций в 1С мало и все они сложные.

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

и собственно возникает вопрос: чем данная статья отличается от десятка ей подобных?

Плюсы использования данного подхода:

Отсутствие какого либо другого варианта;

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

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

и это плюс? тогда еще в плюсы можно записать "обработка выполняет заданный ей алгоритм"

Вместо пустого массива в "ОбъектыНазначения" можно передать полезные данные в фоновое задание

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

не стал придираться к еще одному плюсу (третьему), как ни странно не во всех примерах фоновых заданий выводятся сообщения
Evg-Lylyk; +1 Ответить
16. Xershi 981 20.05.19 21:05 Сейчас в теме
(13) ключевой плюс этой публикации в том, что все разжевано без лишних соплей и отсебятины. Описание хромает, но зато четко дает понять, что пилить конфу не надо, рисовать форму не надо, а есть не только прогресс в процентах, но и доп текст, куда можно остаток времени записать или другую информацию! Все есть в БСП, главное это правильно написать код, а это мы и так умеем!
18. mrx2012 20.05.19 23:24 Сейчас в теме
Все верно, но с готовым примером проще и быстрее.
14. mrx2012 20.05.19 17:06 Сейчас в теме
Ребята, у кого получился рабочий вариант. Пришлите рыбу , пожалуйста.
15. Eret1k 780 20.05.19 18:56 Сейчас в теме
(14) Держите может поможет
Прикрепленные файлы:
ВыполнитьАлгоритмВФоне.epf
_Penek_; wowik; user774630; +3 Ответить
17. mrx2012 20.05.19 23:20 Сейчас в теме
(15)огромное спасибо за статью и за обработку.
У меня уже была обработка, для для асинхронного выполнения , но в ней очень не хватало индикатора выполнения. Надеюсь теперь будет.
20. max_zhilin 30.08.19 17:45 Сейчас в теме
(15) не работает, не показывает прогресс, да и интерфейс блокирует. БСП 3.0.1.351

В Процедура СообщитьПрогресс срабатывает это:
	Если ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание() = Неопределено Тогда
		Возврат;
	КонецЕсли;


Upd: разобрался, был включен режим отладки
19. viplelik 14 23.08.19 16:22 Сейчас в теме
А как сделать чтобы работало прямо из файла? (т.е. без добавления в "Дополнительные отчеты и обработки")

P.S. На новых БСП (3.0.2 и выше)
23. fuser 3 30.10.19 09:26 Сейчас в теме
(19) воспользоваться поиском по сайту (внешняя обработка длительные операции БСП)
21. max_zhilin 30.08.19 17:54 Сейчас в теме
Кстати, вот этот фрагмент успевает за секунду назапускаться сотни раз. Надо как-то ограничить одним разом.
		Если НЕ (Процент % 10) И Процент Тогда
			ДлительныеОперации.СообщитьПрогресс(Процент, СтрШаблон("Задание пройдено на %1 процентов", Процент));
Оставьте свое сообщение

См. также

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

Разработка внешних компонент v8 1cv8.cf Платные (руб)

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

2000 руб.

02.09.2010    54354    62    207    

Интеграция "Библиотеки интеграции МДЛП 1.1.2.7" с типовой конфигурацией

Интеграция Конфигурирование 1С v8 Здравоохранение, медицина, стоматология Россия Бесплатно (free)

Инструкция для интеграции “Библиотеки интеграции МДЛП 1.1.2.7” в типовые конфигурации, на примере конфигурации “Управление нашей фирмой, редакция 1.6 (1.6.18.168)”.

02.03.2020    4380    0    RPGrigorev    3    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    21400    295    cprit    94    

Хранение файлов - как уменьшить размер базы данных

Чистка базы Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Бесплатно (free)

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    7957    0    2tvad    17    

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

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

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

2000 руб.

31.01.2019    45723    327    156    

1С:Ассемблер. Немного летнего веселья!

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

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

1 стартмани

21.06.2019    26444    77    Evil Beaver    119    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26567    0    Eret1k    23    

Немного о графических файлах. Сжатие. Распознавание текста

Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

06.05.2019    6720    10    tusv    6    

Регулярные выражения без внешних компонент? Легко! Промо

Практика программирования Обмен через XML v8 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    60335    0    starik-2005    99    

Практика перехода на Linux и Postgres в небольшой компании (10 пользователей)

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Почему я решил поставить давнему клиенту Linux + Postgres вместо Windows + MS SQL? Что меня останавливало раньше?

22.04.2019    27853    0    starik-2005    169    

HTML-клиент у конфигурации 1С

WEB v8 Бесплатно (free)

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    16934    0    Smaylukk    119    

Уменьшаем трафик: HTTP запрос со сжатием GZIP средствами 1С. На примере выгрузки файлов на Яндекс-диск

WEB v8 1cv8.cf Абонемент ($m)

Обработка демонстрирует отправку тела HTTP запроса со сжатием gzip (метод deflate) средствами платформы 1С. Демонстрация происходит на примере отправки текста или файла на Яндекс.Диск.

1 стартмани

03.09.2018    5853    29    uno-c    0    

Инструменты бухгалтера: Виджеты рабочего стола Промо

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

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

2 стартмани

28.08.2017    35394    170    Bazil    28    

Чтение сжатого gzip, deflate HTTP ответа сервера. Без ВК. Уменьши время загрузки и сократи трафик в 3 раза

WEB v8 1cv8.cf Абонемент ($m)

В платформе 1С:Предприятие не реализовано штатного механизма декодирования ответа веб серверов, в которых присутствует gzip сжатие. Некоторые использовали WinHttpRequest.5.1 , кто-то писал ВК. Друзья, хватит. Вот вам решение.

1 стартмани

08.06.2018    13654    69    Malfarion    16    

Создание подключаемой обработки табличной части с диалогом запроса параметров заполнения (управляемые формы)

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

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

1 стартмани

03.05.2018    45014    116    Mirage78    16    

Обработка печатной формы WORD клиент-сервер УФ

Универсальные печатные формы v8::УФ 1cv8.cf Абонемент ($m)

Это моя первая статья на данном портале, но попытаюсь изложить все понятно и подробно. Долгое время у меня заняло создание такой вот внешней обработки. Есть очень много примеров, как сделать подобное на неуправляемых формах (2.0) и очень мало информации касательно управляемых(3.0), по крайней мере я многого найти не смог в доступе. Создание подобное обработки выглядит вполне несложно, если производить все действия на сервере, как это было с 2.0, но в нашем случае необходимо инициализировать открытие документа на клиенте, чему сильно мешает отсутствие возможности передать макет Active Document с сервера на клиент.

2 стартмани

14.03.2018    23819    83    LeoKeyn    41    

Gant 1C 2.* - диаграмма Ганта с таблицей + Планировщик + Отчет (8.1, на управляемой форме/Такси 8.2, 8.3) Промо

Рабочее место Универсальные обработки Управление проектом Финансовый учет и бюджетирование (FRP) Производство готовой продукции (работ, услуг) Учет рабочего времени Финансовый учет и бюджетирование (FRP) Производство готовой продукции (работ, услуг) Учет рабочего времени v8 1cv8.cf УУ Абонемент ($m)

Внешняя обработка, аналог MS Project в 1Се для работы с задачами: параллельный ввод данных по задачам и график Ганта, дополнительный режим в виде календаря (планировщик), связывание задач и пересчет длительности и дат с учетом выходных, видов связей и запаздываний, расчет затрат, сохранение/открытие проектов в файл на диск или файл ИБ, импорт/экспорт документов Microsoft Project.

1 стартмани

02.12.2011    136020    1068    rare-avis    210    

“Заставим сканер пищать!” или Получаем обратную связь из 1С при сканировании штрихкодов

Сканер штрих-кода Учет ТМЦ Учет ТМЦ v8 1cv8.cf Абонемент ($m)

Получаем обратную связь из 1С при сканировании штрихкодов.

1 стартмани

10.01.2018    40819    100    vadnevzorov    70    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    182290    0    MaxS    285    

Зачем 1С-нику NoSQL и CRDT

WEB Интеграция Бесплатно (free)

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

12.08.2017    22767    0    unpete    27    

Маркировка: 2D Android Штрихкод сканер + драйвер устройства для 1С Промо

Сканер штрих-кода Розничная торговля Розничная торговля v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Драйвер торгового оборудования и приложение для Android, телефон или планшет в качестве стандартного штрихкод сканера для платформы 1С.

3 стартмани

29.11.2016    44090    176    dreamadv    110    

Как я стал одинэсником и переехал из провинции в Москву

О жизни Россия Бесплатно (free)

История покорения Москвы.

29.07.2017    16834    0    DmitryKSL    132    

54 ФЗ своими руками

ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Бесплатно (free)

Практический опыт внедрения изменений в 54ФЗ в розничной сети, работающей на 1С. Если вы не хотите платить каким-либо подрядчикам, которые "всё сделают и настроят за вас", то статься может оказаться крайне полезной.

17.04.2017    57634    0    comol    124    

Формирование штрихкода EAN-13 в SVG с помощью XDTO

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

В версии платформы 8.3.9 было объявлено о поддержке изображений в формате SVG. Данная обработка демонстрирует работу с данным форматом, а именно его формированием (рисованием). Ну а так как самой популярной картинкой в 1С, наверное, является картинка штрихкода EAN - ее я и решил рисовать.

1 стартмани

24.03.2017    11960    53    kot-stas    19    

Удаление организации из 1С. Чистка базы 1С. Удаление "не удаляемых" объектов Промо

Чистка базы v8 1cv8.cf Абонемент ($m)

Удалить все документы, чтобы в базе осталась только одна организация со своими документами? Удалить всю информацию в регистрах, не связанную с указанной фирмой? Удалить "неудаляемую" номенклатуру? Легко! Используйте эту обработку.

10 стартмани

02.10.2015    51122    309    spy-83    84    

План обмена в формате "EnterpriseData" для 1С 7.7

Обмен через XML 1С7.7<->1C7.7 v7.7 1С7:ТиС Абонемент ($m)

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

1 стартмани

07.01.2017    21906    24    binex    23    

"Распределение в запросе" или "избавляемся от перебора"

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

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32799    0    alexandersh    48    

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

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

Чуть более комплексное описание, чем на других ресурсах

1 стартмани

30.10.2016    140883    954    json    66    

Монитор журнала регистрации Промо

Журнал регистрации Администрирование данных 1С WEB v8 1cv8.cf Абонемент ($m)

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

2 стартмани

29.06.2015    39888    106    andy23    49    

Редактирование табличной части объекта с помощью СКД

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

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

2 стартмани

16.09.2016    24498    96    Hatson    27    

Примеры скриптов на OneScript

OneScript Россия Абонемент ($m)

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

1 стартмани

14.07.2016    28605    41    Drak0n    43    

Набор данных Объект в СКД для решения задач сортировки, нумерации и вывода в отчет произвольных наборов данных

Практика программирования v8::СКД 1cv8.cf Бесплатно (free)

Использование набора данных Объект в СКД, может добавить вашему отчету новые интересные возможности. В этой статье я покажу, как я использовал набор данных Объект при решении одной задачи.

04.07.2016    44757    0    lopatin    12    

Опыт оптимизации и контроля производительности в БД с 3000 пользователей Промо

Производительность и оптимизация (HighLoad) Бесплатно (free)

Данная статья написана по материалам доклада, прочитанного на Конференции Инфостарта IE 2014 29-31 октября 2014 года. Меня зовут Сергей, являюсь руководителем отдела оптимизации и производительности систем в компании "Деловые линии". Цель этого доклада – поделиться информацией о нашем опыте работы с большой базой на платформе 1С, с чем пришлось столкнуться, как удалось обеспечить работоспособность. Уверен, что вам будет интересно, так как подобной информацией мало кто делится, да и про само существование таких систем их владельцы стараются не рассказывать, максимум про это «краем глаза» упоминают участвовавшие в проекте вендоры. **update от 04.03.2016 по вопросам из комментариев

05.08.2015    60369    0    Sergey.Noskov    119    

Учет путевых листов

Обработка документов Печатные формы документов Учет рабочего времени Учет ТМЦ Учет рабочего времени Учет ТМЦ v8 v8::УФ 1cv8.cf БУ УУ Абонемент ($m)

Внешняя обработка по учету путевых листов для управляемых форм. Позволяет сохранять во внешнем файле данные об автомобилях, водителях и путевых листах. Позволяет печатать формы №3 и №4-П. Позволяет вести учет задолженностей водителей за бензин и сравнивать расход по норме (по показаниям спидометра) и фактический расход бензина.

3 стартмани

27.06.2016    14128    79    DrugOn    10    

Google Analytics API, Oauth2.0 и 1c8

Практика программирования WEB v8 1С:Франчайзи, автоматизация бизнеса Бесплатно (free)

Обращение к Google Analytics API, Протокол Oauth 2.0 и запросы от 1С:8 без авторизации пользователя

02.05.2016    25628    0    Ольга_tmp    18    

УПД для документа "Поступление товаров и услуг" (БП 3.0) за поставщика

Печатные формы документов Оптовая торговля Производство готовой продукции (работ, услуг) Оптовая торговля Производство готовой продукции (работ, услуг) v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Внешняя печатная форма для документа "Поступление товаров и услуг" позволяет печатать "Универсальный передаточный документ (УПД)" за поставщика в ред. постановления Правительства РФ 1137, 625 и 981

1 стартмани

20.12.2015    22004    273    romanco    18    

Автоматический REST-сервис в «1С:Предприятии». OData. Пример работы из Jscript/AJAX Промо

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

Небольшой обзор REST-сервиса в «1С:Предприятии». Рассмотрен механизм работы c REST-сервером 1С:Предприятия из внешнего приложения - веб-страницы с использованием языка JavaScript и технологии AJAX.

1 стартмани

08.10.2014    76667    75    vano-ekt    48    

Автозаполнение адресов в 1С (API Google autocomplete place)

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье вы увидите пример, как можно с помощью API Google autocomplete place делать подсказки при заполнении адреса

19.10.2015    12913    0    d.alexandr    26    

Использование встроенных отчетов для создания анализа корректности данных при исчислении НДС с авансов полученных

Бухгалтерский учет v8 БП2.0 Россия БУ НДС Бесплатно (free)

На Инфостарте много выложено внешних отчетов, направленных на контроль правильности исчисления НДС с авансов полученных. Хочу поделиться своим опытом использования встроенного отчета (для Бухгалтерия предприятия.Редакция 3.0) и порядка создания настроек отчета для процедур контроля за исчислением НДС с авансовых платежей покупателей, особенно в случаях применения различных налоговых ставок НДС

1 стартмани

22.07.2015    8782    0    lvk74    3    

Дополнительные отчеты и обработки для конфигураций, основанных на БСП. Часть 1. Заполнение объектов.

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

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

1 стартмани

08.01.2015    35071    72    acrk    23    

Создание внешних печатных форм под управляемым приложением с нуля Промо

Печатные формы документов v8 v8::УФ 1cv8.cf Абонемент ($m)

Когда мне пришлось создавать внешние печатные формы под приложения на БСП ("1С: Бухгалтерия предприятия 3.0", "1С: Управление торговлей 11"), я обнаружил, что нет грамотных инструкций. Те, что имелись, использовали так называемые шаблоны: готовые обработки, в которых необходимо выполнять определенные корректировки. Но как создать сам шаблон, конкретных мануалов не было, справочную информацию я нашел на сайте ИТС и, обработав ее, написал статью, где подробно и понятно объясняются все этапы создания внешней печатной формы для управляемого приложения на примере конфигурации "1С: Бухгалтерия предприятия 3.0"

1 стартмани

05.06.2014    263817    391    signum2009    127    

Настройка ТСД chiperLab 8001 для УТ 11

Терминал сбора данных Учет ТМЦ Учет ТМЦ v8 УТ10 УУ Абонемент ($m)

Расширяем функционал ТСД chiperLab 8001 и загружаем сразу 10 документов Сканируйте 10 накладных за один раз!!!

1 стартмани

23.10.2014    24528    21    antonlinux    4    

Работа с принтером чеков Posiflex PP 6000, 7000, 8000

POS терминал Россия Абонемент ($m)

Некоторые варианты для работы с принтером чеков POSIFLEX AURA 6000, 7000, 8000.

1 стартмани

18.08.2014    64702    146    MrFlanker    24    

Подписываем файлы с помощью ЭЦП средствами 1с Промо

Универсальные обработки Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

1 стартмани

05.09.2013    60642    255    anig99    25    

1С Бухгалтерия 8. Часть 1: Настройка параметров учета Промо

Управленческий учет (прочее) v8 БП2.0 Россия БУ Бесплатно (free)

Залогом правильного ведения бухгалтерского и налогового учета в программе 1С Бухгалтерия 8 является правильная настройка параметров учета и учетной политики. Разработчики 1С постарались, чтобы эти настройки были простыми и понятными. Тем не менее, есть ряд подводных камней, о которые могут спотыкаться даже опытные пользователи.

05.11.2011    223363    0    vdi1950    124