|
тема по СКД программная установка( на обычной форме) вида срав | ☑ | ||
---|---|---|---|---|
0
GENN
15.03.16
✎
16:38
|
есть отчёт на СКД
у него есть форма ОБЫЧНАЯ не управляемая на форме 9 строк отбора каждая строка имеет слева флажок - использования посередине - вид сравнения (ПолеВвода - тип Видысравнения) справа - правое значение ВОПРОС???? как при изменении в ПолеВвода равно не равно и т.д. сделать так чтобы в СКД в отборе ВидСравнения тоже изменялся???? Может кто из ЗНАТОКОВ подскажет |
|||
1
GENN
15.03.16
✎
16:52
|
не просто это да
|
|||
2
LordCMEPTb
15.03.16
✎
16:57
|
Может, проще было на форму вынести табличное поле, которое связать с "КомпоновщикНастроек.Настройки.Отбор"?
|
|||
3
GENN
15.03.16
✎
17:04
|
(2) а как в табличном поле связать тот же вид сравнения с видом сравнения в том же компоновщике? по идее наверное тоже самое и получается
|
|||
4
Nuobu
15.03.16
✎
17:05
|
||||
5
GENN
15.03.16
✎
17:05
|
если табличное поле то какой тип значения?
|
|||
6
GENN
15.03.16
✎
17:06
|
(4)сейчас гляну ссылку
|
|||
7
GENN
15.03.16
✎
17:08
|
(4) я так и делаю как в ссылке только мне .Больше нужно менять при изменении на форме в полеввода на разные значения
|
|||
8
GENN
15.03.16
✎
17:09
|
у меня возникае ошибка несоответствие типов
|
|||
9
Nuobu
15.03.16
✎
17:11
|
(7) ТвойВидСравнения = ТекущиеДанные.ВидСравнения;
Если ТвойВидСравнения = ВидСравнения.Больше Тогда Элементы [0].ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ИначеЕсли ТвойВидСравнения = ВидСравнения.Меньше Тогда Элементы [0].ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; Иначе... |
|||
10
GENN
15.03.16
✎
17:50
|
вообщем я делаю так
Функция ВидСравненияОтбор(ВидСравнения) Если ВидСравнения = "Равно" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ИначеЕсли ВидСравнения = "Не равно" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ИначеЕсли ВидСравнения = "Больше" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ИначеЕсли ВидСравнения = "Больше или равно" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ИначеЕсли ВидСравнения = "Меньше" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; ИначеЕсли ВидСравнения = "Меньше или равно" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ИначеЕсли ВидСравнения = "В группе" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; ИначеЕсли ВидСравнения = "Не в группе" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ИначеЕсли ВидСравнения = "В списке" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ИначеЕсли ВидСравнения = "Не в списке" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; ИначеЕсли ВидСравнения = "В группе из списка" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии; ИначеЕсли ВидСравнения = "Не в группе из списка" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии; ИначеЕсли ВидСравнения = "Содержит" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.НеСодержит; ИначеЕсли ВидСравнения = "Не содержит" Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит; Иначе // Не нашли соответствие - не применяем отбор //Отбор.Использование = Ложь; //Возврат Отбор.Использование = Ложь; КонецЕсли; //Отбор.Значение = ОтборКомпоновщика.ПравоеЗначение; Возврат ВидСравнения; КонецФункции Процедура ВидСравнения3ПриИзменении(Элемент) //ВидСравненияИмя = ВидСравнения3; Сообщить(ВидСравнения3); КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ВидСравнения = ВидСравненияОтбор(ВидСравнения3); //КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ВидСравнения = ВидСравненияКомпоновкиДанных.ЭлементыВидСравнения3; КонецПроцедуры и ОШИБКА {Отчет.ОстаткиТоваровПоМагазинам.Форма.ФормаОтчета.Форма(119)}: Ошибка при установке значения атрибута контекста (ВидСравнения) КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ВидСравнения = ВидСравненияОтбор(ВидСравнения3); по причине: Несоответствие типов |
|||
11
EvgeniuXP
15.03.16
✎
17:52
|
У тебя отбор вынесен на форму как пользовательские насипрйки или это отдельные не связанные элементы на форме? Если второе - то переноси в настройки вручную
|
|||
12
Nuobu
15.03.16
✎
17:57
|
(10) Если ВидСравнения = "Равно" Тогда
ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ИначеЕсли ... Иначе ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;//!!!! КонецЕсли; |
|||
13
GENN
15.03.16
✎
18:14
|
(12) я не совсем понял что имеется ввиду
|
|||
14
GENN
15.03.16
✎
18:15
|
(12)разные типы передаются и возвращаются из функции или что имелось ввиду
|
|||
15
GENN
15.03.16
✎
18:20
|
КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ВидСравнения -> это Тип = ВидСравненияКомпоновкиДанных
а ВидСравненияОтбор(ВидСравнения3) -> это Тип = ВидСравнения поэтому и возникает ошибка несоответствия типов |
|||
16
Nuobu
15.03.16
✎
18:37
|
(15) У тебя вид сравнения возвращается правильный.
Но ты не учет, что передаешь не строку, а элемент типа "ВидСравнения", который, сравниваясь со строкой везде даёт Ложь. И попадает в блок Иначе. А в блоке Иначе нету кода. Поэтому функция ВидСравненияОтбор() возвращает "Неопределено", которое 1С не может перевести во что-то более внятное, чем ошибку. Сравнивал бы уже не с текстом, а так, как я тебе написал. Хоспади. Научись пользоваться отладчиком. |
|||
17
LordCMEPTb
16.03.16
✎
09:57
|
(3) На самом деле я предлагал у самого табличного поля формы установить в качестве данных "КомпоновщикНастроек.Настройки.Отбор". Для этого нужно создать еще один реквизит формы/объекта с типом "КомпоновщикНастроекКомпоновкиДанных", инициализировать его по схеме и загрузить настройки.
Если извращаться с табличным полем на обычной форме (хотя я смысла не вижу), то можно тип значения колонки с выбором вида сравнения указать "Произвольный", а уже в самой таблице подставлять данные из компоновщика. Без понятия, как оно будет работать в обычном приложении, но на мобильном такое прокатило. |
|||
18
mistеr
16.03.16
✎
10:34
|
(16) У него не "Неопределено" возвращается, а то, что передано. Неопределено СКД бы переварила.
Использовать входные параметры функции для возврата резульата - плохой тон. Нужно завести отдельную переменную. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |