База знаний (демо-конфигурация браузера по объектам информационной базы)

10.12.11

Функциональные - Управление знаниями (Knowledge Base)

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
dt файл демо-конфигурации "База знаний" (версия 1.0.6)
.dt 902,48Kb
86
86 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

v8config://v8cfgHelp/mdobject/id6d8184f5-7d2b-4ccb-b9d0-fa872f5775e6/8eb4fad1-1fa6-403e-970f-2c12dbb43e23?id=c675fa98-0525-11e1-8cff-00195b3e3f45

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

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

Еще пара слов о требованиях, которые выдвигались при разработке:

  • Конфигурация должна быть реализована с использованием только штатных средств 1С (чтобы минимизировать возможные проблемы в случае использования на различных ОС в качестве платформы, не привязываться к наличию зарегистрированных в системе COM-объектов и т.п.).
  • Конфигурация разрабатывается для использования в режиме обычного приложения (толстый клиент). Причина - конфигурация должна быть как работоспособна сама по себе, так и легко встраиваема в существующие конфигурации (для использования, например, в качестве встроенной справочной системы), ведь не секрет, что большинство ныне существующих конфигураций работают в режиме обычного приложения.
    • А еще - потому, что в управляемом приложении браузер по объектам информационной базы - уже встроенная возможность).
  • По функциональности система должна быть сравнима с Википедией, на мой взгляд наиболее удобной для решения подобных задач.

Что получилось - вам судить).

 

Update 10.12.11: Исправлена ошибка в декодировании локальных путей к файлам при добавлении картинок. Обновлен заменен вложнный к статье dt-файл.

См. также

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

Делюсь лайфхаком по верстке статей для ИС. Исходный текст набираю в Obsidian, загружаю картинки списком, конвертирую исходный текст в HTML. Обратный реинжиниринг статьи на ИС в проект на GitHub.

1 стартмани

12.08.2024    521    kalyaka    0    

9

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

Данная конфигурация является заготовочной для построения базы знаний в компании на основе платформы 1С. Поддерживаются следующие технологические платформы: - 1С:Предприятие 8.0 (8.0.14.39) - более старые версии должны поддерживаться, но не гарантирую. - 1С Предприятие 8.1 - полная поддержка. - 1С Предприятие 8.2 - 8.2.9 и новее во всех режимах. - 1С Предприятие 8.3 - 8.3.5 и новее во всех режимах компьютерной платформы (мобильная пока не поддерживается).

2 стартмани

29.11.2023    1073    4    user1206119    8    

2

Образование Управление знаниями (Knowledge Base) Пользователь Платформа 1С v8.3 Платные (руб)

Решение от фирмы «1С» для создания системы управления электронным и смешанным обучением в коммерческих и образовательных организациях. Решение создано для автоматизации основных бизнес-процессов очного (аудиторного) и дистанционного обучения.

400000 руб.

17.10.2023    1054    1    0    

1

Подготовка к аттестации Управление знаниями (Knowledge Base) Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

14.09.2023    700    3    Dmitr033    0    

4

Документооборот и делопроизводство (СЭД) Управление знаниями (Knowledge Base) Управляемые формы 1С:Документооборот Россия Абонемент ($m)

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

3 стартмани

04.07.2023    2325    10    BigBon    3    

3

Управление знаниями (Knowledge Base) 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Фирма «1С» — лидер среди отечественных разработчиков ПО. Около 2 миллионов государственных учреждений и компаний различных отраслей работают с ПО фирмы «1С». Именно поэтому растет спрос на специалистов, умеющих работать с 1С. К таким специалистам относятся и аналитики 1С, популярность которых за последний год сильно возросла.

16.05.2023    3312    otkalo    2    

1

Управление знаниями (Knowledge Base) Бесплатно (free)

При организации корпоративной базы знаний нужно определиться со структурой разделов, организовать доступ, перенести старые заметки и замотивировать сотрудников туда писать. О том, как развивать базу знаний в маленькой компании, на конференции Infostart Event 2021 Post-Apocalypse рассказал руководитель «ПрогТехБизнес» Александр Анисков.

09.12.2022    2371    vandalsvq    5    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 06.12.11 16:56
Сообщение было скрыто модератором.
...
2. Yasen 490 09.12.11 18:22 Сейчас в теме
Загрузил, повтыкал и порадовался.
Спасибо тебе автор, я лет 5 ждал когда сделают более менее 1С:WIKI
Попытки были, но это - работающая штука, готовая к употреблению.
Респект. +1
3. bambr1975 880 09.12.11 22:01 Сейчас в теме
Качественно и красиво!
Сразу руки тянутся прикрутить хранение файлов и иерархический навигатор по базе знаний с поиском...(мечты-мечты)
4. Yasen 490 09.12.11 23:11 Сейчас в теме
bambr1975 пишет:
хранение файлов и иерархический навигатор по базе знаний с поиском

Иерархический справочник и полнотекстовый поиск делаются легко.
А вот про хранение файлов я тоже думал - было бы здорово.
5. Foxx 110 10.12.11 01:21 Сейчас в теме
Спасибо за отзывы!

Конфигурация в данном виде - выложена в основном для иллюстрации методики навигации (потому и название статьи такое)). Чтобы просто показать эту возможность на примере базы знаний. Конечно, данная демо-конфигурация очень далека от идеала. Для собственных нужд я ее буду постепенно развивать и дорабатывать. Возможно, она доживет до нормального релиза, который можно будет опубликовать).
6. ander_ 10.12.11 09:23 Сейчас в теме
(5)
удачи, полезная штуковина!
7. dimanich70 853 10.12.11 10:46 Сейчас в теме
Как добавляются картинки в базу (добавить - ошибка, добавить копированием - непонятно как заменить). И как вставить картинку на странице? Спасибо.
8. bambr1975 880 10.12.11 11:12 Сейчас в теме
(7) у меня получилось в режиме редактирования. В главном меню появляется пункт "Элементы" - в нем выбираешь подпункт Картинка... - так указываешь путь к картинке. Только путь должен содержать только английские буквы, с обработкой пути, содержащего русские буквы обработка выдала сообщение:
Ошибка при сохранении в базе данных картинки c:\users\admin\desktop\название с русскими буквами\2011-10-21_150034.jpg : {ОбщийМодуль.ОперацииСоЗнаниями.Модуль(218)}: Ошибка при вызове конструктора (Картинка): Файл не обнаружен 'c:\users\admin\desktop\2011-10-21_150034.jpg'
Почему-то при поиске файла в пути теряются названия с русскими буквами
12. Foxx 110 10.12.11 15:17 Сейчас в теме
(7), (8), с картинками - так и задумано. Вставить картинку в справочник, и потом вставить ее в знание - два действия. Вместо этого просто вставляем картинку из любого места, где она сейчас есть (с локального диска или из интернет) сразу в знание, и при записи знания она скачается и сохранится в базе.

(8), (9), мда, с русскими буквами в URL вышла промашка. У IE+Windows и здесь свои нюансы). Вечером выложу релиз с исправлением бага.

(10), полноценный html-редактор на данном этапе не планировался. Пока можно пользоваться стандартной панелью инструментов "Поле HTML документа".
9. dimanich70 853 10.12.11 11:15 Сейчас в теме
С картинками разобрался. Осталось непонятным, как добавить текс в пунктирной рамке, как его сделать красным.

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

Ошибка при сохранении в базе данных картинки c:\users\админ\appdata\local\temp\fa88cdb14355b0e4.jpg : {ОбщийМодуль.ОперацииСоЗнаниями.Модуль(218)}: Ошибка при вызове конструктора (Картинка): Каталог не обнаружен 'c:\users\appdata\local\temp\fa88cdb14355b0e4.jpg'
11. bambr1975 880 10.12.11 11:43 Сейчас в теме
(9) во-во:
Почему-то при поиске файла в пути теряются названия с русскими буквами

(0)Незачем применять декодирование URL при работе с локальными файлами. URL кодирует браузер - а здесь звено браузера не задействовано. Использование функции глДекодироватьURL в этом случае лишнее, поскольку встроенная функция языка КодСимвола(<символ>) работает с символом русского алфавита, а не с его "процентным эквивалентом".
10. bambr1975 880 10.12.11 11:25 Сейчас в теме
По моему крайнему мнению, полноценного HTML-редактора в этой базе нет. Я так понял, что просто копируешь нужный текст, оформленный в других HTML редакторах - в той же разукрашке, например.
13. Foxx 110 10.12.11 15:21 Сейчас в теме
Незачем применять декодирование URL при работе с локальными файлами. URL кодирует браузер - а здесь звено браузера не задействовано. Использование функции глДекодироватьURL в этом случае лишнее, поскольку встроенная функция языка КодСимвола(<символ>) работает с символом русского алфавита, а не с его "процентным эквивалентом".
Неверно. Декодирование нужно. Как минимум потому, что при вставке в браузер картинки, полный локальный путь к которой содержит пробелы получим в свойстве href тега img путь с "%20" вместо пробелов.

Найду инфу про кодирование локальных путей в протоколе file:// - внесу исправления в конфу.
14. Foxx 110 10.12.11 21:31 Сейчас в теме
Исправленная версия глДекодироватьURL() уже выложена здесь - http://infostart.ru/public/101004/. Обновление для Базы знаний будет немного позже - надо обновить описание функции в самой базе и поправить еще один найденный баг :).
15. Foxx 110 10.12.11 23:49 Сейчас в теме
Выложил релиз Базы знаний с исправленным декодированием локальных путей.
16. BalVlad 18.01.12 22:58 Сейчас в теме
Вот спасибо! Ждем развития этой темы. +
17. Dimasik2007 430 22.01.12 21:36 Сейчас в теме
Автор, огромное спасибо! За такие вещи так и хочется донейт сделать, не жалко)
Пример из рабочей базы (id и hash оставил для красоты):

Кстати, в гиперссылках также можно указывать "якоря", что облегачает навигацию в большой статье.
18. Foxx 110 23.01.12 01:59 Сейчас в теме
(17) Dimasik2007, не скрою, очень рад, что эта разработка оказалась полезной!
19. kiberiq 121 01.06.20 15:24 Сейчас в теме
Добрый день!
Каким образом формируется путь v8config://v8cfgHelp/mdobject/id6d8184f5-7d2b-4ccb-b9d0-fa872f5775e6/8eb4fad1-1fa6-403e-970f-2c12dbb43e23?id=c675fa98-0525-11e1-8cff-00195b3e3f45 ?
20. Foxx 110 27.08.20 14:14 Сейчас в теме
(19)
v8config://v8cfgHelp/mdobject/id6d8184f5-7d2b-4ccb-b9d0-fa872f5775e6/8eb4fad1-1fa6-403e-970f-2c12dbb43e23
- это ссылка на существующий в конфигурации объект метаданных
а дальше - параметр ?id=c675fa98-0525-11e1-8cff-00195b3e3f45
где "id" - имя параметра, "c675fa98-0525-11e1-8cff-00195b3e3f45" - значение параметра, по сути, это UUID страницы базы знаний (уникальный идентификатор элемента справочника)
Оставьте свое сообщение