diff --git a/public/bsp-nastroika-poryadka-elementov/1.png b/public/bsp-nastroika-poryadka-elementov/1.png new file mode 100644 index 0000000..e2343de Binary files /dev/null and b/public/bsp-nastroika-poryadka-elementov/1.png differ diff --git a/public/bsp-nastroika-poryadka-elementov/2.png b/public/bsp-nastroika-poryadka-elementov/2.png new file mode 100644 index 0000000..adf81dc Binary files /dev/null and b/public/bsp-nastroika-poryadka-elementov/2.png differ diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Настройка порядка элементов/Подключение к подсистеме Настройка порядка элементов.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Настройка порядка элементов/Подключение к подсистеме Настройка порядка элементов.md new file mode 100644 index 0000000..3f124ed --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Настройка порядка элементов/Подключение к подсистеме Настройка порядка элементов.md @@ -0,0 +1,74 @@ +--- +title: Подключение к подсистеме Настройка порядка элементов +slug: общие-бсп-стандартные-подсистемы-настройка-порядка-элементов/подключение-к-подсистеме-настройка-порядка-элементов +--- + # Описание + Подсистема позволяет устанавливать пользовательский порядок элементов в динамических списках: + - Справочников + - Планов видов характеристик + - Планов видов расчета +![Изображение](/bsp-nastroika-poryadka-elementov/1.png) + +## Подключение к подсистеме +Для подключения этой подсистемы нужно: +1. Создать в нужном объекте числовой реквизит `РеквизитДопУпорядочивания` *(Число(5,0))*. Установить для него свойство `Индексировать` в `Индексировать с доп. упорядочиванием` +2. Добавить объект в определяемый тип `ОбъектСНастраиваемымПорядком` +3. Создать форму списка, подключить к подсистеме `Подключаемые команды` +4. В динамическом списке настроить упорядочивание по реквизиту `РеквизитДопУпорядочивания`. Установить в свойствах элемента пользовательских настроек режим редактирвоания `Недоступный` +![Изображение](/bsp-nastroika-poryadka-elementov/2.png) + +## Настройка данных выбора +Чтобы сохранить порядок элементов при выборе из выпадающего списка в поле ввода нужно: +1. Для поля ввода реквизита определить обработчик `АвтоПодбор` +```bsl +&НаКлиенте +Процедура СтатусАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ПолучитьДанныеВыбора(Тип("СправочникСсылка.СтатусыЗаказовКлиента"), ПараметрыПолученияДанных); +КонецПроцедуры +``` + +2. В модуле менеджера спраовчника переопределяем +```bsl + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ДанныеВыбора = Новый СписокЗначений; + + СтрокаПоиска = Параметры.СтрокаПоиска; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 5 + | СтатусыЗаказовКлиента.Ссылка КАК Ссылка, + | СтатусыЗаказовКлиента.Представление КАК Представление + |ИЗ + | Справочник.СтатусыЗаказовКлиента КАК СтатусыЗаказовКлиента + |ГДЕ + | НЕ СтатусыЗаказовКлиента.ПометкаУдаления И %%%ТекстДопУсловия%%% + | + |УПОРЯДОЧИТЬ ПО + | СтатусыЗаказовКлиента.РеквизитДопУпорядочивания"; + + ПодстрокаЗамены = "ИСТИНА"; + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + ПодстрокаЗамены = "ВРЕГ(СтатусыЗаказовКлиента.Наименование) ПОДОБНО """ + ВРег(СтрокаПоиска) + "%"""; + КонецЕсли; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "%%%ТекстДопУсловия%%%", ПодстрокаЗамены); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + + ДанныеВыбора.Добавить(Выборка.Ссылка, Выборка.Представление); + + КонецЦикла; + +КонецПроцедуры + +``` + +> Если после всех манипуляций что-то не работает - ПЕРЕЗАПУСТИ КОНФИГУРАТОР \ 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..fe0fb26 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md @@ -0,0 +1,117 @@ +--- +title: Добавление команд заполнения +slug: общие-бсп-стандартные-подсистемы-подключаемые-команды-команды-заполнения/добавление-команд-заполнения +--- + +# Общий модуль ЗаполнениеОбъектовПереопределяемый +```bsl +Процедура ПриОпределенииОбъектовСКомандамиЗаполнения(Объекты) Экспорт + + Объекты.Добавить(Метаданные.Документы.ЗаказПоставщику); + +КонецПроцедуры +``` + +# Модуль менеджера объекта +```bsl +Процедура ДобавитьКомандыЗаполнения(КомандыЗаполнения, Параметры) Экспорт + + Если ПравоДоступа("Редактирование", Метаданные.Документы.ЗаказПоставщику) Тогда + + // Обработчик в модуле менеджера (текущем модуле) + Команда = КомандыЗаполнения.Добавить(); + Команда.Идентификатор = "ЗаполнитьПоВыбранномуЗаказу"; + Команда.МножественныйВыбор = Ложь; + Команда.ВидимостьВФормах = "ФормаДокумента"; // Имена форм через запятую + Команда.Представление = "По предыщущему заказу"; + Команда.РежимЗаписи = "НеЗаписывать"; + Команда.Обработчик = "Подключаемый_ЗаполнитьПоПредущемуЗаказу"; + Команда.Порядок = 1; + + // Обработчик в общем модуле + Команда = КомандыЗаполнения.Добавить(); + Команда.Идентификатор = "ЗаполнитьПоВыбранномуЗаказу"; + Команда.МножественныйВыбор = Ложь; + Команда.ВидимостьВФормах = "ФормаДокумента"; + Команда.Представление = "По выбранному заказу"; + Команда.РежимЗаписи = "НеЗаписывать"; + Команда.Обработчик = "ЗакупкиКлиент.ЗаполнитьЗаказПоставщикуПоВыбранномуЗаказу"; + Команда.Порядок = 2; + + // Обработчик в модуле формы + Команда = КомандыЗаполнения.Добавить(); + Команда.Идентификатор = "ЗаполнитьПоНесколькимЗаказам"; + Команда.МножественныйВыбор = Ложь; + Команда.ВидимостьВФормах = "ФормаДокумента"; + Команда.Представление = "По нескольким заказам"; + Команда.РежимЗаписи = "НеЗаписывать"; + Команда.ИмяФормы = "ФормаОбъекта"; + Команда.Обработчик = "Подключаемый_ЗаполнитьПоНесколькимЗаказам"; + Команда.Порядок = 3; + + КонецЕсли; + +КонецПроцедуры +``` + +# Пример обработчика в модуле формы + +> Его также можно разместить и в модуле менеджера, и в общем модуле + +```bsl +&НаСервере +Процедура Подключаемый_ЗаполнитьПоПредущемуЗаказу(ПараметрКоманды, ПараметрыВыполнения) Экспорт + + Источник = ПараметрыВыполнения.Источник; // Тут Источник - основной реквизит формы. "Объект" + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ЗаказПоставщику.Ссылка КАК Ссылка + |ПОМЕСТИТЬ втПредыдущийЗаказ + |ИЗ + | Документ.ЗаказПоставщику КАК ЗаказПоставщику + |ГДЕ + | ЗаказПоставщику.Контрагент = &Контрагент + | И ЗаказПоставщику.Проведен + | И &УсловиеПоСсылке + | + |УПОРЯДОЧИТЬ ПО + | ЗаказПоставщику.Дата УБЫВ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура, + | ЗаказПоставщикуТовары.Количество КАК Количество, + | ЗаказПоставщикуТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения, + | ЗаказПоставщикуТовары.Цена КАК Цена, + | ЗаказПоставщикуТовары.Сумма КАК Сумма, + | ЗаказПоставщикуТовары.СтавкаНДС КАК СтавкаНДС, + | ЗаказПоставщикуТовары.СуммаНДС КАК СуммаНДС, + | ЗаказПоставщикуТовары.СуммаВсего КАК СуммаВсего + |ИЗ + | Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПредыдущийЗаказ КАК втПредыдущийЗаказ + | ПО ЗаказПоставщикуТовары.Ссылка = втПредыдущийЗаказ.Ссылка"; + + Запрос.УстановитьПараметр("Контрагент", Источник.Контрагент); + + Если ЗначениеЗаполнено(ПараметрКоманды) Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоСсылке", "ЗаказПоставщику.Ссылка <> &Ссылка"); + Запрос.УстановитьПараметр("Ссылка", ПараметрКоманды); + Иначе + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоСсылке", "ИСТИНА"); + КонецЕсли; + + РезультатЗапроса = Запрос.Выполнить(); + Выборка = РезультатЗапроса.Выбрать(); + + Источник.Товары.Очистить(); + Пока Выборка.Следующий() Цикл + НоваяСтрока = Источник.Товары.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); + КонецЦикла; + +КонецПроцедуры +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Подключаемые команды/Подключение к подсистеме Подключаемые команды.md b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Подключаемые команды/Подключение к подсистеме Подключаемые команды.md index f290da2..434c83e 100644 --- a/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Подключаемые команды/Подключение к подсистеме Подключаемые команды.md +++ b/src/content/docs/knowledge-base/Общие/(БСП) Стандартные подсистемы/Подключаемые команды/Подключение к подсистеме Подключаемые команды.md @@ -2,6 +2,9 @@ title: Подключение к подсистеме Подключаемые команды slug: общие-бсп-стандартные-подсистемы-подключаемые-команды/подключение-к-подсистеме-подключаемые-команды --- + +> Чтобы форма открывалась быстрее, нужно добавить реквизит формы `ПараметрыПодключаемыхКоманд` с типом `Произвольный` + ## Форма объекта ```bsl @@ -62,6 +65,9 @@ slug: общие-бсп-стандартные-подсистемы-подклю ``` ## Форма списка + +> ВАЖНО. Для реквизита `Ссылка` динамического списка нужно установить флаг `Использовать всегда` + ```bsl &НаСервере