Своя индикация длительной операции во внешней обработке

Публикация № 936608 05.11.18

Разработка - Работа с интерфейсом

Дополнительная обработка индикация процесса фоновое задание

Описан способ организации собственной индикации длительной операции для внешних обработок для БСП версии 2.4 и выше

Всех привет !! 

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

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

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

Если внимательно посмотреть код запуска длительной операции для дополнительной обработки (Общий модуль ДополнительныйОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне) , то там можно увидеть следующее

Процедура ВыполнитьКомандуВФоне(Знач ИдентификаторКоманды, Знач ПараметрыКоманды, Знач Обработчик)   

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

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

Тут нас интересует структура НастройкиОжидания. Она получается функцией из общего модуля  ДлительныеОперацииКлиент.ПарметрыОжидания (). Вот ее код : 

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

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

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

К сожалению, по умолчанию,  для дополнительных обработок предусмотрен только вывод окна с котиком (за это отвечает поле ВыводитьОкноОжидания структуры НастройкиОжидания ) , поэтому для изменения механизма оповещения необходимо скопировать метод общего модуля ДополнительныйОтчетыИОбработкиКлиент.ВыполнитьКомандуВФоне к себе в обработку в модуль формы и сделать нужные изменения 

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

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

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

Осталось только написать свою процедуру обработки процесса выполнения я например сделал так 

&НаКлиенте
Процедура ПрогрессВыполнения(Результат, ДополнительныеПараметры) Экспорт

        
   Если Результат.Статус = "Выполняется" или Результат.Статус = "Выполнено" Тогда
                 
         Прогресс = Результат.Прогресс;
	 
	  
          Если Прогресс <> Неопределено Тогда  
			  
			  Индикатор = Прогресс.Процент; // Индикатор - полей Индикатор на форме
			  ТекстСопровождения = Прогресс.Текст; // поле надпись на форме
			  
		 КонецЕсли;
		 
    
   КонецЕсли;
	

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

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

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

Наименование Файл Версия Размер
Шаблон внешней обработки с возможностью реализации собственной индикации процесса

.epf 7,80Kb
38
.epf 7,80Kb 38 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. herfis 474 05.11.18 10:16 Сейчас в теме
А БСП 2.4 зачем? Что они там опять поменяли?
Я аналогичную фигню для 2.2/2.3 делал, причем без копирования общих модулей и допилок. Правда давно было, подробностей уже не помню :)
2. vadim1011985 95 05.11.18 11:07 Сейчас в теме
(1) Если честно не сильно вникал что там поменялось (просто смутило то что на its.1c для версия БСП 2.3 и БСП 2.4 немного по разному было описан механизм запуска фоновых заданий для дополнительных обработок), возможно и для БСП 2.3 будет работать , на счет копирования - копируется всего одна функция общего модуля к себе в обработку , дописывается 2 строчки и пишется процедура обработчик прогресса и все - не надо думать как передать результат с сервера на клиент , как как получить фоновое задание для проверки,его выполнения, на нужно писать подключаемые обработчики для проверки выполнения фонового задания или для считывания прогресса - все это уже реализовано.
По мне так это очень простой и эффектный способ решения , ради которого можно потратить 2 минуты (или меньше) своего времени и скопировать процедуру к себе в обработку.
3. herfis 474 05.11.18 11:46 Сейчас в теме
(2) Согласен. Усилий минимальное количество. Плюсанул.
12. Franchiser 47 10.11.18 20:27 Сейчас в теме
(2) не понял из статьи: на основании чего рассчитывается прогресс, откуда известно сколько данных в выборке будет обработано в фоновом задании? Нужно как-то описывать расчет прогресса?
13. vadim1011985 95 10.11.18 21:55 Сейчас в теме
(12) Да, подсчет прогресса вы организовываете сами при выполнении длительной операции . В модуле объекта обработки должны быть процедура ВыполнитьКоманду в который Вы описываете ваш алгоритм длительной операции (например создание документов по данным из файлов ) и в любом месте Вы можете вызвать метод ДлительныеОперации.СообщитьПрогресс где будуту передавать прогресс выполнения либо текст например так

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыВыполнения) Экспорт
	
	ДлительныеОперации.СообщитьПрогресс(5,"Начало загрузки");
	
	ТабЗагрузки.Очистить();
	НайденныеФайлы = НайтиФайлы(ПараметрыВыполнения.Каталог,"*.csv",);
	
	 Обработано = 0;
	
		Для каждого ТекФайл Из НайденныеФайлы Цикл
			
		
			ТекстСопровождения = "Обработано "+Обработано+ " из "+НайденныеФайлы.Количество();
			
			ПроцентОбработки = Цел(Обработано/НайденныеФайлы.Количество()*100);
			
			ДлительныеОперации.СообщитьПрогресс(ПроцентОбработки,ТекстСопровождения); 
			ПрочитатьФайл(ТекФайл.ПолноеИмя,ПроцентОбработки);
		КонецЦикла;
		
КонецПроцедуры

Процедура ПрочитатьФайл(ТекИмяФайла,ТекущийПроцент) Экспорт
....
....
.....

ТекстСообщения = "Читаем файл  "+ ТекИмяФайла;

ДлительныеОперации.СообщитьПрогресс(ТекущийПроцент, ТекИмяФайла);
КонецПроцедуры

Показать
VKuser131932956; Franchiser; +2 Ответить
14. Franchiser 47 11.11.18 15:56 Сейчас в теме
4. Xershi 1384 05.11.18 11:51 Сейчас в теме
Отличная статья, чуть раньше разбирался по https://infostart.ru/public/842660/.
Но автор опустил много подробностей, которые существенно влияют на разработку.
Как я там комментировал, то прогресс через БСП не реализуется. Нужна своя индикация в виде элементов или можно передавать в процедуру состояние.
5. vadim1011985 95 05.11.18 12:01 Сейчас в теме
(4) Указал ссылку на мою же статью )))
6. Xershi 1384 05.11.18 12:04 Сейчас в теме
(5) не смотрел на автора. А для чего было дублировать статью?) Я думаю стоит указать там ссылку на шаблон!
7. vadim1011985 95 05.11.18 12:05 Сейчас в теме
(6) нет, ты не понял ты указал ссылку на ЭТУ статью
8. Xershi 1384 05.11.18 12:11 Сейчас в теме
9. vadim1011985 95 05.11.18 13:32 Сейчас в теме
(4)
то прогресс через БСП не реализуется. Нужна своя индикация в виде элементов или можно передавать в процедуру состояние.


Опять же , если смотреть в типовой конфигурации , там тоже проценты прогресс выводится через элементы формы
10. Xershi 1384 05.11.18 13:38 Сейчас в теме
(9) есть форма прогресса без процентов, с кружочком, туда можно запихнуть статический текст и кружок будет крутиться. А прогресс отдельно на форме что ли будет выводиться в типовом варианте? Это через сообщить прогресс?
11. vadim1011985 95 05.11.18 13:58 Сейчас в теме
(10) Нет , имеется ввиду что на форме просто размещается поле Индикатор в котором выводится прогресс, для примера можно посмотреть типовую обработку - ВыполнениеОбменаДанными. т.е. сами 1с-ки используют элементы формы для отображения прогресса, по сути это и есть БСП с помощью СообшитьПрогресс передать информацию о ходе выполнения операции и графически отобразить ее с помощью поля индикатор
Прикрепленные файлы:
A_Max; Xershi; +2 Ответить
15. Date 8 27.03.19 10:21 Сейчас в теме
Добрый день.
Скачал вашу обработку. Что то не взлетает шаблон у меня.
Добавил индикатор на форму. Процедуру ПрогрессВыполнения() вставил вашу.
Но ничего не происходит. И отладить не понятно как внешнюю обработку добавленную во внешние отчеты и обработки.
Если через файл открывать, то отладить конечно можно, но код вообще тогда не работоспособен.
Не понимаю, что не так.

Раньше делал через фоновое задание: Сообщение пользователю - ПолучитьСообщенияПользователю, но использовал общий модуль.
Захотелось, что бы весь код был в модуле обработки + на БСП, но, что то понять не могу что не так.

Может быть нужно еще что то прописать?
16. vadim1011985 95 27.03.19 11:38 Сейчас в теме
(15) можете прислать Вашу обработку я посмотрю что не так
17. Date 8 27.03.19 12:05 Сейчас в теме
(16)Напишите пожалуйста почту, я не вижу ее в профиле.
18. Date 8 28.03.19 05:41 Сейчас в теме
(17)Спасибо, действительно дело было в установленном параметре запуска: "РежимОтладки ".
Оставьте свое сообщение

См. также

Передача нескольких файлов на сервер

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

11.04.2023    422    mmtv68    0    

7

Вырожденное состояние и сложность в интерфейсе

Работа с интерфейсом Платформа 1С v8.3 Абонемент ($m)

На примере вырожденного состояния из одного параметра дается представление о рождении сложности интерфейсного представления объекта.

1 стартмани

19.12.2022    564    kalyaka    9    

3

Модель состояния для MVC

Работа с интерфейсом Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    1478    kalyaka    2    

15

Настройка колонок для вывода в отчет

Работа с интерфейсом Система компоновки данных Конфигурации 1cv8 Украина Абонемент ($m)

Иногда возникает задача вывести в отчет по запросу не все колонки, а только определенные.

1 стартмани

12.07.2020    6318    user847462    2    

1

Сохранение настроек колонок

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

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

1 стартмани

10.07.2020    2771    Arc    1    

5

Управление состоянием для шаблона MVC и работы с данными объекта

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.03.2020    5089    kalyaka    35    

34

Как в 1С создать паутинку "как на Инфостарте"

Работа с интерфейсом Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Добрый день, уважаемы коллеги! В этой статье я расскажу, как в 1С создать отчет - "паутинку" на примере отчета по компетенциям сотрудника (разрабатывала на платформе 1С:Предприятие 8.3 (8.3.13.1865).

1 стартмани

15.01.2020    11060    user660153_aleks.pisanets    19    

67

Генерация управляемой формы на основе обычной (proof of concept)

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

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

1 стартмани

06.11.2019    12988    user700211_a.straltsou    29    

28

"Живые" картинки со Snap.SVG

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    16577    blackhole321    7    

94

Еще один способ программной модификации управляемых форм

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

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

1 стартмани

03.09.2019    5652    infosoft-v    15    

14

Изменяющееся контекстное меню в 1С 8.3

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Абонемент ($m)

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

1 стартмани

06.08.2019    30360    signum2009    16    

67

Как вывести в СКД две независимые таблицы, объединенные одним полем

Работа с интерфейсом Система компоновки данных Абонемент ($m)

Надо вывести в отчет на СКД 2 таблицы, которые содержат различные данные, объединяемые одним полем. Количество строк в каждой таблице может быть произвольным. Если выводить с помощью обычного соединения таблиц, то мы получим перемножение строк. Чтобы его избежать обычно используются циклы. Но в данной статье мы разберемся как это сделать только средствами СКД.

1 стартмани

06.06.2019    9963    swimdog    13    

13

Легкий "тюнинг" УТ 10.3

Работа с интерфейсом Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Абонемент ($m)

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

1 стартмани

15.03.2019    5928    pm74    6    

9

Раскрашенный log-файл без HTML и СМС (используем Форматированный документ в личных целях)

Оптовая торговля Работа с интерфейсом Оперативный учет 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Абонемент ($m)

Иногда пользователям отдается на откуп загрузка каких то данных, результат загрузки которых желательно раскрасить если и не всеми цветами радуги, то хотя бы светофором. Один из вариантов – это использовать Форматированную строку. Следите за руками:

1 стартмани

08.02.2019    3671    kembrik    2    

3

HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Тестируем возможности HTML в новой версии 8.3.14 платформы на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX.

1 стартмани

29.01.2019    34626    Synoecium    46    

215

Поиск по дереву значений рекурсией, методом НайтиСтроки(), с помощью СКД. Вывод результата поиска в отдельную таблицу. Активация строки в дереве значений при выборе в таблице

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

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

1 стартмани

29.10.2018    21184    Vyacheslav_Kochnev    5    

27

Основы компьютерной графики (Часть 2)

Математика и алгоритмы Работа с интерфейсом Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

03.08.2018    7015    HAMMER_59    13    

14

Основы компьютерной графики

Математика и алгоритмы Работа с интерфейсом Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

30.07.2018    8834    HAMMER_59    39    

25

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

Работа с интерфейсом Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

19.06.2018    17746    kalyaka    41    

89

Мухи отдельно, котлеты отдельно. Еще раз про HTML и JavaScript

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Это еще одна статья про документ HTML и JavaScript. Уклон сделан на организацию хранения HTML документа и скриптов а так же на подключение скриптов к документу.

1 стартмани

08.06.2018    15743    infosoft-v    21    

42

Гиперссылка в табличной части управляемых форм

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

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

1 стартмани

23.05.2018    28169    pyrkin_vanya    3    

51

Условное оформление горизонтальных итогов без использования макетов

Работа с интерфейсом Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Способ условного оформления горизонтальных итогов без использования макетов и программной постобработки результата компоновки.

1 стартмани

14.03.2018    24337    nreisende    19    

141

Шаблон MVC для управляемого интерфейса

Работа с интерфейсом Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Мы воспринимаем как что-то само собой разумеющееся интуитивно понятный интерфейс, мгновенно реагирующий на наши клики, подстраивающийся под уже сделанный нами выбор. А между тем за этой возможностью - решение серьезных алгоритмических задач. В общем случае решения этих задач уже найдены, но проблема их конкретного применения остается как для выбранного окружения (веб-браузер, экран мобильного телефона, компьютер), так и возможностей языка программирования. В следующей статье представлено одно из таких применений общего решения на основе шаблона MVC для 1С в сочетании с возможностями управляемых форм и декларативного описания интерфейса.

1 стартмани

14.03.2018    22452    kalyaka    37    

80

Варианты отображений свертываемых групп

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Как пользователю только одним внешним видом сказать "Тут есть нужные данные. Только нажми". Используем разные варианты свертываемых групп.

1 стартмани

19.12.2017    26967    Kim1C    14    

56

Отображение файла на управляемой форме

Работа с интерфейсом Управляемые формы 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Отображение локальных файлов и файлов справочника "НоменклатураПрисоединенныеФайлы" на управляемой форме с помощью поля HTML документа.

1 стартмани

01.11.2017    16261    Vyacheslav_Kochnev    30    

103

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

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

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

1 стартмани

08.10.2017    33829    json    10    

112

Условное оформление таблицы управляемой формы

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

17.05.2013    43355    akomar    6    

24

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

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

07.11.2012    38092    NittenRenegade    12    

35

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

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Статья о том как открывать формы отчетов с параметром "Отбор" (платформа, на которой проводилось тестирование- 8.2.16).

1 стартмани

03.10.2012    20349    olches    11    

89

1С:Предприятие 8.2. Управляемая Форма. Меняем иконку рабочего стола.

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

28.09.2012    32237    ghostaz    39    

65

Красивое отображение графиков (диаграмм) на базе highcharts

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

17.08.2012    63173    Dimasik2007    98    

168

Редактирование текстов интерфейса …

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Редактирование текстов интерфейса … (перевод интерфейса конфигурации на другой язык английский – немецкий – китайский – японский и многие другие). У вас есть стандартная конфигурация, в которой надо перевести интерфейс на другой язык, легко! А вот со справкой придется немного помучаться. Просьба не путать с данными, которые хранятся в реквизитах объектов.

1 стартмани

26.06.2012    42863    Iaskeliainen    39    

96

Приятная глазу цветовая схема 1С 8.х

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Несколько цветовых схем для встроенного языка 1С, которые минимизирует нагрузку на глаза, за счет чего повышается производительность!

1 стартмани

26.03.2012    82094    NDM    127    

386

Вывод изображений в системе компоновки данных и отчётах

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

19.03.2012    4885    igorvs66    1    

15

Сохранение/восстановление настроек динамического списка

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

29.07.2011    41058    Stepa86    31    

67

Оповещения пользователям об изменении конфигурации

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

20.08.2010    20638    opx    24    

29

Стандартная "Настройка периода" в отчетах на базе СКД

Работа с интерфейсом СКД Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

31.12.2009    13419    yuraskas    8    

15

Вывод дополнительной информации - ИНН и адреса контрагента - в список значений при вводе по строке

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Когда в информационной базе много контрагентов, пользователи при заполнении реквизитов форм документов активно используют понравившуюся им функцию «ввод по строке» Это ускоряет ввод большого объема информации за счет эффективного использования клавиатуры и уменьшения нагрузки на базу. Бывают случаи, когда существует очень много контрагентов с одинаковыми наименованиями, то просто невозможно быстро выбрать нужного из списка, так как код в скобках не несет смысловой нагрузки. Хотя возможен ввод по ИНН, но он не получил широкого распространения из-за сравнительно большой длины ИНН и психологического неприятия ввода рутинных операций. По этой причине представляется интересным решение, позволяющее выводить дополнительно в списке информацию об ИНН контрагента и его адресе. Пример программной реализации обработчика для конфигурации Управление торговлей 8.1 релиз 10.3.8.9, продемонстрирован в присоединенном к данной статье файле.

1 стартмани

05.12.2009    14886    its    9    

15