diff --git a/src/content/docs/knowledge-base/Администрирование/Регистрация comcntr.dll.md b/src/content/docs/knowledge-base/Администрирование/Регистрация comcntr.dll.md new file mode 100644 index 0000000..0be800b --- /dev/null +++ b/src/content/docs/knowledge-base/Администрирование/Регистрация comcntr.dll.md @@ -0,0 +1,36 @@ + +## Через консоль +```PowerShell +regsvr32 "C:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll" +``` + +## Вручную + +### Шаг 1: Создание COM+ приложения + +1. Откройте **Панель управления** → **Администрирование** → **Службы компонентов**. +2. Перейдите по пути: Компьютеры → Мой компьютер → Приложения COM+ +3. Щёлкните **Создать приложение**. +4. Выберите **Создать новое приложение**. +5. Введите имя: `V83.COMConnector`. +6. Установите переключатель в положение **Серверное приложение**. +7. Укажите пользователя с правами администратора. + +--- + +### Шаг 2: Добавление компонента `V83COMConnector` + +1. В дереве слева найдите приложение `V83COMConnector`. +2. Перейдите в раздел **Компоненты**. +3. Нажмите **Создание нового компонента** → **Установка новых компонентов**. +4. Найдите и выберите файл `comcntr.dll` в каталоге установки 1С. + +--- + +### Шаг 3: Настройка безопасности приложения + +1. Щёлкните правой кнопкой мыши по `V83COMConnector` → выберите **Свойства**. +2. Перейдите на вкладку **Безопасность**. +3. Снимите галочку **Принудительная проверка доступа для приложений**. +4. Установите галочку **Применить политику программных ограничений**. +5. В поле **Уровень ограничений** выберите **Неограниченный**. diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Обработка создания задач из бизнес-процесса.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Обработка создания задач из бизнес-процесса.md new file mode 100644 index 0000000..ce01e14 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Обработка создания задач из бизнес-процесса.md @@ -0,0 +1,13 @@ + +```bsl + +//Для заполнения реквизитов создаваемой задачи при старте бизнес-процесса на элементе "ТочкаДействия" карты маршрута нужно определить обработчик события "При создании задач" +Процедура ИсполнитьПоручениеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) + Для Каждого ФормируемаяЗадача Из ФормируемыеЗадачи Цикл + ФормируемаяЗадача.Наименование = Описание; + ФормируемаяЗадача.Исполнитель = Исполнитель; + ФормируемаяЗадача.ПредметЗадачи = ПредметЗадачи; + КонецЦикла; +КонецПроцедуры + +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Пример создания простого бизнес-процесса.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Пример создания простого бизнес-процесса.md new file mode 100644 index 0000000..55b4895 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Бизнес-процессы и задачи/Пример создания простого бизнес-процесса.md @@ -0,0 +1,53 @@ + +* Добавьте подсистему Взаимодействие, включив ее в командный интерфейс. + +* Добавьте определяемый тип ПредметПроцесса, включив в него все документы и справочники. + +* Добавьте в подсистему Взаимодействие задачу Задача, задав для нее: + Достаточно длинное наименование (например, 150 знаков). + Реквизит адресации Исполнитель (СправочникСсылка.Сотрудники). + Реквизит Предмет (ОпределяемыйТип.ПредметПроцесса) + +* Добавьте в подсистему Взаимодействие процесс Поручение, задав для него: + Обязательный к заполнению реквизит Описание (строка, которая станет наименованием задачи). + Обязательный к заполнению реквизит Исполнитель (сотрудник, который станет исполнителем задачи). + +* Простую схему процесса из одного действия с наименованием задачи по умолчанию "Исполнить поручение". + +* Для единственного действия переопределите обработчик события ПриСозданииЗадач, заполняя в нем наименования и исполнителей формируемых задач по данным самого процесса: + +```bsl +Для Каждого ФормируемаяЗадача Из ФормируемыеЗадачи Цикл + ФормируемаяЗадача.Наименование = Описание; + ФормируемаяЗадача.Исполнитель = Исполнитель; +КонецЦикла; +``` +* Удостоверьтесь, что создаваемые задачи содержат исполнителя и наименование из процессов-поручений. +* Добавьте в задачу Задача реквизит Результат (строка неограниченной длины). +* В модуле задачи переопределите обработчик ПередВыполнением, в котором: +* При отсутствии результата - установите Отказ в Истина и выведите пользователю разумное сообщение +При наличии результата - ничего не делайте +* Взведите флаг "Заполнять из данных заполнения" стандартного реквизита ВедущаяЗадача процесса Поручение. +* К процессу Поручение добавьте команду ПодчиненноеПоручение, параметризованную типом ЗадачаСсылка.Задача. В модуле команды откройте форму нового поручения, передав в составе параметров открываемой формы структуру ЗначенияЗаполнения со свойством ВедущаяЗадача, заполненным параметром команды (задачей). +* Добавьте кнопку для этой команды на форму задачи и в список задач. Удостоверьтесь, что при нажатии создается подчиненный процесс Поручение. +* Добавьте справочник Роли Без кода, с наименованием разумной длины +* Добавьте регистр сведений ИсполнителиРолей: + С измерениями Роль (СправочникСсылка.Роли) и Исполнитель (СправочникСсылка.Сотрудники) + Запретив незаполненные значения измерений +* В задачу Задача: + Добавьте адресацию по регистру ИсполнителиРолей + Добавьте реквизит адресации Роль (СправочникСсылка.Роли) + Основным реквизитом адресации останется Исполнитель +* Свяжите реквизиты адресации Роль и Исполнитель с одноименнными измерениями регистра ИсполнителиРолей +* В поле "Текущий исполнитель" выберите параметр сеанса ТекущийСотрудник +* В процессе Поручение + Расширьте тип реквизита Исполнитель типом СправочникСсылка.Роли. + Доработайте обработчик события ПриСозданииЗадач так, чтобы в зависимости от типа исполнителя в задаче заполнялся Исполнитель или Роль. +* Добавьте форму списка задач ЗадачиМне Не назначая ее основной формой (основная форма будет содержать все задачи) +* Добавьте в нее динамический список по виртуальной таблице Задача.Задача.ЗадачиПоИсполнителю с разумным минимумом реквизитов +* Добавьте команду ПринятьКИсполнению, при вызове которой на севере: + Получите объект текущей задачи + Установите реквизит Исполнитель равным значению параметра сеанса ТекущийСотрудник +* Запишите объект текущей задачи +* Добавьте этот список в рабочую область начальной страницы +* Удостоверьтесь, что пользователи видят на рабочем столе свои задачи, адресованные лично или по роли. \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Запросы/Схема запроса.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Запросы/Схема запроса.md new file mode 100644 index 0000000..006e8c3 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Запросы/Схема запроса.md @@ -0,0 +1,62 @@ + +```bsl + Схема = Новый СхемаЗапроса; + + // в схеме уже есть один пакет и один оператор + ЗапросВыбора = Схема.ПакетЗапросов.Получить(0); + ОператорВыбрать = ЗапросВыбора.Операторы.Получить(0); + + // Заполняем источники данных + Если ТипЗнч(ВладелецФайла) = Тип("ДокументСсылка.УТЗ_ПЛ_ЗаявкаНаТранспорт") Тогда + ИсточникДанных = ОператорВыбрать.Источники.Добавить( + "Справочник.УТЗ_ПЛ_ЗаявкаНаТранспортПрисоединенныеФайлы", "ПрисоединенныеФайлы"); + ИначеЕсли ТипЗнч(ВладелецФайла) = Тип("ДокументСсылка.УТЗ_ПЛ_ПутевойЛист") Тогда + ИсточникДанных = ОператорВыбрать.Источники.Добавить( + "Справочник.УТЗ_ПЛ_ПутевыеЛистыПрисоединенныеФайлы", "ПрисоединенныеФайлы"); + Иначе + ИсточныкДанных = Неопределено; + КонецЕсли; + + // Выбираемые поля + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Загрузил"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Размер"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Расширение"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ИмяФайла"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ВладелецФайла"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.НомерВерсии"); + ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ПутьКФайлуНаСервере"); + + // Условия отбора + ОператорВыбрать.Отбор.Добавить("ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла"); + ОператорВыбрать.Отбор.Добавить("ПрисоединенныеФайлы.НомерВерсии = &НомерВерсии"); + + Запрос = Новый Запрос; + Запрос.Текст = ЗапросВыбора.ПолучитьТекстЗапроса(); + Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла); + Запрос.УстановитьПараметр("НомерВерсии", НомерФайла); + + Результат = Запрос.Выполнить(); + Если Результат.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = Результат.Выбрать(); +``` + +Результат + +```bsl +ВЫБРАТЬ + ПрисоединенныеФайлы.Загрузил КАК Загрузил, + ПрисоединенныеФайлы.Размер КАК Размер, + ПрисоединенныеФайлы.Расширение КАК Расширение, + ПрисоединенныеФайлы.ИмяФайла КАК ИмяФайла, + ПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла, + ПрисоединенныеФайлы.НомерВерсии КАК НомерВерсии, + ПрисоединенныеФайлы.ПутьКФайлуНаСервере КАК ПутьКФайлуНаСервере +ИЗ + Справочник.УТЗ_ПЛ_ЗаявкаНаТранспортПрисоединенныеФайлы КАК ПрисоединенныеФайлы +ГДЕ + ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла + И ПрисоединенныеФайлы.НомерВерсии = &НомерВерсии +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Статусы соединениия с directum.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Статусы соединениия с directum.md new file mode 100644 index 0000000..442d4ba --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Статусы соединениия с directum.md @@ -0,0 +1,34 @@ +--- +title: Статусы соединения с DIRECTUM +--- + +```bsl +// Функция - Статус подключения к directum +// +// Возвращаемое значение: +// Соответствие - +// * Ключ - Число - ID Статуса выполнения метода GetApplicationEx +// * Значение - Строка - Описание статуса выполнения метода GetApplicationEx +Функция СтатусыПодключенияКDirectum() Экспорт + + СтатусыПодключения = Новый Соответствие; + СтатусыПодключения.Вставить(0, "Ошибок нет, объект приложения создан успешно"); + СтатусыПодключения.Вставить(1, "Требуется изменение пароля, у пользователя установлен пароль по умолчанию"); + СтатусыПодключения.Вставить(17, "Сервер не найден"); + СтатусыПодключения.Вставить(2763, "Роль приложения не найдена"); + СтатусыПодключения.Вставить(4060, "Невозможно открыть базу данных"); + СтатусыПодключения.Вставить(15247, "У пользователя нет прав на выполнение данного действия"); + СтатусыПодключения.Вставить(18456, "Не удалось произвести вход в систему"); + СтатусыПодключения.Вставить(-3, "Неправильное имя пользователя или пароль"); + СтатусыПодключения.Вставить(-8, "Данная система не установлена. Система установлена, если она указана в файле SystemInfo.xml"); + СтатусыПодключения.Вставить(-42, "Неизвестная ошибка"); + СтатусыПодключения.Вставить(-43, "Не удалось установить соединение с базой данных"); + СтатусыПодключения.Вставить(-44, "Ошибка установки соединения"); + СтатусыПодключения.Вставить(-45, "Неверные параметры соединения"); + СтатусыПодключения.Вставить(-96, "Неверные параметры разблокировки"); + СтатусыПодключения.Вставить(-97, "Ресурс заблокирован"); + + Возврат СтатусыПодключения; + +КонецФункции +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Строка соединения b/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Строка соединения new file mode 100644 index 0000000..fa3586d --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Обмен данными/Directum/Строка соединения @@ -0,0 +1,24 @@ +--- +title: Строка соединения DIRECTUM +--- + +```bsl +// Функция - Возвращает строку соединения directim в формате +// +// Возвращаемое значение: +// СтрокаСоединения - Строка вида ServerName=<ИмяСервера>;DBName=<ИмяБазыДанных>;UserName=<Логин>;Password=<Пароль> +// +Функция СтрокаСоединенияDirectim() Экспорт + + ДанныеСоединения = ДанныеСоединенияDirectum(); + + СтрокаСоединения = СтрШаблон("ServerName=%1;DBName=%2;UserName=%3;Password=%4", + ДанныеСоединения.ИмяСервера, + ДанныеСоединения.ИмяБазыДанных, + ДанныеСоединения.Логин, + ДанныеСоединения.Пароль); + + Возврат СтрокаСоединения; + +КонецФункци +``` \ No newline at end of file