|
Открытие формы выбора с отбором. | ☑ | ||
|---|---|---|---|---|
|
0
lirt82
11.08.26
✎
14:45
|
Всем привет, есть документ у него таб часть Товары, есть команда заполнения таб части Товары, при выборе команды заполнения таб части Товары, открывается доп. окно с выбором счета из плана счетов. Как зашить отбор когда пользователь проваливается в реквизит а у него уже фильтр настроен чтобы он что попало не выбирал? Код не отрабатывает
&НаКлиенте Процедура Счет7XНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; СписокСчетов7Х = Новый СписокЗначений; ПараметрыВыбора = Новый Структура("Отбор", СписокСчетов7Х()); ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", ПараметрыВыбора); КонецПроцедуры &НаСервере Функция СписокСчетов7Х() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК Счет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Код ПОДОБНО ""7%"""; ТЗ = Запрос.Выполнить().Выгрузить(); МассивЗначений = ТЗ.ВыгрузитьКолонку("Счет"); Список7Х = Новый СписокЗначений; Список7Х.ЗагрузитьЗначения(МассивЗначений); Возврат Список7Х; КонецФункции |
|||
|
1
Fragster
гуру
11.08.26
✎
14:54
|
а через параметры выбора мышью накликать не получается?
|
|||
|
2
Tatitutu
11.08.26
✎
15:05
|
(0)
это лишняя строка СписокСчетов7Х = Новый СписокЗначений; а зачет ты форму открываешь ОткрытьФорму("ПланСчетов.Хозрасчетный.ФормаВыбора", ПараметрыВыбора); ДанныеВыбора = ВыбратьИЗСписка( или ДанныеВыбора = ВыбратьИзМеню( |
|||
|
3
Fedor-1971
11.08.26
✎
15:31
|
(0) Отбор работает только на равенство, вот так попробуй:
масСчетов = СписокСчетов7Х();
НовыйМассивПараметров = Новый Массив;
НовыйМассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.Ссылка", Новый ФиксированныйМассив(масСчетов)));
НовыйМассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.Валютный", Ложь));
НовыйМассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ЗапретитьИспользоватьВПроводках", Ложь));
Форма.Элементы.СчетУчетаРасчетовПоАвансам.ПараметрыВыбора = Новый ФиксированныйМассив(НовыйМассивПараметров);
Т.е. сначала выставляешь отборы, потом просто открываешь форму выбора - фильтры выставит сам система |
|||
|
4
PLUT
гуру
11.08.26
✎
15:18
|
(0) как вариант, при вызове формы выбора добавить в параметры свойство "жоскийотбор" со списком нужных счетов
а в форме выбора в процедуре ПриСозданииНаСервере() добавить костылики свои: проверку на свойство "жоскийотбор" в параметрах и добавить магию ТекущиеНастройки = Список.КомпоновщикНастроек.Настройки; КомпоновщикОтбора = ТекущиеНастройки.Отбор; //тут какая-то магия по программному удалению ненужных отборов и добавлению нужных (т.к. пользователь может нах.евертить своих отборов) //Загружаем настройки обратно в список Список.КомпоновщикНастроек.ЗагрузитьНастройки(ТекущиеНастройки); |
|||
|
5
Fedor-1971
11.08.26
✎
15:19
|
(4) Слишком вопросно поддерживать, главное не забыть что и для чего отбирали
|
|||
|
6
PLUT
гуру
11.08.26
✎
15:23
|
(5) вообще не сложно, можно в расширение запихнуть костыли, ну и трехстороннее автообновление не сломается, если с "замочка" сняли форму выбора
|
|||
|
7
Fedor-1971
11.08.26
✎
15:29
|
(6) Через год вспомнишь что за отбор "жоскийотбор" (даже в осмысленном названии)?
Кроме того, есть вероятность, что этот отбор модифицируют и он перестанет соответствовать названию - получим проблемы на ровном месте. В (3) всё красиво - одна точка, прямо по месту требования, если что-то захотят добавить, то исправляют тут же и не парятся за влияние на другие документы. И без дополнительного кода в других формах |
|||
|
8
PLUT
гуру
11.08.26
✎
15:29
|
(7) комментарии потомкам можно оставить, если на буквах не экономить
у меня обычно номер тикета (из сервисдеска) и дата. я на буквах экономлю |
|||
|
9
PLUT
гуру
11.08.26
✎
15:32
|
(7)
в (3) не будет работать, т.к. пользовательские настройки формы (если они есть) наложатся на твой отбор и получится "болт" - пустая форма выбора в лучшем случае |
|||
|
10
Fedor-1971
11.08.26
✎
15:34
|
(8) Это как удобнее. Главное не потерять / почистить БД с тикетами, будет совсем непонятно зачем такое делали
|
|||
|
11
PLUT
гуру
11.08.26
✎
15:35
|
(10) все ходы записаны. в сервисдеск откуда попадают хотелки?
правильно - из почты на ящик службы технического сочувствия. главное еще и ящик не протерять в случае протери БД с тикетами |
|||
|
12
Fedor-1971
11.08.26
✎
15:38
|
(9) Нет, это как раз штатный отбор нескольких значений
Если есть пользовательский отбор - он налаживается на список после штатного и пустая форма будет только при отсутствии в штатном данных для отбора пользователя Если совсем красиво делать, то настройки отбора для элемента формы надо делать, например, ПриНачалеРедактированияСтроки |
|||
|
13
PLUT
гуру
11.08.26
✎
15:43
|
(12) откуда такая уверенность?
вот, например, грабля в посте с номером 0 Как отключить пользовательский отбор на форме выбора |
|||
|
14
Fedor-1971
11.08.26
✎
15:51
|
(13) Если я правильно понял, то налаживается пользовательский отбор, который конфликтует с существующим.
В (3), опять же, чисто моё мнение - это наложенные условия на уровне запроса выборки данных (системная работа 1С), после него отрабатывают отборы пользователя в настройках ДС как предложено в (4) |
|||
|
15
lirt82
12.08.26
✎
08:29
|
(0) отладчиком проверил, функция СписокСчетов7Х() возвращает на клиент список значений где значение это тип ПланСчетов.ХозрасчетныйСсылка, а если список формировать программно без запроса в той же процедуре НачалоВыбора на клиенте то там значение тип Строка и тогда форма выбора плана счетов открывается со списком заполненным но при выборе "кликании" мышкой на нужном счете он не выбирается в реквизит.
т.е. получается нужно описать свой обработчик выбора или оставить как есть пусть пользователи из всего плана выбирают счет а не из группы 7Х-тых. |
|||
|
16
Мультук
гуру
12.08.26
✎
08:48
|
(15)
>>а если список формировать программно без запроса в той же процедуре НачалоВыбора на клиенте то там значение тип Строка А можно пример кода ? (0) Имхо, всё что можно сказано здесь https://infostart.ru/1c/articles/1233756/ Пример 6 |
|||
|
17
Смотрящий
12.08.26
✎
08:42
|
(15) у тебя где то в модуле формы "ПланСчетов.Хозрасчетный.ФормаВыбора" в ПриСозданииНаСервере должен быть код вида "Параметры.Отбор.<что то там>" который накладывает фильтр
передаешь неправильно фильтр, надо так ПараметрыВыбора = Новый Структура("Отбор", Новый Структура("<что то там>", СписокСчетов7Х())); |
|||
|
18
lirt82
12.08.26
✎
09:24
|
(17) форма выбора вот процедура
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды Если Параметры.Свойство("ВидыСубконто") Тогда ИсключаемыеСсылки = Неопределено; Параметры.Свойство("ИсключаемыеСсылки", ИсключаемыеСсылки); ОтображениеСписком = Истина; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Ссылка", ПланыСчетов.Хозрасчетный.СчетаСНаборомСубконто(Параметры.ВидыСубконто, ИсключаемыеСсылки), ВидСравненияКомпоновкиДанных.ВСписке,, Истина); КонецЕсли; КонецПроцедуры ПараметрыВыбора = Новый Структура("Отбор", Новый Структура("Код", СписокСчетов7Х())); также открывает форму выбора но пустое |
|||
|
19
Мультук
гуру
12.08.26
✎
09:22
|
(18)
Прямо таки два жирных намёка Параметры.Свойство("ВидыСубконто")
Параметры.Свойство("ИсключаемыеСсылки", ИсключаемыеСсылки);
Дальше просто В том смысле что - бери и пиши. |
|||
|
20
Timon1405
12.08.26
✎
09:37
|
(0) у вас же там отдельная форма открывается в которой реквизит Счет7X?
в этой форме при создании на сервере ваш запрос+ МассивЗначений = ТЗ.ВыгрузитьКолонку("Счет"); ЭлементыФормы.Счет7X.СписокВыбора.ЗагрузитьЗначения(МассивЗначений); тогда и обработчик выбора поля не нужен |
|||
|
21
lirt82
12.08.26
✎
09:58
|
(20) да, именно так, все гениальное просто:)
получилось решение: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК Счет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Код ПОДОБНО ""7%"""; ТЗ = Запрос.Выполнить().Выгрузить(); МассивЗначений = ТЗ.ВыгрузитьКолонку("Счет"); Элементы.Счет7X.СписокВыбора.ЗагрузитьЗначения(МассивЗначений); КонецПроцедуры |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |