Новые статьи

This commit is contained in:
wakadakawaka 2025-04-16 01:30:08 +05:00
parent 651d1c19cc
commit 4c818a6253
6 changed files with 222 additions and 0 deletions

View File

@ -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. В поле **Уровень ограничений** выберите **Неограниченный**.

View File

@ -0,0 +1,13 @@
```bsl
//Для заполнения реквизитов создаваемой задачи при старте бизнес-процесса на элементе "ТочкаДействия" карты маршрута нужно определить обработчик события "При создании задач"
Процедура ИсполнитьПоручениеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для Каждого ФормируемаяЗадача Из ФормируемыеЗадачи Цикл
ФормируемаяЗадача.Наименование = Описание;
ФормируемаяЗадача.Исполнитель = Исполнитель;
ФормируемаяЗадача.ПредметЗадачи = ПредметЗадачи;
КонецЦикла;
КонецПроцедуры
```

View File

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

View File

@ -0,0 +1,62 @@
```bsl
Схема = Новый СхемаЗапроса;
// в схеме уже есть один пакет и один оператор
ЗапросВыбора = Схема.ПакетЗапросов.Получить(0);
ОператорВыбрать = ЗапросВыбора.Операторы.Получить(0);
// Заполняем источники данных
Если ТипЗнч(ВладелецФайла) = Тип("ДокументСсылка.УТЗ_ПЛ_ЗаявкаНаТранспорт") Тогда
ИсточникДанных = ОператорВыбрать.Источники.Добавить(
"Справочник.УТЗ_ПЛ_ЗаявкаНаТранспортПрисоединенныеФайлы", "ПрисоединенныеФайлы");
ИначеЕсли ТипЗнч(ВладелецФайла) = Тип("ДокументСсылка.УТЗ_ПЛ_ПутевойЛист") Тогда
ИсточникДанных = ОператорВыбрать.Источники.Добавить(
"Справочник.УТЗ_ПЛ_ПутевыеЛистыПрисоединенныеФайлы", "ПрисоединенныеФайлы");
Иначе
ИсточныкДанных = Неопределено;
КонецЕсли;
// Выбираемые поля
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Загрузил");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Размер");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.Расширение");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ИмяФайла");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ВладелецФайла");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.НомерВерсии");
ОператорВыбрать.ВыбираемыеПоля.Добавить("ПрисоединенныеФайлы.ПутьКФайлуНаСервере");
// Условия отбора
ОператорВыбрать.Отбор.Добавить("ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла");
ОператорВыбрать.Отбор.Добавить("ПрисоединенныеФайлы.НомерВерсии = &НомерВерсии");
Запрос = Новый Запрос;
Запрос.Текст = ЗапросВыбора.ПолучитьТекстЗапроса();
Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла);
Запрос.УстановитьПараметр("НомерВерсии", НомерФайла);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
```
Результат
```bsl
ВЫБРАТЬ
ПрисоединенныеФайлы.Загрузил КАК Загрузил,
ПрисоединенныеФайлы.Размер КАК Размер,
ПрисоединенныеФайлы.Расширение КАК Расширение,
ПрисоединенныеФайлы.ИмяФайла КАК ИмяФайла,
ПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла,
ПрисоединенныеФайлы.НомерВерсии КАК НомерВерсии,
ПрисоединенныеФайлы.ПутьКФайлуНаСервере КАК ПутьКФайлуНаСервере
ИЗ
Справочник.УТЗ_ПЛ_ЗаявкаНаТранспортПрисоединенныеФайлы КАК ПрисоединенныеФайлы
ГДЕ
ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
И ПрисоединенныеФайлы.НомерВерсии = &НомерВерсии
```

View File

@ -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, "Ресурс заблокирован");
Возврат СтатусыПодключения;
КонецФункции
```

View File

@ -0,0 +1,24 @@
---
title: Строка соединения DIRECTUM
---
```bsl
// Функция - Возвращает строку соединения directim в формате
//
// Возвращаемое значение:
// СтрокаСоединения - Строка вида ServerName=<ИмяСервера>;DBName=<ИмяБазыДанных>;UserName=<Логин>;Password=<Пароль>
//
Функция СтрокаСоединенияDirectim() Экспорт
ДанныеСоединения = ДанныеСоединенияDirectum();
СтрокаСоединения = СтрШаблон("ServerName=%1;DBName=%2;UserName=%3;Password=%4",
ДанныеСоединения.ИмяСервера,
ДанныеСоединения.ИмяБазыДанных,
ДанныеСоединения.Логин,
ДанныеСоединения.Пароль);
Возврат СтрокаСоединения;
КонецФункци
```