Создание асинхронных виджетов

Публикация № 1134615 16.10.19

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

виджет HTTP-сервис асинхронный фоновые задания AJAX

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

Прежде чем начать

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

 
 Это информация из старого блога DevelPlatform.ru

Хоть материал и был создан в далеком 2015 году, но описанные подходы до сих пор применимы при разработке. Конечно, сейчас уже обновилась работа поля HTML-документа и появились некоторые другие крутые возможности платформы 1С, но это в основном частности. Все предложенные способы создания виджетов не единственные, в конце статьи Вы найдете ссылки на связанные публикации с другими работами коллег.

Виджет

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

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

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

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

Мы пойдем другим путем и решим задачу двумя способами:

  • асинхронное обновление виджета с помощью фоновых заданий.
  • асинхронное обновление виджета с помощью AJAX-запросов к HTTP-сервису из поля HTML-документа.

Оба способа имеют плюсы и минусы, которые мы рассмотрим. И так, поехали!

Подготовка

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

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

На форме виджет добавлен в качестве поля HTML-документа, которое используется и для обновления через фоновые задания, и для обновления с помощью AJAX-запросов. Количество активных пользователей определяется по количеству активных сеансов с помощью следующей функции, расположенной в общем модуле "ВиджетыСервер" (серверный, вызов сервера):

Функция ПолучитьКоличествоАктивныхСеансов() Экспорт
	
	// Получаем количество активных сеансов
	КоличествоАктивныхСеансов = 0;
	Попытка
		ТекущиеСоединения = ПолучитьСеансыИнформационнойБазы();
		КоличествоАктивныхСеансов = ТекущиеСоединения.Количество();
	Исключение
		КоличествоАктивныхСеансов = -1;
	КонецПопытки;
	
	Возврат КоличествоАктивныхСеансов;
	
КонецФункции

Кроме этого в конфигурацию добавлен общий макет "ГлавнаяСтраница" с типом HTML-документ, в котором содержится разметка для виджета, а также скрипты для обновления данных с помощью AJAX-запроса.

 
 Разметка страницы в общем макете

Также добавлена общая форма "ВиджетАктивныеСеансы" с помещенным на нее полем HTML-документа, в которое будет помещаться содержимое виджета. Эта форма добавлена в рабочую область начальной страницы, чтобы при запуске сеанса пользователя виджет сразу же открывался. Ничего особенного в ней нет, только полей HTML-документа (см. выше).

Теперь рассмотрим подробнее каждый из способов.

Фоновые задания

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

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

Запуск и отслеживание

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

 
 АсинхронныеВызовы
 
 АсинхронныеВызовыКлиент
 
 АсинхронныеВызовыКлиентГлобальный
 
 АсинхронныеВызовыСервер
 
 ВиджетыСервер

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

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

Перем АктивныеАсинхронныеОперации Экспорт;

Переменная инициализируется как массив, куда при запуске операции добавляется объект "Фоновое задание".

При открытии формы виджета выполняется клиентская процедура:

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

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

&НаКлиенте
Процедура ОбновитьКоличествоАктивныхСеансовНачалоЗавершение(АсинхронныйВызов, 
	Состояние, ВозвращенноеЗначение, ОписаниеОшибки) Экспорт
	
	// Если состояние "Завершен", значит фоновое задание отработало без ошибок
	// и вернуло корректное значение. В противном случае оставляем значение
	// по умолчанию
	КоличествоАктивныхСеансов = "---";
	Если Состояние = "Завершен" Тогда
		КоличествоАктивныхСеансов = ВозвращенноеЗначение;
	КонецЕсли;
	
	// Заменяем часть разметки страницы, подставляя туда
	// полученное значение из фонового задания
	НовоеЗначениеТекстаВиджета = ТекстШаблонаВиджета;
	НачалоРазделаСкриптовСтрока = "<!--Раздел скриптов - Начало-->";
	КонецРазделаСкриптовСтрока = "<!--Раздел скриптов - Конец-->";
	НачалоРазделаЗначениеСтрока = "<!--Активные пользователи - Начало-->";
	КонецРазделаЗначениеСтрока = "<!--Активные пользователи - Конец-->";
	
	НачалоРазделаСкриптов = СтрНайти(НовоеЗначениеТекстаВиджета, НачалоРазделаСкриптовСтрока);
	КонецРазделаСкриптов = СтрНайти(НовоеЗначениеТекстаВиджета, КонецРазделаСкриптовСтрока);
	НовоеЗначениеТекстаВиджета = Сред(НовоеЗначениеТекстаВиджета, 1, НачалоРазделаСкриптов-1)
		+ Сред(НовоеЗначениеТекстаВиджета, КонецРазделаСкриптов+СтрДлина(КонецРазделаСкриптовСтрока), СтрДлина(НовоеЗначениеТекстаВиджета)-КонецРазделаСкриптов+1);
		
	НачалоРазделаЗначение = СтрНайти(НовоеЗначениеТекстаВиджета, НачалоРазделаЗначениеСтрока);
	КонецРазделаЗначение = СтрНайти(НовоеЗначениеТекстаВиджета, КонецРазделаЗначениеСтрока);
	НовоеЗначениеТекстаВиджета = Сред(НовоеЗначениеТекстаВиджета, 1, НачалоРазделаЗначение-1) + 
		Строка(КоличествоАктивныхСеансов) 
		+ Сред(НовоеЗначениеТекстаВиджета, КонецРазделаЗначение+СтрДлина(КонецРазделаЗначениеСтрока), СтрДлина(НовоеЗначениеТекстаВиджета)-КонецРазделаЗначение+1);
		
	// Передаем сформированную HTML-разметку в поле HTML-документа на форме
	АктивныеСеансыВиджет = НовоеЗначениеТекстаВиджета;
	
	// Подключаем обработчик ожидания для повторного запуска
	// асинхронной операции
	ПодключитьОбработчикОжидания("ОбновитьКоличествоАктивныхСеансовНачало", 5, Истина);

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

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

Плюсы и минусы

 
 Плюсы
 
 Минусы

AJAX

AJAX (Asynchronous Javascript and XML) - подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. У нас, конечно, не веб-приложение, но частично применить этот подход все же возможно. Например, в одной из прошлых статей мы уже рассматривали пример создания и использования HTTP-сервиса и там тоже был AJAX.

HTTP-сервис

Основой для работы виджета является HTTP-сервис, возвращающий необходимые данные. Он достаточно простой, никаких сложных алгоритмов и настроек. Для его создания нужно выполнить следующие шаги:

  1. Добавляем HTTP-сервис и настраиваем корневой URL
  2. Создаем шаблон URL
  3. Добавляем GET-метод
  4. Публикуем базу

Листинг обработчика GET-метода приведен ниже:

Функция ActiveUsersget(Запрос)
	
	УстановитьПривилегированныйРежим(Истина);
	
	Ответ = Новый HTTPСервисОтвет(200);
	
	КоличествоАктивныхПользователей = ВиджетыСервер.ПолучитьКоличествоАктивныхСеансов();
	
	// Формируем ответ в формате JSON
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
	ЗаписьJSON.ЗаписатьИмяСвойства("ActiveUsers");
	ЗаписьJSON.ЗаписатьЗначение(КоличествоАктивныхПользователей);
	ЗаписьJSON.ЗаписатьКонецОбъекта();
	СтрокаJSON = ЗаписьJSON.Закрыть();	
	Ответ.УстановитьТелоИзСтроки(СтрокаJSON, "UTF-8");
	
	Возврат Ответ;
	
КонецФункции

И все! Далее создаем сам виджет.

Поле HTML

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

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

Вот так выглядит синтаксис AJAX-запроса на странице:

$.ajax({
    crossDomain: true,
    type: "GET",
    contentType: "application/json;charset=utf-8",
    url: "http://localhost/Exp/hs/DevelPlatform/Users",
    dataType: "json",                
    success: function (queryResult) {
        $("#activeUsersValue").text(queryResult.ActiveUsers - 1);                
    },
    error: function (xhr, ajaxOptions, thrownError) {
        $("#activeUsersValue").text("---");
 
    }
});

Для упрощения адрес указан явно и не настраивается. Если это задача для рабочего окружения, то адрес сервиса обязательно нужно задавать параметрами.

HTTP-сервис возвращает нам JSON-объект с единственным свойством "ActiveUsers". В событии "success", при успешном выполнении запроса, извлекается полученное значение и присваивается элементу <p> на веб-странице. При возникновении ошибок в качестве значения будет присвоена строка "---".

Именно эта реализация демонстрируется на анимации раздела "Подготовка" в самом начале статьи.

Плюсы и минусы

 
 Плюсы
 
 Минусы

Выводы

Лучшим вариантом все же является использование фоновых заданий, ведь работа виджетов в тонком и толстом клиенте критична в большинстве случаев. С появлением WebKit использование AJAX в поле HTML-документа становится возможной, поэтому виджеты с его использованием будут очень эффективными и функциональными.

Предложенные варианты не единственные и не всегда могут подойти. Делитесь своим опытом, будет интересно узнать!

А как виджеты делайте Вы?

Другие ссылки

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. wowik 867 16.10.19 16:50 Сейчас в теме
+1. А файлов для скачивания не будет?
YPermitin; +1 Ответить
2. пользователь 16.10.19 16:51
(1) демонстрация в виде листингов вроде исчерпывающая.

А так нужно делать какую-то демоконфигурацию, выносить все в настройки, чтобы каждый мог у себя развернуть и так далее. То есть это уже сложнее, и больше будет походить на разработку.
vasiliy_b; acanta; Sedaiko; +3 Ответить
3. пользователь 16.10.19 16:54
(1) планирую выложить другие разработки, среди них есть подобный виджет для 1С:Документооборот в виде расширения. Но сроки пока не назову.
4. belyuchenko.ilia 17.10.19 07:11 Сейчас в теме
Но как это работает в отношении безопасности? Я так понимаю HTTP-форма с аякс запросом будет подключаться к веб-сервису независимо от текущей пользовательской сессии? Т.е. для подключения ей потребуется провести аутентификацию отдельно от клиента? Или в 1С это как-то обыграно?
TigerAdmin; YPermitin; +2 Ответить
5. пользователь 17.10.19 07:16
(4) вопрос с аутентификацией можно решить двумя путями:
1. Использовать BASIC-аутентификацию от 1С. Для этого в Ajax-запросе нужно ее использовать:
beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
}

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

2. Можно сделать веб-службу не на 1С и для виджетов использовать ее (например WebApi-приложение на .NET Core). Для авторизации использовать токены. Но это может выглядеть намного сложнее, чем реализация в 1С, но со своими преимуществами. В комментариях такое не описать.
6. belyuchenko.ilia 17.10.19 07:46 Сейчас в теме
Я практически не работал с веб-клиентом, отсюда вопросы...
Выходит, что в веб-интерфейсе нет своих встроенных асинхронных интерфейсных элементов?
К тому же веб-клиент вроде бы использует вызовы через апи типа */e1cib/ и там json тоже используется.
Наверняка можно как то оформить функцию так, чтобы ее можно было вызывать асинхронно через этот интерфейс без необходимости делать это через веб-сервис. К тому же это позволило бы обойтись без отдельной аутентификации.
YPermitin; +1 Ответить
7. пользователь 17.10.19 07:53
(6) возможно, но это скользкий путь.

Веб-клиент не подразумевает кастомизацию и "допилки" могут сломаться с выходом новой платформы.
8. vpaoli 24 17.10.19 14:42 Сейчас в теме
Вот эта ссылка
"рассматривали пример создания и использования HTTP-сервиса"

не открывается
YPermitin; +1 Ответить
9. пользователь 17.10.19 14:45
(8) спасибо, что нашли багу.

Исправил. Тут ссылку продублирую: https://infostart.ru/public/1120823/
10. Vortigaunt 92 18.10.19 10:08 Сейчас в теме
Очень интересный подход. Меня интересует, можно ли применить Ajax в платформе 8.2 да еще так, чтобы этот скрипт вызвал внешнее событие, которое отлавливается платформой?
11. 1c-intelligence 12599 18.10.19 20:28 Сейчас в теме
Юрий, а о подходе "Рабочего стола" к решению этой задачи что думаете?
YPermitin; +1 Ответить
14. triviumfan 37 21.10.19 09:46 Сейчас в теме
15. 1c-intelligence 12599 21.10.19 20:15 Сейчас в теме
12. davdykin 25 21.10.19 07:28 Сейчас в теме
Статья конечно отличная, большое спасибо! Хотелось бы конечно какой-то стабильности от платформы, методы работы с Ajax запросами интересны, но отсутсвие стабильности сильно его губит.
YPermitin; +1 Ответить
13. triviumfan 37 21.10.19 09:40 Сейчас в теме
Наконец-то годнота подъехала!
KAV2; YPermitin; +2 Ответить
16. bobank 199 28.05.20 11:39 Сейчас в теме
А зачем усложняться ajax'ом ? Типовой XMLHttpRequest() может проще? И работать будет всегда. И он так же асинхронен.
17. FreeArcher 149 29.05.20 11:37 Сейчас в теме
Вот AJAX же будет работать только если обращение к 1С идет локально, а если по сети на сервер, JS отвергнет кросдоменный запрос. Так ведь?
18. logarifm 1110 29.05.20 19:18 Сейчас в теме
это не чистые асинхронные вызовы, что должно появится в новых версиях платформ я правильно понимаю?

Асинх; Ждать ... Вот этих примеров хотелось бы ;)
19. Tiger77 69 30.05.20 15:12 Сейчас в теме
В варианте AJAX есть еще один минус - съедается еще одна лицензия 1С каждое подключения веб-сервиса.
Оставьте свое сообщение

См. также

Чистка пользовательских настроек динамического списка после удаления полей

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

20.02.2023    571    dovolos    0    

15

Использование языковой модели GPT3 для создания интерфейса 1С на естественном языке

Работа с интерфейсом Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

Я взял типовую конфигурацию УТ редакции 11.5 Немного доработал запрос к языковой модели GPT-3 и получил возможность обращаться к учетной системе на естественном языке

15.01.2023    9231    mkalimulin    121    

74

Визуализация таблицы значений на управляемой форме

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

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

02.11.2022    1356    bvb    2    

9

Разбор ошибок заполнения реквизитов формы объекта (мой топ-3)

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

30.08.2022    1852    zeltyr    4    

18

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

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

3 500 рублей

{UI/UX} Свой всплывающий информер у элемента формы

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

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

12.08.2022    4545    rpgshnik    36    

81

Динамическая кнопка VS Комбинация клавиш

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

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

08.08.2022    5413    sapervodichka    33    

76

Программный вывод таблицы значений в таблицу на управляемой форме

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

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

15.04.2022    4976    ns_bulatov    5    

11

Восстановление пропавшего меню в интерфейсе с обычными формами без полной чистки кеша

Работа с интерфейсом Платформа 1С v8.3 Украина Бесплатно (free)

Как многим известно, пользователь в обычных формах может убрать любую панель из интерфейса так, что восстановить ее можно только чисткой кеша. Но как быть, если кеш жалко :?

21.12.2021    1582    bulpi    4    

13

Программный интерфейс для доработки форм

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

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

25.11.2021    6354    AtamanovYS    19    

119

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

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

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

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

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом)... То вам - сюда.

08.10.2021    3543    e-9    13    

21

Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок

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

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    4478    biimmap    9    

51

Перенос расшифровки в пользовательские настройки

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Как перенести данные расшифровки в пользовательские настройки.

11.08.2021    1050    scientes    1    

9

Изменение размера картинок "на лету" с помощью NGINX

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Пример использования nginx и image_filter для сжатия картинок.

26.05.2021    2866    malikov_pro    21    

29

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

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

Динамический список и поиск... неприятностей

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Страх и ненависть в поиске по динамическому списку, или "Кое-что о неоптимальном отборе".

17.03.2021    10387    Yashazz    37    

50

Пример работы с диаграммой Ганта в 1С

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Пример работы с очень нужным и важным, по моему мнению, объектом в 1С «Диаграммой Ганта».

24.02.2021    13216    JIEX@    4    

32

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

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

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

30.11.2020    15170    SizovE    6    

45

[mobile] Переносим HTML интерфейс на 1С

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

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020    12996    leobrn    82    

105

Быстрая кодогенерация программной доработки форм

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

12.10.2020    3038    huxuxuya    29    

21

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

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

Цветовая схема конфигуратора в стиле OneScript

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

Цветовая схема конфигуратора 1С максимально приближенная к стандартной цветовой схеме OneScript в VS Code.

01.10.2020    2127    DmitrySinichnikov    4    

11

Рендеринг элементов управляемого интерфейса

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

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020    4922    kalyaka    5    

39

[Общий модуль] Динамическое формирование интерфейса

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

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

28.08.2020    28487    rpgshnik    87    

275

Медленно формируются отчеты в БП 3, способ исправления

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

При формировании любых отчетов, но в особенности оборотно-сальдовой ведомости в бухгалтерии 3, очень долго формировался отчет, ПОЯВЛЯЛСЯ ЖЕЛТЫЙ КОТ, разумеется у бухгалтера невроз, да и у меня тоже. Что только ни делал: тестирование и исправление с пересчетом итогов, настройка SQL, отключение фоновых заданий, обновление платформы и конфигурации, а толку нет, регламентные операции по скулю тоже сделал. И что же сделал, а вот что:

21.07.2020    4882    VID1234    10    

10

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

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

от 11 рублей

Программное открытие отчета

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

28.06.2020    9543    da_1c    4    

9

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    165318    user5300    37    

276

Форма выбора для реквизита с составным типом данных

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

11.03.2020    10644    rule_2    6    

20

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

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

4500 рублей

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

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

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

18.02.2020    8286    randomus    20    

75

[Шпаргалка] Предустановка типа для составного реквизита

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

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

18.02.2020    12717    rpgshnik    6    

25

СКД. Шаг 3. Используем макеты для оформления отчета

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

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

13.01.2020    67184    aximo    23    

195

Добавление собственного поля и состояния в настройки доступности по состоянию в 1С:Документооборот

Работа с интерфейсом Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

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

30.12.2019    8874    pavelpribytkin96    2    

23

Добавление собственного виджета в 1С:Документооборот

Работа с интерфейсом Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

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

14.12.2019    7418    pavelpribytkin96    2    

34

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

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

[СКД] Вывод картинки в результат любого отчета на СКД

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

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    15615    John_d    17    

119

Лайфхаки 1С. Настройка списков (Часть 3)

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

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

03.12.2019    28787    VachKirp    14    

22

В новой платформе пропала кнопка "Печать". Имитируем БСП

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

"Приятным" сюрпризом для многих пользователей 1С стало то, что при обновлении платформы (начиная с 8.3.15) полностью поменялся интерфейс. Можно долго спорить о целесообразности этого новшества, но самым главным минусом стало то, что пропали стандартные кнопки на панели инструментов. Разработчики предполагают повсеместное использование БСП, но что делать тем, кто давно и успешно использует самописные конфигурации, в которых формирование печатной формы происходит по ТабДок.Показать(), и не желает их "утяжелять"? Добавим общую форму с нужными нам кнопками.

03.12.2019    12080    Vlan    44    

24

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

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

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

12.11.2019    20666    John_d    29    

122

Локализация интерфейсов конфигураций. Практика и инструментарий 1Ci

Работа с интерфейсом Локализация решений Платформа 1С v8.3 Бесплатно (free)

В последнее время компания 1С International все увереннее заявляет о себе на международном рынке. Но для успешного продвижения в этом направлении необходима локализация интерфейсов конфигураций 1С. О том, как выглядит процесс перевода, какие инструменты для этого есть, где брать переводчиков и как проверять их работу, на конференции Infostart Event 2018 Education рассказал руководитель группы локализации компании 1Ci Сергей Поликарпов.

05.11.2019    7291    user1069006    2    

15