This commit is contained in:
wakadakawaka 2025-07-12 18:51:53 +05:00
parent 3b0052d178
commit f29f1810b6
32 changed files with 81 additions and 124 deletions

View File

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

View File

@ -61,5 +61,11 @@ slug: общие-подключение-объектов-к-бсп/добавл
КонецПроцедуры
```
# Подключение к подсистеме "Подключаемые команды"
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`
# Настройка формы
Нужно создать группу в командной панели(скопируй из типового объекта)
ПодменюОтчеты
** ПодменюОтчетыВажное
** ПодменюОтчетыОбычное
** ПодменюОтчетыСмТакже
Нужно подключить форму к подсистеме `Подключаемые команды`

View File

@ -180,5 +180,8 @@ slug: общие-подключение-объектов-к-бсп/добавл
КонецФункции
```
# Подключение к подсистеме "Подключаемые команды"
См. Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"
# Настройка формы
Нужно создать группу в командной панели(скопируй из типового объекта)
- ПодменюПечать
Нужно подключить форму к подсистеме `Подключаемые команды`

View File

@ -94,5 +94,11 @@ slug: общие-подключение-объектов-к-бсп/добавл
КонецФункции
```
# Подключение к подсистеме "Подключаемые команды"
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`
# Настройка формы
Нужно создать группу в командной панели(скопируй из типового объекта)
// * ПодменюСоздатьНаОсновании
// ** ПодменюСоздатьНаОснованииВажное
// ** ПодменюСоздатьНаОснованииОбычное
// ** ПодменюСоздатьНаОснованииСмТакже
Нужно подключить форму к подсистеме `Подключаемые команды`

View File

@ -1,106 +0,0 @@
---
title: ОбработкаПолученияДанныхВыбора
---
## 📌 Назначение
Обработчик `ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)` позволяет:
- Влиять на формирование списка выбора.
- Модифицировать параметры отбора.
- Полностью формировать список выбора вручную.
---
## 🔧 Параметры обработчика
- `ДанныеВыбора`: переменная для возврата кастомного списка.
- `Параметры`: структура параметров, включая отборы и строку поиска.
- `СтандартнаяОбработка`:
- `Истина`: платформа формирует список выбора.
- `Ложь`: список задаётся вручную через `ДанныеВыбора`.
---
## 🔹 Пример 1: Модификация параметров отбора
**Задача:** Выводить товары только от указанного поставщика и не услуги.
### Решение:
1. В `Параметры.Отбор` добавить:
```1C
Параметры.Отбор.Вставить("ВидТовара", Перечисления.ВидыТоваров.Товар);
```
2. Оставить `СтандартнаяОбработка = Истина`.
---
## 🔹 Пример 2: Полное переопределение — простой список
**Задача:** Предлагать склады, не являющиеся розничными.
### Пример кода:
```1C
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Склады.Ссылка ИЗ Справочник.Склады КАК Склады
ГДЕ Склады.Розничный = ЛОЖЬ
И Склады.Наименование ПОДОБНО &СтрокаПоиска";
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
Результат = Запрос.Выполнить();
Список = Новый СписокЗначений;
Пока Результат.Выбрать().Следующий() Цикл
Список.Добавить(Выборка.Ссылка);
КонецЦикла;
ДанныеВыбора = Список;
```
---
## 🔹 Пример 3: Полное переопределение — сложный список
**Задача:** Выводить поставщиков с пометкой удаления и предупреждением о ненадёжности.
### Пример кода:
```1C
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Поставщики.Ссылка, Поставщики.ПометкаУдаления, Поставщики.Ненадежный
ИЗ Справочник.Поставщики КАК Поставщики
ГДЕ Поставщики.Наименование ПОДОБНО &СтрокаПоиска";
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
Результат = Запрос.Выполнить();
Список = Новый СписокЗначений;
Пока Результат.Выбрать().Следующий() Цикл
Структура = Новый Структура;
Структура.Вставить("Значение", Выборка.Ссылка);
Структура.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
Если Выборка.Ненадежный Тогда
Структура.Вставить("Предупреждение", "Это ненадежный поставщик...");
КонецЕсли;
Список.Добавить(Структура);
КонецЦикла;
ДанныеВыбора = Список;
```
---
## ⚠️ Особенности производительности
Обработчик вызывается:
- При автоподборе.
- При потере фокуса поля ввода.
- При быстром выборе.
**Рекомендация:** тщательно оптимизировать запросы и код обработчика.