This commit is contained in:
wakadakawaka 2025-07-09 23:36:03 +05:00
parent ec1c95761f
commit a8e277ec40
15 changed files with 364 additions and 10 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@ -1,6 +1,6 @@
---
title: Префиксация при установке нового номера
slug: общие-подключение-объектов-к-бсп-документы/префиксация-при-установке-нового-номера
slug: общие-документы/префиксация-при-установке-нового-номера
---
Для того, чтобы нумерация документов была "Типовой", длину кода нужно установить **11 символов**, а в модуле объекта документа прописать.
```bsl

View File

@ -1,6 +1,6 @@
---
title: Механизм доп.отчетов и обработок
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/механизм-доп-отчетов-и-обработок
slug: общие-подключение-объектов-к-бсп/механизм-доп-отчетов-и-обработок
---
# Постановка задачи

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Варианты отчетов
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-варианты-отчетов
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-варианты-отчетов
---
# Порядок действий
## Хранилище вариантов

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Версионирование
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-версионирование
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-версионирование
---
## Настройка объектов метаданных

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Взаимодействия
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-взаимодействия
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-взаимодействия
---
# Настройка объекта
Создаем новый документ/справочник. В документе должны быть реквизит `Ответственный` (СправочникСсылка.Пользователи) и табличная часть `ПартнерыИКонтактныеЛица`.

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Дата запрета изменений
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-дата-запрета-изменений
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-дата-запрета-изменений
---
# Общие модули
В процедуре `ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения` общего модуля `ДатыЗапретаИзмененияПереопределяемый` дополнить:

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Контактная информация
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-контактная-информация
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-контактная-информация
---
> [Подсистема БСП «Контактная информация» (ИТС)](https://its.1c.ru/db/pubcloud1c#content:80:hdoc:p513)
@ -254,4 +254,12 @@ __Не забываем привязать события формы к обра
4. Поле значения - `представление`
Теперь через меню `Ещё > Изменить форму` можно в форму списка добавить контакты через поле `Ссылка`
![Итог](/bsp_kontaktnaya_informaciya/result.png)
![Итог](/bsp_kontaktnaya_informaciya/result.png)
## Дополнительно
[Добавление произвольных реквизитов с контактной информацией.pdf](/bsp_kontaktnaya_informaciya/dobavlenie-proizvol-nyh-rekvizitov-s-kontaktnoj-informaciej.pdf)
[Хранение истории изменений контактной информации.pdf](/bsp_kontaktnaya_informaciya/hranenie-istorii-izmenenij-kontaktnoj-informacii.pdf)
[Создание статических элементов управления контактной информации.pdf](/bsp_kontaktnaya_informaciya/sozdanie-staticeskih-elementov-upravlenia.pdf)

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Подключаемые команды
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-подключаемые-команды
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-подключаемые-команды
---
## Форма объекта
```bsl

View File

@ -1,6 +1,6 @@
---
title: Подключение к подсистеме Присоединенные файлы
slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/подключение-к-подсистеме-присоединенные-файлы
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-присоединенные-файлы
---
## Настройка определяемых типов

View File

@ -0,0 +1,346 @@
---
title: Подключение к подсистеме Свойства
slug: общие-подключение-объектов-к-бсп/подключение-к-подсистеме-свойства
---
# Дополнительные реквизиты, сведения, метки
## 1. Добавляем объект в определяемые типы
- `ВладелецДополнительныхСведений` (если нужны доп.сведения)
- `ВладелецМеток` (если нужны метки)
## 2. Добавляем в объект ТЧ "ДополнительныеРеквизиты"
Копируем из типового, например справочник `Пользователи`. ТЧ нужна только если нужны доп.реквизиты
## 3. Добавляем предопределенные наборы свойств (без доп.детализации)
В общем модуле `УправлениеСвойствамиПереопределяемый` в процедуре `ПриПолученииПредопределенныхНаборовСвойств` описываем наборы:
```bsl
Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
Набор = Наборы.Строки.Добавить();
Набор.Имя = "Справочник_Организации";
Набор.Идентификатор = Новый УникальныйИдентификатор("a4632c5e-a6c9-4141-83bc-be8e77ff1690"); // генерим UUID v4
КонецПроцедуры
```
__Разные наборы по видам объектов описаны в конце статьи__
## 4. Запустить обновление информационной базы
`Сервис > Параметры > Запуск 1С: Предприятия > ПараметрЗапуска` установить `/ЗапуститьОбновлениеИнформационнойБазы`.
## 5. Настраиваем формы
### Форма элемента
Создаем группу `ГруппаДополнительныеРеквизиты` (имя любое), в который будут падать программно созданные подсистемой элементы формы. И `ГруппаМетки`, если нужны метки
__В модуле формы описываем__
```bsl
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты"); // имя созданной ранее группы
// Если нужны метки
ПараметрыОтображенияМеток = УправлениеСвойствами.ПараметрыОтображенияМеток();
ПараметрыОтображенияМеток.ИмяЭлементаДляРазмещенияМеток = "ГруппаМетки"; // имя созданной ранее группы
ПараметрыОтображенияМеток.МаксимумМетокНаФорме = 3;
ПараметрыОтображенияМеток.ВариантОтображенияМеток = Перечисления.ВариантыОтображенияМеток.Надпись;
ДополнительныеПараметры.Вставить("ПараметрыОтображенияМеток", ПараметрыОтображенияМеток);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.Свойства
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область СтандартныеПодсистемы
// СтандартныеПодсистемы.Свойства
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
#КонецОбласти
```
### Форма списка
Для того, чтобы можно было выводить дополнительные реквизиты и сведения в список, нужно настроить характеристики.
В конфигураторе открываем карточку объекта > `Данные > Характеристики`
В характеристиках настраиваем:
#### Для дополнительных сведений
Вид характеристик - `Справочник.НаборыДополнительныхРеквизитовИСведений.ТабличнаяЧасть.ДополнительныеСведения`
Поле ключа - `Свойство`
Поле отбора видов - `ИмяПредопределенногоНабора`
Значение отбора - `Справочник_Склады` (то, как мы обзывали набор в `ПриПолученииПредопределенныхНаборовСвойств`)
Значения характеристик - `РегистрСведений.ДополнительныеСведения`
Поле объекта - `Объект`
Поле вида - `Свойство`
Поле значения - `Значение`
#### Для дополнительных реквизитов
Вид характеристик - `Справочник.НаборыДополнительныхРеквизитовИСведений.ТабличнаяЧасть.ДополнительныеРеквизиты`
Поле ключа - `Свойство`
Поле отбора видов - `ИмяПредопределенногоНабора`
Значение отбора - `Справочник_Склады` (то, как мы обзывали набор в `ПриПолученииПредопределенныхНаборовСвойств`)
Значения характеристик - `Справочник.Склады.ТабличнаяЧасть.ДополнительныеРеквизиты` (ТЧ, созданная в нашем объекте)
Поле объекта - `Ссылка`
Поле вида - `Свойство`
Поле значения - `Значение`
Далее, чтобы отображать метки, нужно дополнить запрос динамического списка полями:
```bsl
ВЫБРАТЬ
СправочникКонтрагенты.Ссылка,
...остальные поля...,
0 КАК Метка1,
0 КАК Метка2,
0 КАК Метка3 // до 7 меток (вроде)
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагенты
```
Выкидываем поля на форму, устанавливаем вид "ПолеКартинки", настраиваем ширину, убираем заголовок и т.д.
Картинкой значений устанавливаем `ПиктограммыСвойств`
Далее, создаем группу `ГруппаЛегендаМетки` (имя любое), в которой будут отрисовываться доступные метки с возможностью установки отбора
Затем, в модуле формы списка прописываем
```bsl
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ПараметрыОтображенияМеток = УправлениеСвойствами.ПараметрыОтображенияМеток();
ПараметрыОтображенияМеток.ИмяЭлементаДляРазмещенияЛегендыМеток = "ГруппаЛегендаМетки";
ПараметрыОтображенияМеток.ОтборМеток = Истина;
ПараметрыОтображенияМеток.ВидОбъектов = Метаданные.Справочники.Номенклатура.ПолноеИмя();
ДополнительныеПараметры.Вставить("ПараметрыОтображенияМеток", ПараметрыОтображенияМеток);
ДополнительныеПараметры.Вставить("ПроизвольныйОбъект", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыCписок
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПриПолученииДанныхНаСервере(Настройки, Строки);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_УстановитьВидимостьЛегендыМеток(Команда)
УстановитьВидимостьЛегендыМеток();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЛегендыМеток()
УправлениеСвойствами.УстановитьВидимостьЛегендыМеток(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОтбораПоМеткам(Команда)
УправлениеСвойствамиКлиент.УстановитьОтборПоМетке(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
```
## 6. Разные наборы свойств по видам объектов
### Создаем группу наборов свойств
Если нужно иметь разные наборы свойств в зависимости от значения какого-то реквизита - `ВидНоменклатуры` (тип - `СправочникСсылка.ВидыНоменклатуры`), например, то в `ПриПолученииПредопределенныхНаборовСвойств` описываем __группы__ а не элементы
```bsl
Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
Набор = Наборы.Строки.Добавить();
Набор.Имя = "Справочник_Номенклатура"; // Обязательно в таком формате: Справочник_ИмяСправочника
Набор.ЭтоГруппа = Истина; // важный флаг
Набор.Идентификатор = Новый УникальныйИдентификатор("3001280c-f6ec-4fa9-bc4a-5eee8f177b60"); // генерим UUID v4
КонецПроцедуры
```
### Настраиваем объект
Если мы завязываемся на реквизит `ВидНоменклатуры` справочнике `Номенклатура`, то нужно в справочнике __`ВидыНоменклатуры`__ создать реквизит `НаборСвойств`, с типом `СправочникСсылка.НаборыДополнительныхРеквизитовИСведений`. То есть мы создаем реквизит в том объекте метаданных, __по которому должен осуществляться отбор наборов свойств__
__В модуле объекта метаданных, по которому отбираем наборы__ (в нашем случае __`ВидыНоменклатуры`__ )
```bsl
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если НЕ ЭтоГруппа Тогда
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюВидаОбъекта(ЭтотОбъект, "Справочник_Номенклатура");
// Конец СтандартныеПодсистемы.Свойства
КонецЕсли;
КонецПроцедуры
Процедура ПередУдалением(Отказ)
Если НЕ ЭтоГруппа Тогда
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередУдалениемВидаОбъекта(ЭтотОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецЕсли;
КонецПроцедуры
#КонецОбласти
```
### Модуль формы элемента объекта-владельца
В нашем случае `Справочник_Номенклатура`. Подразумеваем, что базовый код (раздел 3) был уже добавлен
Добавляем в обработчик события `ПриИзменении` реквизита, по которому осуществляем отбор реквизитов следующий код для перерисовки реквизитов при его изменении:
```bsl
&НаКлиенте
Процедура ВидНоменклатурыПриИзменении(Элемент)
ОбновитьЭлементыДополнительныхРеквизитов();
КонецПроцедуры
```
### Общий модуль `УправлениеСвойствамиПереопределяемый`
```bsl
Процедура ЗаполнитьНаборыСвойствОбъекта(Знач Объект, ТипСсылки, НаборыСвойств, СтандартнаяОбработка, КлючНазначения) Экспорт
// Типов всегда много в подсистеме, поэтому обрабатываем точечно
Если ТипСсылки = Тип("СправочникСсылка.Номенклатура") Тогда
ЗаполнитьНаборСвойствПоВидуНоменклатуры(Объект, ТипСсылки, НаборыСвойств);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьНаборСвойствПоВидуНоменклатуры(Номенклатура, ТипСсылки, НаборыСвойств)
// безопасная безопасность
Если ТипЗнч(Номенклатура) = ТипСсылки Тогда
ДанныеНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "ЭтоГруппа, ВидНоменклатуры");
КонецЕсли;
Если НЕ ДанныеНоменклатуры.ЭтоГруппа Тогда
Строка = НаборыСвойств.Добавить();
Строка.Набор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеНоменклатуры.ВидНоменклатуры, "НаборСвойств");
КонецЕсли;
КонецПроцедуры
```
> Написано сумбурно, можно покурить демо базу БСП
## PS.Отличия доп.реквизита от доп.сведений и меток
![Доп.реквизиты](/bsp_svoystva/rekvizity.png)
![Доп.реквизиты](/bsp_svoystva/svedeniya.png)