Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 сен 2024, 22:23

Нужен отбор с видом сравнения в обработке на 1С 8.3 в режиме управляемого приложения

Автор PavelVaskan, 24 окт 2018, 16:25

0 Пользователей и 1 гость просматривают эту тему.

vitasw


PavelVaskan

Да... чтобы отображались отборы из настроек динамического списка на форме, надо над элементом формы динамического списка расположить-перетянуть {ДинамическийСписок}КомпоновщикНастроекПользовательскиеНастройки ...
Добавлено: 25 окт 2018, 15:33


Цитата: vitasw от 25 окт 2018, 14:47
На скорую руку

Спасибо! ))

alex0402

Цитата: PavelVaskan от 25 окт 2018, 14:33Какой проблемы, по-моему, не было, когда ВидСравнения был стандартным выбираемым для реквизитов типом...

можно
1)добавить реквизит формв _ВидСравнения - ПроизваольныйТип.
2)В ПриСозданииНаСервере _ВидСравнения = ВидСравнения.Равно
или
_ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
как угодно.
Спасибо за Сказать спасибо

АлександрВладимирович

Динамический список в реквизитах можно открыть по плюсику - там будет Отбор и его можно перетащить в Элементы.
Он как отбор работает, но плохо то что не сохраняется.
И это не тот отбор который по отдельной кнопке динамического списка. Если разные отборы задать там и там - ошибка выпадает.
Но если не критично чтобы сохранялся, то можно таким способом воспользоваться.

PavelVaskan

Цитата: alex0402 от 25 окт 2018, 17:23
Цитата: PavelVaskan от 25 окт 2018, 14:33Какой проблемы, по-моему, не было, когда ВидСравнения был стандартным выбираемым для реквизитов типом...

можно
1)добавить реквизит формв _ВидСравнения - ПроизваольныйТип.
2)В ПриСозданииНаСервере _ВидСравнения = ВидСравнения.Равно
или
_ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
как угодно.

Спасибо... надо только добавить:

Элементы._ВидСравнения.ОграничениеТипа = Новый ОписаниеТипов("ВидСравнения");

Единственное - не совсем понимаю, как ограничить, убрать "лишние" виды сравнения теперь. Как в 8.2, в обычном приложении, СписокВыбора поля формы не даёт заполнить - недоступен для записи...

Да... список или массив, состоящий из только "присущих" справочнику Партнеры видов сравнения я получить функцией могу... Но вот создать поле какого-то типа и "запихнуть" этот список в СписокВыбора поля пока не получается - ни если делаем реквизит формы _ВидСравнения типа Произвольный, ни если - Строка...

Добавлено: 26 окт 2018, 10:42


Разобрались:

1. делаем реквизит Формы _ВидСравнения типа "Произвольный"

2. переносим _ВидСравнения на форму и делаем элементом формы

3. у элемента формы _ВидСравнения ставим в палитре свойств флажок "РежимВыбораИзСписка"

4. Ограничение типов не делаем - тип реквизита _ВидСравнения остаётся "Произвольный"
Но! в процедуре ПриСозданииНаСервере(..) пишем следующий код:

Реквизит1 = ВидСравнения.Равно;
   
СписокВидовСравнения = ПолучитьСписокВидовСравненияПоТипу(Новый ОписаниеТипов("СправочникСсылка.Партнеры"));
   
Для каждого ЭлементСпискаВидовСравнения Из СписокВидовСравнения Цикл   
   
   Элементы.Реквизит1.СписокВыбора.Добавить(ЭлементСпискаВидовСравнения.Значение);   
   
КонецЦикла;


Процедуру ПолучитьСписокВидовСравненияПоТипу(..) "плагиатируем" из УТ 10.3 и делаем её "НаСервере":

&НаСервере
Функция ПолучитьСписокВидовСравненияПоТипу(ОпТипов) Экспорт
   
   ТаблицаДоступныхЗначений = Новый ТаблицаЗначений;
   ТаблицаДоступныхЗначений.Колонки.Добавить("ВидСравнения");
   ТаблицаДоступныхЗначений.Колонки.Добавить("ЧислоВида");
   
   Для каждого ТипОписания Из ОпТипов.Типы() Цикл
   
      НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
      НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.Равно;
      НоваяСтрокаТаблицы.ЧислоВида = 1;
      
      НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
      НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.НеРавно;
      НоваяСтрокаТаблицы.ЧислоВида = 1;
      
      НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
      НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ВСписке;
      НоваяСтрокаТаблицы.ЧислоВида = 1;
      
      НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
      НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.НеВСписке;
      НоваяСтрокаТаблицы.ЧислоВида = 1;

      Если Справочники.ТипВсеСсылки().СодержитТип(ТипОписания) И Метаданные.НайтиПоТипу(ТипОписания).Иерархический Тогда
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ВСпискеПоИерархии;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.НеВСпискеПоИерархии;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ВИерархии;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.НеВИерархии;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
      ИначеЕсли ТипОписания = Тип("Число")
           ИЛИ ТипОписания = Тип("Строка")
           ИЛИ ТипОписания = Тип("Дата") Тогда
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.Больше;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.БольшеИлиРавно;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.Меньше;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.МеньшеИлиРавно;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.Интервал;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ИнтервалВключаяНачало;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.ИнтервалВключаяОкончание;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
         
      КонецЕсли;
      
      Если ТипОписания = Тип("Строка") Тогда
         НоваяСтрокаТаблицы = ТаблицаДоступныхЗначений.Добавить();
         НоваяСтрокаТаблицы.ВидСравнения = ВидСравнения.Содержит;
         НоваяСтрокаТаблицы.ЧислоВида = 1;
      КонецЕсли;
      
   КонецЦикла;
   
   ТаблицаДоступныхЗначений.Свернуть("ВидСравнения", "ЧислоВида");
   
   СписокВидовСравнения = Новый СписокЗначений;
   КолТипов = ОпТипов.Типы().Количество();
   
   Для каждого СтрокаТаблицы Из ТаблицаДоступныхЗначений Цикл
      Если СтрокаТаблицы.ЧислоВида = КолТипов Тогда
         СписокВидовСравнения.Добавить(СтрокаТаблицы.ВидСравнения);
      КонецЕсли;
   КонецЦикла;
   
   Возврат СписокВидовСравнения;
                                
Конецфункции


И всё - работает, как надо! И тип значения выбранного реквизита - ВидСравнения, а не какая-нибудь хрень или строка! )))

СПАСИБО! ВОТ ИМЕННО ЭТО - РЕШЕНИЕ И ОТВЕТ! B):ooifh::zebzdr:
Добавлено: 26 окт 2018, 10:48


Юмор:

Элементы.Реквизит1.СписокВыбора.ЗагрузитьЗначения(СписокВидовСравнения)

почему-то не работает! Приходится делать цикл:

Для каждого ЭлементСпискаВидовСравнения Из СписокВидовСравнения Цикл   
   
    Элементы.Реквизит1.СписокВыбора.Добавить(ЭлементСпискаВидовСравнения.Значение);   
   
КонецЦикла;

Добавлено: 26 окт 2018, 11:00


УВЫ, ЕДИНСТВЕННЫЙ МИНУС В ТОМ, ЧТО МНЕ ПОКАЗАЛОСЬ:
И тип значения выбранного реквизита - ВидСравнения, а не какая-нибудь хрень или строка! )))

НЕТ, ЭТО НЕ ТАК... тип значения выбранного реквизита - к сожалению, СТРОКА!.. :dfbsdfbsdf:;):fdbsdfbsd:
Добавлено: 26 окт 2018, 11:06


УРАА!!! Показалось, что показалось...

ВСЁ-ТАКИ: тип значения выбранного реквизита - ВидСравнения, а не какая-нибудь хрень или строка! )))
ИМЕННО ТАК!!!

(я у себя просто не очистил список выбора в поле со старыми, строковыми значениями - у меня и значения типа ВидСравнения появились, и значения типа Строка в списке.)

(если на форуме есть админ-добряк, пусть удалит последние 2 сообщения в этой теме... я сам не могу...)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск