Отслеживание выполнения фонового задания

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

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

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

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

Ниже несколько ссылок по фоновому выполнению кода:

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

Второй и третий варианты хорошие, в них используется функционал БСП для отслеживания хода выполнения задания:

НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтаФорма);
НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина;
НастройкиОжидания.ВыводитьСообщения = Истина;
НастройкиОжидания.ТекстСообщения = НСтр("ru = 'Выполняется обработка данных.'");
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Неопределено, НастройкиОжидания);

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

Возьмем понемногу из всех вариантов, описанных выше, и получим следующее решение:

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

Для запуска фонового задания используем метод из БСП ДлительныеОперации.ВыполнитьВФоне.

Для отслеживания хода выполнения создадим на форме обработки два элемента управления: Прогресс и Тестовое поле.

Также будем выводить сообщения пользователю, которые были сформированы в фоновом задании, это очень удобно.

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

Это можно сделать несколькими способами:

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

Будем пользоваться первым способом используя методы БСП:

  • ДлительныеОперации.СообщитьПрогресс
  • ДлительныеОперации.ПрочитатьПрогресс
  • ДлительныеОперации.СообщенияПользователю

Ниже привожу тексты модуля обработки и модуля формы:

Обработка выполнения в фоне

 

Тексты процедур модуля обработки

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

Создаем одну команда для открытия формы, вторую для выполнения в фоне.

Не забудьте указать версию БСП. Если ее не указать, запуск процедуры модуля обработки с указанием структуры параметров работать не будет.

Процедура ЗадержкаПоВремени(Время)
   
   Дата = ТекущаяДата()+Время;
   Пока Дата > ТекущаяДата() Цикл
   КонецЦикла;	
	
КонецПроцедуры	

Процедура ВыполнитьКоманду(Идентификатор, Параметры) Экспорт
	
   Если Идентификатор = "ВыполнениеВФоне" Тогда

      ДатаНачала = Параметры.СтруктураДанных.ДатаНачала;
      ДатаОкончания = Параметры.СтруктураДанных.ДатаОкончания;

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

Функция ПолучитьСписокДокументовНаСервере(ТекДата)
	
   Запрос = новый Запрос("ВЫБРАТЬ
	                      |	ТоварыОрганизаций.Регистратор КАК Документ,
	                      |	ТоварыОрганизаций.Период КАК Период
	                      |ИЗ
	                      |	РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций
	                      |ГДЕ
	                      |	ТоварыОрганизаций.Период >= &ДатаНачала
	                      |	И ТоварыОрганизаций.Период <= &ДатаОкончания
	                      |
	                      |СГРУППИРОВАТЬ ПО
	                      |	ТоварыОрганизаций.Регистратор,
	                      |	ТоварыОрганизаций.Период
	                      |
	                      |УПОРЯДОЧИТЬ ПО
	                      |	Период");
	
   Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекДата));
   Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ТекДата));

   Результат = Запрос.Выполнить();
   СписокДокументов = Результат.Выгрузить();
	      
   Возврат СписокДокументов;
	 
КонецФункции

Функция ПерепровестиДокументы(ТекДата, КоличествоДней)
	
   ДокументыДляПроведения = ПолучитьСписокДокументовНаСервере(ТекДата);
	
   ТекущийДокумент = 0;
   ВсегоДокументов = ДокументыДляПроведения.Количество();
	
   Для каждого СтрокаТЗ Из ДокументыДляПроведения Цикл
		
      ДокументОбъект = СтрокаТЗ.Документ.ПолучитьОбъект();
	
      Попытка
         ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
      Исключение
         ДлительныеОперации.СообщитьПрогресс(-1, "Ошибка проведения документа: " + ДокументСсылка);
         Возврат Истина;
      КонецПопытки;
		
      ТекущийДокумент = ТекущийДокумент + 1;
      Если НЕ (ТекущийДокумент % 5) Тогда
         ДлительныеОперации.СообщитьПрогресс(Формат(ТекущийДокумент/ВсегоДокументов*100, "ЧЦ=3; ЧДЦ="), "Выполняется проведение документа: " + ДокументСсылка);
      КонецЕсли;			
		
   КонецЦикла;	
   Возврат Ложь;
	
КонецФункции

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

 

Тексты процедур модуля формы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

Если обработка открыта из списка внешних отчетов и обработок базы, свойство «ДополнительнаяОбработкаСсылка» будет заполнено. Если открываем обработку как внешнюю, ищем сохраненный вариант в базе.
 

&НаСервере
Функция НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор)
	
   ПараметрыПроцедуры = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, СтруктураДанных");
   ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
   ПараметрыПроцедуры.ИдентификаторКоманды          = ВыполняемаяКоманда.Идентификатор;
   ПараметрыПроцедуры.СтруктураДанных               = ВыполняемаяКоманда.СтруктураДанных;
	
   НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
   НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр("ru = 'Выполнение перепроведения документов'");
	
   Возврат ДлительныеОперации.ВыполнитьВФоне("ДополнительныеОтчетыИОбработки.ВыполнитьКоманду", ПараметрыПроцедуры, НастройкиЗапуска);
	
КонецФункции

&НаКлиенте
Процедура ПерепровестиДокументы(Команда)
	
   СтруктураДанных = новый Структура;
   СтруктураДанных.Вставить("ДатаНачала", ДатаНачала);
   СтруктураДанных.Вставить("ДатаОкончания", ДатаОкончания);
	
   // выполнить команду в фоновом режиме
   ВыполняемаяКоманда = Новый Структура("Ссылка, Идентификатор, СтруктураДанных", ДополнительнаяОбработкаСсылка, "ВыполнениеВФоне", СтруктураДанных);
   ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, Новый УникальныйИдентификатор);
	
   ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
   ПодключитьОбработчикОжидания("ПроверитьПрогрессВыполнения", 0.3, Истина);

КонецПроцедуры

Создаем фоновое задание, передаем в него параметры по периоду. Сохраняем идентификатор задания в реквизите формы и создаем обработчик ожидания.

&НаКлиенте
Процедура ПроверитьПрогрессВыполнения()

   СтруктураДанныхВыполнения = ОбновитьПрогрессНаСервере(ИдентификаторЗадания);
	
   Если СтруктураДанныхВыполнения.Свойство("ПроцентВыполнения") Тогда 
      ПроцентВыполнения = СтруктураДанныхВыполнения.ПроцентВыполнения;
   КонецЕсли;
	
   Если СтруктураДанныхВыполнения.Свойство("СостояниеВыполнения") Тогда
      СостояниеВыполнения = СтруктураДанныхВыполнения.СостояниеВыполнения;
   КонецЕсли;	
	    	
   Если НЕ СтруктураДанныхВыполнения.ЗаданиеВыполнено Тогда
      ПодключитьОбработчикОжидания("ПроверитьПрогрессВыполнения", 0.3, Истина);
   КонецЕсли;	

КонецПроцедуры // ПроверитьПрогрессВыполнения()

&НаСервереБезКонтекста
Функция ОбновитьПрогрессНаСервере(ИдентификаторЗадания)
	
   СтруктураДанныхВыполнения = новый Структура;
   ЗавершитьЗадание = Ложь;

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

   Если ЗавершитьЗадание Тогда
      ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
      СтруктураДанныхВыполнения.Вставить("ЗаданиеВыполнено", Истина);
   КонецЕсли;
	
   Возврат СтруктураДанныхВыполнения;
	
КонецФункции

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

Если задание не выполнено, подключаем опять обработчик ожидания. Если в задании была ошибка при проведении документа «РезультатВыгрузки.Процент = -1», закрываем его принудительно. На всякий случай, так как оно и так должно закрыться через секунду.

&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
	
   ДатаНачала = Период.ДатаНачала;
   ДатаОкончания = Период.ДатаОкончания;
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаНачаллаПриИзменении(Элемент)
	
   Период.ДатаНачала = ДатаНачала;
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
	
   Период.ДатаОкончания = ДатаОкончания;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗавершитьВыполнениеНаСервере(ИдентификаторЗадания)
	
   ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗавершитьВыполнение(Команда)
	
   ЗавершитьВыполнениеНаСервере(ИдентификаторЗадания);
   ПроцентВыполнения = 0;
   СостояниеВыполнения = "Выполнение прервано пользователем!"
	
КонецПроцедуры

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

Вот и все, получаем отслеживание работы фонового задания непосредственно в форме обработки.

Можно продолжить развивать данную тему, и реализовать многопоточность. Например перепроведение документов в потоках. Это может ускорить процесс в пять или более раз! Если эта тема интересна, напишите пожалуйста в комментариях.

До новых встреч!

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

Комментарии
Избранное Подписка Сортировка: Древо
1. mi1man 326 17.08.19 10:55 Сейчас в теме
Спасибо. Тема про "многопоточность" интересна .. буду ждать продолжения)
15. PowerBoy 2950 24.10.19 11:33 Сейчас в теме
(1) Кому интересна тема многопоточности и хочет поэкспериментировать можете воспользоваться обработкой
PowerTools (https://infostart.ru/public/167865/). Умеет запускать в многопоток как различные операции обработки данных, так и произвольный код. Умеет распределять потоки по выбранным полям таблицы.
2. Xershi 894 17.08.19 17:05 Сейчас в теме
Действительно, плохо искали. Мало того имея БСП 2.3 с доработкой или 2.4 уже можно не рисовать на форме элементы а выводить прогресс отдельно и многопоточность тоже уже реализована! А перепроведение как уже говорилось не подойдет, потому что оно будет накладывать взаимоблокировки. Придется и их учесть при написании кода, что усложнит алгоритм на порядок.
4. ids79 5040 17.08.19 21:53 Сейчас в теме
(2)Многопоточность сама по себе ничего сверхестественного из себя не представляет. Интересен как раз сам механизм разбиения данных на блоки для выполнения в разных потоках. То-есть выделять группы документов, которые не будут мешать друг другу при проведении.
logarifm; +1 Ответить
3. aximo 1389 17.08.19 18:48 Сейчас в теме
Дмитрий, ты молодец! интересные вещи пишешь!
5. ids79 5040 17.08.19 21:54 Сейчас в теме
6. logarifm 1069 18.08.19 10:24 Сейчас в теме
Можно добавить лепту? Если операции действительно длительные то для оптимизации можно бы подумать в сторону "шага процента" чтобы не долбить проверками каждые 0.3 секунд.
8. ids79 5040 19.08.19 10:05 Сейчас в теме
(6)В принципе, можно увеличить это время, так как все равно данные отправляются после каждого пятого документа.
7. borodatii 2 19.08.19 08:29 Сейчас в теме
Про многопоточное проведение вот тут достаточно подробно рассказано: https://infostart.ru/public/1102042
9. ids79 5040 19.08.19 10:06 Сейчас в теме
(7)Да, я тоже привел ссылку на эту статью в публицации
10. borodatii 2 19.08.19 12:58 Сейчас в теме
(9) оу, невнимательно прочитал, смотрел больше на код...
11. Darklight 21 19.08.19 13:18 Сейчас в теме
Мне кажется не очень хорошей идея - проверять прогресс каждые 0.3 сек через серверные вызовы. Ну тут можно долго спорить на тему оптимизации клиент-серверного взаимодействия, но от серверных вызовов тут никак не уйти (ну разве что всё взаимодействие не вынести во внешнюю Native-компоненту, которая будет подключена и в фоновом процессе и в клиенте, и будет производить обмен сообщениями через свой канал, например через TCP - но тут сложно искать универсальное решение), иначе всё сведётся лишь к увеличению периода опроса сервера
12. ids79 5040 19.08.19 15:19 Сейчас в теме
(11)Ну да, вариантов взаимодействия много, некоторые я привел в статье. Это не все, естественно.
Спасибо за дополнение
13. DonAlPatino 137 20.08.19 11:40 Сейчас в теме
Немножко не в тему, но коль про многопоточность заговорили ... а в oscript можно ее как-то организовать и результаты в главную программу вернуть? Что-то не нашел ничего на вскидку...
14. ids79 5040 20.08.19 13:03 Сейчас в теме
16. qbdp 29.10.19 15:00 Сейчас в теме
Ещё как вариант - использовать временный файл. Записывать в фоновом задании, а затем через вызов сервера (в сеансе пользователя) его читать.
Оставьте свое сообщение

См. также

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    7301    John_d    21       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

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

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

Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".

1 стартмани

27.12.2019    3176    7    1sig    12       

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

Статья Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 КА2 Абонемент ($m) Обработка документов Практика программирования

Дальнейшее развитие темы фоновой обработки данных - проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

1 стартмани

17.09.2019    5759    7    ids79    46       

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

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

Агрегатные функции СКД, о которых мало кто знает

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

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    23957    ids79    45       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

Обмен данными. Консистентность vs Многопоточность

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Интеграция

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    6523    m-rv    1       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

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

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    33009    ids79    36       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

25.07.2019    23601    4    AlbinaAAA    24       

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

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

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

25.06.2019    31653    ids79    17       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом БСП (Библиотека стандартных подсистем)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    26036    YPermitin    51       

Выгрузка документа по условию

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    9276    m-rv    2       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

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

от 13000 рублей

Как настроить правильную техподдержку (helpdesk, service desk на коленке)

Статья Программист Бизнес-аналитик Руководитель проекта Нет файла v8 УУ Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Бесплатно (free) Управление услугами и сервисом

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

24.04.2019    11533    siddy    0       

Преобразование EXCEL в таблицу значений без COM и других извращений

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Загрузка и выгрузка в Excel

Получение таблицы значений из excel в 1С v8, без COM, внешних источников данных и т.д. EXCELВТаблицуЗначений() - За 10 строчек кода! Реализация протестирована на 1С 8.3.12.1714 (x64).

18.04.2019    18209    9    Eret1k    43       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    12403    m-rv    16       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

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

Копирование числовых ячеек из 1С в Excel

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

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

15.01.2019    15561    itriot11    21       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    51578    GeterX    95       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    26292    ids79    40       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

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

5500 рублей

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Инструментарий разработчика Управление проектом

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    47261    stas_ganiev    73       

Вспомогательные инструкции в коде 1С

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

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

15.10.2018    23729    tormozit    100       

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

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

Из Excel в 1С запросом

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Загрузка и выгрузка в Excel

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

14.08.2018    16461    m-rv    5       

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

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

Повышаем эффективность разработки правил обмена

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    23185    olegtymko    47       

Как сделать запрос на изменение данных

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    24611    m-rv    21