|   |   | 
| 
 | Помогите решить проблему с пересечением фиксированных настроек | ☑ | ||
|---|---|---|---|---|
| 0
    
        Fragster гуру 14.06.17✎ 14:12 | 
        Есть форма с динамическим списком. При открытии устанавливается отбор, который пользователь не должен иметь возможность снять. Сейчас это делается через фиксированные настройки (очень удобно, что они не сохраняются).
 Отбор не на фиксированное значение, а на диапазон. Когда пользователь добавляет свой отбор через "найти", всё хорошо. Когда пользователь добавляет свой отбор через "настроить список", то у него закономерно вылетает ошибка про пересечение настроек. Как правильно обойти ошибку (и при этом не дать пользователю установить "неправильный отбор")? Саму форму менять нежелательно. | |||
| 1
    
        aleks_default 14.06.17✎ 15:03 | 
        ИМХО никак, только сбрасывать фиксированный отбор и все фильтры из него добавлять в пользовательские настройки. По крайней мере я не нашел как подружить фиксированные настройки с пользовательскими.
 У себя сделал визуализацию фиксированных настроек в форме с возможностью их сброса. | |||
| 2
    
        Fragster гуру 14.06.17✎ 16:01 | 
        (1) так в том то и дело, что у пользователя не должно быть возможности сбросить фикс. настройки.
 Например фикс. настройки на сумму больше 1000, пользователь хочет отобрать сумму меньше 10000... | |||
| 3
    
        aleks_default 14.06.17✎ 16:30 | 
        Да я понял что нужно. Я тоже не нашел, как это можно сделать красиво, поэтому мне подошел такой выход из ситуации.     | |||
| 4
    
        Fragster гуру 14.06.17✎ 16:34 | 
        можно программно поменять запрос, добавив параметр и установив его вместо отбора, но как-то страшно:
 Список = Форма.Список; Схема = Новый СхемаЗапроса(); Список.ПроизвольныйЗапрос = Истина; Схема.УстановитьТекстЗапроса(Список.ТекстЗапроса); Пакет = Схема.ПакетЗапросов.Получить(0); Оператор = Пакет.Операторы.Получить(0); ИмяТаблицы = Оператор.Источники.Получить(0).Источник.Псевдоним; Оператор.Отбор.Добавить(ИмяТаблицы + ".Поле В (&Отбор)"); Список.ТекстЗапроса = Схема.ПолучитьТекстЗапроса(); Список.Параметры.УстановитьЗначениеПараметра("Отбор", Отбор); | |||
| 5
    
        Fragster гуру 07.07.17✎ 13:57 | 
        решение из (4) не работает для 8.3.9 и 8.3.10 - там слетают привязки элементов управления     | |||
| 6
    
        Вафель 07.07.17✎ 14:02 | 
        на 8.3.9 не слетают     | |||
| 7
    
        Вафель 07.07.17✎ 14:33 | 
        Скорее всего это проявление особенности устройства динамического списка в совокупности с улучшением конструктора запросов в 8.3.9 (см. downloads.v8.1c.ru/conte... »»  )
 Особенность такая - если у поля есть 2 имени (т.е. это стандартное поле без псевдонима, например Наименование) - то при задействовании такого поля, форма запоминает английский вариант имени (Description для наименования). Если после этого такому полю добавить стандартный псевдоним на русском языке (Наименование) - то форма его больше не найдет (потому что у поля с псевдонимом нет второго варианта, а основной вариант Наименование не равен запомненному формой Description). Условия для появления проблемы: конфигурация должна быть в режиме совместимости 8.3.9 (не использовать на 8.3.9) или выше у динамического списка используется произвольный запрос и в нем не установлены псевдонимы полей (именно в таком виде запрос генерируется платформой при установке флага "Произвольный запрос") Если текст запроса такого списка отредактировать конструктором запросов (достаточно просто открыть конструктор и нажать "ОК") то все стандартные поля потеряют связь с формой Аналогичная проблема будет в режиме Предприятие если текст запроса такого списка изменить с помощью схемы запроса. | |||
| 8
    
        Fragster гуру 07.07.17✎ 14:37 | 
        (7) я знаю, читай первоисточник дальше...     | |||
| 9
    
        apokrit 07.07.17✎ 14:40 | 
        "Обычный" элемент отбора с РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный не подходит?     | |||
| 10
    
        Fragster гуру 07.07.17✎ 14:43 | 
        (9) он может сохраниться и наложиться при следующем открытии формы выбора, например из другого элемента управления     | |||
| 11
    
        Fragster гуру 07.07.17✎ 14:44 | 
        когда он не нужен. да и пользователю не всегда нужно знать о том, что есть какой-то отбор     | |||
| 12
    
        apokrit 07.07.17✎ 14:45 | 
        (0) Недоступные элементы отбора не используются для формирования пользовательских настроек, а сохраняются только пользовательские настройки. Т.е. нет, не может.     | |||
| 13
    
        Вафель 07.07.17✎ 14:45 | 
        Можно кстати английских синонимов вручную добавить     | |||
| 14
    
        apokrit 07.07.17✎ 14:45 | 
        Недоступные элементы отбора не видно.     | |||
| 15
    
        Fragster гуру 07.07.17✎ 14:46 | 
        (13) ага, чтобы сломать все на 8.3.8 и ниже :) или в зависимости от релиза добавлять или нет синонимы...     | |||
| 16
    
        apokrit 07.07.17✎ 14:47 | 
        (13) Можно. Еще можно вариант встроенного языка на английский поменять - тогда конструктор (схема) сам их на английском сделает...
 Только после этого они перестанут на русском находиться, например в данных строки. | |||
| 17
    
        Вафель 07.07.17✎ 14:47 | 
        (15) так ты универсальную надстройку пишешь или что?     | |||
| 18
    
        Вафель 07.07.17✎ 14:48 | 
        (15) у тебя кстати режим совместимости какой?     | |||
| 19
    
        Fragster гуру 07.07.17✎ 14:57 | 
        (18) сейчас 8.3.5 :) ну и 8.3.8     | |||
| 20
    
        Fragster гуру 07.07.17✎ 15:01 | 
        (9) а как это сделать не дергая сервер и форму?
 так не прокатывает: &НаКлиенте Процедура Договор1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыОткрываемойФормы = Новый Структура; ПараметрыОткрываемойФормы.Вставить("ПользовательскиеНастройки", ПолучитьПользовательскиеНастройки()); ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыОткрываемойФормы, Элемент,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Функция ПолучитьПользовательскиеНастройки() Настройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ЭлементОтбора = Настройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВидДоговора"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ВидыДоговора = Новый СписокЗначений; ВидыДоговора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем")); ВидыДоговора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.Прочее")); ЭлементОтбора.ПравоеЗначение = ВидыДоговора; ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; Возврат Настройки; КонецФункции | |||
| 21
    
        Вафель 07.07.17✎ 15:01 | 
        (19) Откуда тогда проблемы с псевдонимами?     | |||
| 22
    
        Fragster гуру 07.07.17✎ 15:01 | 
        открывается без отбора. хотя то же самое с фиксированными настройками работает     | |||
| 23
    
        Fragster гуру 07.07.17✎ 15:01 | 
        (21) ну вот переведут типовые на новый режим совместимости и всё сломается.     | |||
| 24
    
        Вафель 07.07.17✎ 15:03 | 
        (23) к тому времени уже 8.3.15 выпустят уже наверно     | |||
| 25
    
        Fragster гуру 07.07.17✎ 15:04 | 
        (24) говорят, УХ и ДО уже скоро будет 8.3.10     | |||
| 26
    
        Fragster гуру 07.07.17✎ 15:04 | 
        и ЗУП     | |||
| 27
    
        Вафель 07.07.17✎ 15:05 | 
        (25) Откуда тогда 8.3.5?     | |||
| 28
    
        Fragster гуру 07.07.17✎ 15:06 | 
        (27) управленческий гомункул, с неснимаемым режимом совместимости из-за несериализуемых значений в хранилищах значений и кучей мин замедленного действия     | |||
| 29
    
        apokrit 07.07.17✎ 15:10 | 
        (20) Обычные настройки нельзя через параметры передать (если только конечно в открываемой форме нет соответствующего кода).
 Если больше совсем ни как - можно попробовать поменять настройки в форме уже после открытия (но это, мягко говоря, уродство, конечно и замедление от этого будет) | |||
| 30
    
        apokrit 07.07.17✎ 15:13 | 
        +(29) А что код из (4) работает "не дергая сервер и форму"?     | |||
| 31
    
        Fragster гуру 07.07.17✎ 15:20 | 
        (29) фиксированные прекрасно передаются, такой код работает: &НаКлиенте
 Процедура Договор2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыОткрываемойФормы = Новый Структура; ПараметрыОткрываемойФормы.Вставить("ФиксированныеНастройки", ПолучитьФиксированныеНастройки()); ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыОткрываемойФормы, Элемент,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Функция ПолучитьФиксированныеНастройки() Настройки = Новый НастройкиКомпоновкиДанных; ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВидДоговора"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ВидыДоговора = Новый СписокЗначений; ВидыДоговора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем")); ВидыДоговора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.Прочее")); ЭлементОтбора.ПравоеЗначение = ВидыДоговора; // ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; Возврат Настройки; КонецФункции | |||
| 32
    
        Fragster гуру 07.07.17✎ 15:21 | 
        собственно, и пользовательские можно, но там больше букв     | |||
| 33
    
        apokrit 07.07.17✎ 15:25 | 
        (31) Это к чему?
 Я уже написал что "просто" настройки передать в список через параметр открытия формы нельзя (не предусмотрено). Но ведь, вариант со схемой запроса явно не на клиенте реализован. В чем проблема в этом же месте изменить обычные настройки? | |||
| 34
    
        Fragster гуру 07.07.17✎ 15:26 | 
        (33) там есть вариант передачи пользовательских настроек списка. как туда добавить мой отбор, да еще и чтобы он не отображался?     | |||
| 35
    
        Fragster гуру 07.07.17✎ 15:27 | 
        (33) вариант со схемой запроса мне не нравится. он от безысходности.     | |||
| 36
    
        Fragster гуру 07.07.17✎ 15:28 | 
        изначально был вариант передачи фиксированных настроек     | |||
| 37
    
        Fragster гуру 07.07.17✎ 15:28 | 
        например он не привязывался к названию элемента формы     | |||
| 38
    
        Cyberhawk 07.07.17✎ 15:31 | 
        "Например фикс. настройки на сумму больше 1000, пользователь хочет отобрать сумму меньше 10000..." // Ну ведь очень простая ситуация: либо отказаться от пользовательского отбора, либо от фиксированной настройки (в один момент времени - в одном контексте). Чего тут думать?     | |||
| 39
    
        Fragster гуру 07.07.17✎ 15:36 | 
        (38) альтернатива?     | |||
| 40
    
        Cyberhawk 07.07.17✎ 16:09 | 
        (39) Отсюда не видно     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |