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

28.04.26

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Используем поле HTML-документа в качестве начальной страницы конфигурации
.cf 93,72Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

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

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

Есть управляемая форма с полем типа "Поле HTML документа". Требуется загрузить в это поле содержимое из макета (общего, или справочника, или отчёта), в котором в некие размеченные места загружаем некие данные и некие объекты.

Чтобы лучше представить себе, для чего это может быть нужно и какую красоту можно сделать, поставим задачу конкретнее:

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

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

При веб-разработке в подобных случаях используют операции с DOM-объектами (Document Object Model, объектная модель документа) и обращению к нужным нам элементам по их уникальному ID и/или по их месту в структуре (не в тексте!) документа.

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

Создаём общую форму произвольного типа с корпоративным синонимом.

 

 

Создаём строковый реквизит "HTMLРеквизит", размещаем его на форме, выбрав тип "Поле HTML документа".

"Положение заголовка" укажем "Нет". Скрываем командную панель формы, убирая флаг "Автозаполнение". Можно также убрать рамку поля, указав ей "Цвет формы".

Проверяем в режиме просмотра, и видим такую красоту:

 

Форма в режиме просмотра

 

Создаём общий макет "НачальнаяСтраница" типа HTML-документ.

 

 

В режиме "Текст" правим HTML-код так, как нам нужно. Например, вставляем в HEAD собственное описание стилей.

 
Описание стилей в HEAD:

В режиме "Редактирование" в начало страницы вставляем шапку и логотип, например, загруженный в общие картинки конфигурации (картинки вставляются через меню Элементы \ Картинка).

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

 

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	HTMLРеквизит = ПолучитьОбщийМакет("НачальнаяСтраница").ПолучитьТекст();
КонецПроцедуры

Подключаем начальную страницу через меню по правой кнопке мыши в дереве конфигурации "Открыть рабочую область начальной страницы". Жмём плюсик "Добавить" и выбираем нашу форму:

 

 

Сохраняемся, запускаем приложение, радуемся нашей корпоративной красоте.

 

 

Всё? Расходимся? Побежали творить? Да нет же. С этого места суть только начинается, ибо выше показано (как и во всех инструкциях, что я нашёл), как работать с HTML-документом как с текстом, используя строковые функции. А это же объект! И давайте попробуем дальше всё сделать по-человечески, т.е. контейнерно-объектно.

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

<div id="UserHello">Здравствуйте, <span id="UserName"></span>!</div>
<div id="UserTasks">На сегодня для Вас есть задачи:
     <div id="TaskList"></div>
</div>

div - это по умолчанию блоковый контейнер, span - строковый (хотя через css можно задать любой стиль отображения). Научимся находить в DOM-дереве HTML-документа нужные нам контейнеры. Искать их будем по ID элемента. Но...

Но, для начала плохие новости: в общем случае никто и ничто не гарантирует, что ID -элементов в HTML-документе будут уникальными. С одной стороны, в рамках одного макета вроде бы всё в наших руках, с другой, стороны легко представить, что HTML-документ будет собираться, например, программно из разных кусков в системе и даже разными людьми, поэтому давайте научимся правильно разруливать такие ситуации и пользоваться DOM-деревом.

И ещё возьмём себе на заметку один нюанс: при обходе документа по DOM-дереву (выполняется рекурсивными алгоритмами) и при текстовом поиске разный порядок нахождения элементов:

                        Обход по: Тексту   DOM
<div ID="One">                      1       1
    <div ID="Two">                  2       2
        <div ID="Three">            3       5
            <div ID="Four"></div>   4       6
        </div>
    </div>
    <div ID="Three"></div>          5       3
    <div ID="Four"></div>           6       4
</div>

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

Итак, что нам нужно для вывода приветствия пользователя: получить из макета документ как иерархическую структуру, найти в DOM-документа блок "UserHello", в нём блок "UserName", и вставить туда имя пользователя. Документ получить просто:

ДокументHTML = ПолучитьОбщийМакет("НачальнаяСтраница").ПолучитьДокументHTML();

Чтобы получить ссылку на какой-то элемент документа по его (элемента) идентификатору существует метод ПолучитьЭлементПоИдентификатору(), возвращающий первый (по DOM) найденный элемент:

Элемент = ДокументHTML.ПолучитьЭлементПоИдентификатору("UserHello");

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

&НаСервере
Функция НайтиВложенныйЭлемент(ДокументHTML, ТекущийЭлемент, ИщемИдентификатор)
	ОбходДерева = ДокументHTML.СоздатьОбходДерева(ТекущийЭлемент);
	ТекущийУзел = ОбходДерева.ТекущийУзел;
	Пока ТекущийУзел <> Неопределено цикл
		ТекущийУзел = ОбходДерева.СледующийУзел();
		Если ТекущийУзел.ТипУзла = ТипУзлаDOM.Элемент И ТекущийУзел.Идентификатор = ИщемИдентификатор Тогда
			Возврат ТекущийУзел;
		КонецЕсли;
	КонецЦикла;
	Возврат Неопределено;
КонецФункции

После модификации соответствующих элементов в документе нам ещё понадобится функция, возвращающая содержимое DOM-документа как текст. Стандартного свойства или метода у объекта ДокументHTML я не нашёл. Пришлось тоже колхозить:

&НаСервере
Функция ПолучитьТекстHTML(ДокументHTML)
    ЗапиcьHTML = Новый ЗаписьHTML;
    ЗапиcьHTML.УстановитьСтроку();
    ЗаписьDOM = Новый ЗаписьDOM;
    ЗаписьDOM.Записать(ДокументHTML, ЗапиcьHTML);
    Возврат ЗапиcьHTML.Закрыть();
КонецФункции

Используя всё вышенаписанное (и опуская лишние проверки), код для вывода приветствия получается таким:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ДокументHTML = ПолучитьОбщийМакет("НачальнаяСтраница").ПолучитьДокументHTML();
	ВставитьПриветствиеПользователя(ДокументHTML);
	HTMLРеквизит = ПолучитьТекстHTML(ДокументHTML);
КонецПроцедуры

&НаСервере
Процедура ВставитьПриветствиеПользователя(ДокументHTML)
	БлокПриветствия = ДокументHTML.ПолучитьЭлементПоИдентификатору("UserHello");
	// А можно и так:
	//БлокПриветствия = НайтиВложенныйЭлемент(ДокументHTML, ДокументHTML, "UserHello");
	БлокИмениПользователя = НайтиВложенныйЭлемент(ДокументHTML, БлокПриветствия, "UserName");
	ИмяПользователя = ИмяТекущегоПользователя();
	Если ИмяПользователя = Неопределено Тогда
		БлокПриветствия.ТекстовоеСодержимое = "Просто здравствуйте!";
	Иначе
		БлокИмениПользователя.ТекстовоеСодержимое = ИмяПользователя;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ИмяТекущегоПользователя()
	Возврат "Вася";	
КонецФункции

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

Создаём простейший справочник "Задачи". Задачам добавим единственный реквизит "Статус" типа "Перечисление". Делаем выборку задач и грузим в таблицу.

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

&НаСервере
Функция СоздатьHTMLЭлемент(ДокументHTML, РодительскийЭлемент, ТегЭлемента, СвойстваЭлемента = Неопределено)
	Элемент = ДокументHTML.СоздатьЭлемент(ТегЭлемента);
	Если СвойстваЭлемента <> Неопределено Тогда
		Для каждого Свойство Из СвойстваЭлемента Цикл
			Элемент[Свойство.Ключ] = Свойство.Значение;
		КонецЦикла;
	КонецЕсли;
	РодительскийЭлемент.ДобавитьДочерний(Элемент);
	Возврат Элемент;
КонецФункции

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ДокументHTML = ПолучитьОбщийМакет("НачальнаяСтраница").ПолучитьДокументHTML();
	ВставитьПриветствиеПользователя(ДокументHTML);
	ВставитьЗадачиПользователя(ДокументHTML);
	HTMLРеквизит = ПолучитьТекстHTML(ДокументHTML);
КонецПроцедуры

&НаСервере
Процедура ВставитьЗадачиПользователя(ДокументHTML)
	БлокЗадач = ДокументHTML.ПолучитьЭлементПоИдентификатору("UserTasks");
	
	БлокТаблицыЗадач = НайтиВложенныйЭлемент(ДокументHTML, БлокЗадач, "TaskList");
	
	ЗадачиПользователя = ПолучитьЗадачиПользователя();
	Если ЗадачиПользователя.Количество() = 0 Тогда
		БлокЗадач.ТекстовоеСодержимое = "Счастливчик! Задач на сегодня нет. Ступайте домой!";
	Иначе
		//Строим красивую таблицу задач
		Таблица = СоздатьHTMLЭлемент(ДокументHTML, БлокТаблицыЗадач, "table", Новый Структура("className", "TasksTable"));
		Для каждого Задача Из ЗадачиПользователя Цикл
			СтрокаТаблицы = СоздатьHTMLЭлемент(ДокументHTML, Таблица, "tr");
			СоздатьHTMLЭлемент(ДокументHTML, СтрокаТаблицы, "td", Новый Структура("ТекстовоеСодержимое, className", Строка(Задача.КодЗадачи), "TaskCode"));
			СоздатьHTMLЭлемент(ДокументHTML, СтрокаТаблицы, "td", Новый Структура("ТекстовоеСодержимое", Задача.Название));
			СоздатьHTMLЭлемент(ДокументHTML, СтрокаТаблицы, "td", Новый Структура("ТекстовоеСодержимое, className", Строка(Задача.Статус), "TaskStatus" + Перечисления.СтатусЗадачи.Индекс(Задача.Статус)));
			ЯчейкаСсылки = СоздатьHTMLЭлемент(ДокументHTML, СтрокаТаблицы, "td");
			СоздатьHTMLЭлемент(ДокументHTML, ЯчейкаСсылки, "a", Новый Структура("ТекстовоеСодержимое, className, id, href", "перейти", "TaskLink", "Link" + Задача.КодЗадачи, "#"));
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

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

Чтобы навести красоту, поправим стили в макете:

 
Описание стилей в HEAD:

 

Запускаем, радуемся:

 

 

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

 

 

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

&НаКлиенте
Процедура HTMLРеквизитПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
	//Обрабатываем только наши ссылки. Остальные работают как обычные
	Если ДанныеСобытия.Element.className = "TaskLink" Тогда
		СтандартнаяОбработка = Ложь;
		ИдентификаторСсылки = ДанныеСобытия.Element.id;
		//Убираем наши буквы "Link" в начале ID ссылки
		КодЗадачи = Сред(ИдентификаторСсылки, 5);
		ЗадачаСсылка = СсылкаНаЗадачу(КодЗадачи);
		Если ЗадачаСсылка = Неопределено Тогда
			Сообщить("Задача не найдена!");
		Иначе
			ПараметрыОткрытияФормы = Новый Структура ("ТекущаяСтрока", ЗадачаСсылка);
			ОткрытьФорму("Справочник.Задачи.ФормаСписка", ПараметрыОткрытияФормы);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция СсылкаНаЗадачу(КодЗадачи)
	Справочник = Справочники.Задачи;
	ЗадачаСсылка = Справочник.НайтиПоКоду(КодЗадачи, Истина);
	Если ЗадачаСсылка <> Справочник.ПустаяСсылка() Тогда
		Возврат ЗадачаСсылка;
	КонецЕсли;
КонецФункции

Вот, собственно, и всё. Приношу свои извинения тем, кому изложенное показалось очевидным и неинтересным. Повторюсь, написал это как памятку, в связи с тем, что в интернете нет примеров работы с HTML-документом в 1C как с DOM (можете сами поискать по названию использованных функций). Для работы используется 1С:Предприятие 8.3, учебная версия (8.3.27.1688). Выгрузка прилагается.

Если что-то сделал не так, или не по 1С-стилю, буду признателен за конструктивные указания - это моя первая публикация на сайте, а мой опыт работы с 1С всего два месяца. 

Вступайте в нашу телеграмм-группу Инфостарт

начальная страница конфигурации поле HTML-документа DOM ПолучитьЭлементПоИдентификатору ДокументHTML

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    82430    55    42    

67

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

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

6100 руб.

14.01.2016    60536    22    25    

47

Работа с интерфейсом Рабочее место 1С:Предприятие 8 1C:Бухгалтерия 1С:Комплексная автоматизация 2.х Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). В комплект поставки включены Расширения для легкого подключения данного функционала в БК, УТ, КА и ERP. Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу. Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6100 руб.

16.01.2015    68426    46    60    

85

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5246 руб.

29.06.2020    24616    34    6    

53

Консолидация данных Работа с интерфейсом Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)

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

6088 руб.

17.10.2025    2073    3    0    

2

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    7874    2    2    

6

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

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

20.08.2024    49577    mrXoxot    44    

139
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Torin 970 29.04.26 13:17 Сейчас в теме
Хорошо изложено. +
4. 1CJunior 14 29.04.26 19:58 Сейчас в теме
2. booksfill 29.04.26 17:05 Сейчас в теме
Хорошо написано, понятным языком.

С выходом "воздушных" интерфейсов появляется желание меньше зависеть от мнения дизайнеров интерфейсов платформы.
Можно, конечно, фронт делать на чем-то другом, но это несет многовато проблем с поддержкой.
Проще 90% оставить под влиянием моды, а остальное сделать самому.

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

Например, вызов событий javascript из 1С, с учетом различия подходов под разными движками (и без использования eval), определения окончательной загрузки страницы (DocumentComplete) перед этим и т.п.
Или вот, насколько помню, в 1С запрещено добавление модулей через import, может можно какой-то удобный костыль использовать (неудобный не надо). Вроде как есть программы, которые умеют слепить монолит - можно и по ним инструкцию.
Ну, или, вот ещё, пригодился бы help по ограничениям движка WebKit в 1С.

А потом можно попробовать и третью часть, например, по взаимодействию с брокерами сообщений, допустим через библиотеку amqplib (require('amqplib') - ага вот тут и упираемся в ограничения 1С, но никто не мешает создать микросервис на Node Js.
Есть готовые native api библиотеки и т.п., интересен сам подход к разработке подобных вещей. Да и код не сложный для демонстрации.
Ну или иную полезную математику. :)

P.S. Только, пожалуйста, если уж не обойтись без ИИ, то обязательно самому проверить его идеи. Иначе статье грош цена.
3. 1CJunior 14 29.04.26 19:56 Сейчас в теме
Спасибо!
Про javascript, DocumentComplete и пр. попадались статьи, когда искал как правильно сделать ссылки в 1С. Но есть ощущение, что это прям совсем кривой способ, ибо мы в кривой (ну мне так кажется) браузер 1С загоняем какой-то сложный функционал обработки событий на непонятно как поддерживаемом языке, и надеемся, что это не будет глючить? Почему мы на это надеемся?
Приведённый мной в статье способ работы со ссылками показался железобетонно надёжным и простым.

Про ИИ не понял намёк. Я олдтаймер. Я ещё Брежнева живого на мавзолее видал. Какой такой ИИ? Всё из головы писано. :)
Для отправки сообщения требуется регистрация/авторизация