Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
1
1C 8.x

8.2 Упр.прил.: Дин.список с програм. отбором - то ли глюк, то ли что ?

14.05.2013, 15:48. Показов 2961. Ответов 14
Метки нет (Все метки)

Есть основная форма списка справочника - выводится в рабоч. область (не отдельное окно). В модуле формы ПриОткрытии добавляется программный отбор в дин.списке (создается элемент отбора и помещается в объявленную переменную). Далее на форме есть галочка, переключаешь и соотв. отбор включается/выключается (Перем.Использование). Все работает как надо. Однако, если в справочник добавить нов.элемент, удалить или даже просто перезаписать сущ.элемент, то галочка работать перестает ! Форма со списком не закрывалась и даже обновляется динамически, моя перем. существует, но она похоже перестает "ссылаться" на реальный элемент отбора дин.списка. Т.е. в самом запущенном приложении, если посмотреть настройку списка, нужный элемент перестает рагировать на манипуляции с моей перем.. Если напрямую обратится к этому элементу (ЭтаФорма.Список.Отбор.Элемент) то все работает как должно. Получается, что после изменений в справочнике дин.список становится "другим" и перем., на него ссылавшиеся, становятся бесполезными или что то другое здесь ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2013, 15:48
Ответы с готовыми решениями:

8.3 Упр.прил.: Свойство ТолькоПросмотр - глюк, вроде бы, или что ?
Интересная вещь обнаружилась: Дерево выведено на форму, причем на форме только часть столбцов. Есть...

8.2 Упр.прил.: Вставить в динамический список поле булеан ни к чему ни привязанное ?
Есть такая мысль, для последующ. манипуляций со строками из дин.списка, добавить в него поле типа...

8.3 Упр.прил.: Регистр сведений - что быстрее ?
Есть регистр сведений, в нем примерно 25 тыс. записей. Если нужно поменять 10-20 записей, то...

8.3 Упр.прил - Конвертация из 7.7
Конфигурация на 7.7 имеет свою структуру на 8.3 пишется сейчас и имеет свою. Вопрос как можно...

14
2953 / 1765 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
14.05.2013, 18:22 2

Не по теме:

"Поселился дикий вепрь одноглазый
то ли фича, то ли баг, то ли глюк"
(В.С.Высоцкий типа (С))


Цитата Сообщение от BVladimir2 Посмотреть сообщение
ЭтаФорма.Список.Отбор.Элемент
Это свойство таб.поля. Отбор в дин списке - это СКД. Вполне вероятно, что совпадения в них не всегда гуманны, а о тонкостях их взаимодействия я, честно говоря, не выяснил ещё (вот может с Вашей помощью ).
Далее. События флажка тоже могут быть описаны (без учёта интерактивных настроек)... хз как. Не помешают фрагменты скриптов.
Третье. Как влияет интерактивный отбор на элементы отбора дин.списка - я уже подмечал: не знаю, врать не буду. Но, думаю, если покопать в этом направлении - то всё можно устаканить. Особенно, если присутствующие помогут
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
14.05.2013, 18:34  [ТС] 3
Процедура создания элемента отбора:
1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Функция ДобавитьЭлементОтбораДС(СписокО, ИмяПоля, Значение, ВидСравнения = Неопределено, Использование = Неопределено)
    нЭлемент = СписокО.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    нЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных (ИмяПоля);
    нЭлемент.ВидСравнения = ?(ВидСравнения = Неопределено, ВидСравненияКомпоновкиДанных.Равно, ВидСравнения);
    нЭлемент.ПравоеЗначение = Значение;
    Если Использование <> Неопределено Тогда
        нЭлемент.Использование = Использование;   
    КонецЕсли;
    Возврат нЭлемент;
КонецФункции

Далее в обработчике "ПриОткрытии" (формы):

1C
1
ОтборСекции = ДобавитьЭлементОтбораДС(ЭтаФорма.Список.Отбор, "Родитель", 0, ВидСравненияКомпоновкиДанных.НеЗаполнено);
Перем. "ОтборСекции" объявлена в начале модуля формы.

Далее в обработчике флажка "ПриИзменении":
1C
1
ОтборСекции.Использование = Не ОтборСекции.Использование;
Все. До манипуляций со справочником все работатет - созданный элемент отбора включается/выключается как надо.
Но после изменений в справочнике перестает. Перем. "ОтборСекции" остается неизменной, ее свойство "Использование" меняется как и должно, но на элемент отбора это уже никак не влияет...
0
2953 / 1765 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
14.05.2013, 18:47 4
Понятно. т.е. дин.список шататный (без собственного запроса?). Отбор синхронизирован с отбором таб.поля.
Так... что у нас происходит: дин.список перезапросился, отбор кирдыкнулся. Может быть? Тогда это фича.
Лекарство - переустановить отбор после изменения (стыдно, но я даже не знаю, есть ли событие обновления списка )
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
14.05.2013, 19:38  [ТС] 5
Цитата Сообщение от duk337 Посмотреть сообщение
Понятно. т.е. дин.список шататный (без собственного запроса?). Отбор синхронизирован с отбором таб.поля.
Так... что у нас происходит: дин.список перезапросился, отбор кирдыкнулся. Может быть? Тогда это фича.
Лекарство - переустановить отбор после изменения (стыдно, но я даже не знаю, есть ли событие обновления списка )

Обновление списка ничего не дает, сами созданные элементы отбора после манипуляций в справочнике никуда не исчезают и в режиме приложения их можно включить/выключить через настройки списка. Только вот переменные, которым присвоены
эти элементы, более не влияют на эти самые элементы, хотя до манипуляций со справочником влияли как и должны...
0
2953 / 1765 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
14.05.2013, 23:51 6
дык при обновлении отбора должна переприсвоится ссылка на элемент отбора. Раз отбор забекарился - значит и переменная - нил. Надо повторить инициализацию отбора как про открытии, но с очисткой на всякий пожарный.
Цитата Сообщение от BVladimir2 Посмотреть сообщение
Обновление списка ничего не дает
в смысле перехват события "Обновление"? Я тут не догнал...
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
15.05.2013, 00:20  [ТС] 7
Цитата Сообщение от duk337 Посмотреть сообщение
дык при обновлении отбора должна переприсвоится ссылка на элемент отбора. Раз отбор забекарился - значит и переменная - нил. Надо повторить инициализацию отбора как про открытии, но с очисткой на всякий пожарный.
в смысле перехват события "Обновление"? Я тут не догнал...
Как обновить ссылку-то ? Заново создать элемент отбора и в ту же перем. его запихнуть ? Зачем тогда работать с перем, если ее каждый раз придется заново создавать... Вообщем, прихожу к выводу, что это недоработка платформы. И, в таком случае, смысла нет никакого пытаться отборы создавать программно - делать их в конфигураторе в настройке списка, а в программе включать или выключать их напрямую.

У дин.списка есть метод: "ЭтаФорма.Элементы.Список.Обновить();"...
0
2953 / 1765 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
15.05.2013, 00:32 8
надо повторить с отбором экзекуцию, как приОткрытии. Момент - обновление списка. Надо его поймать. (А Список.Обновить - это его вызвать). должно быть перехватываемое событие, соответствующее обновлению списка.

Не по теме:

Пятачок: НУ НЕ ЗНАЮ Я ЕГО!

И если что - возможно, надо будет очистить отбор перед новой инициализацией.

Добавлено через 1 минуту
Цитата Сообщение от BVladimir2 Посмотреть сообщение
если ее каждый раз придется заново создавать
это ж ссылка! Переменной-то похрен. А ссылка отъезжает
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
15.05.2013, 13:49  [ТС] 9
Повторять один и тот же код вместо того чтобы использовать изначально установл. переменную - вряд ли то что хотели разраб. платформы. Все таки недоработка это !

Кстати сказать, помимо отбора я еще устанавливал программно элем. условного оформления (тоже с отбором ес-но). Так вот, при закрытии окна со списком и при новом его открытии с соотв. новой инициализацией усл.оформления - элементы этого оформления дублировались, тогда как элементы отбора нет. Поэтому приходилось при создании усл.оформления предварительно очищать уже имеющееся оформл. (если было). Что, вообщем, тоже похоже на недоработку...
0
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
15.05.2013, 14:55 10
Задайте отбор в настройках дин. списка. И просто выведите его на форму. Реализацию смотрите в типовых конфигурациях.
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
15.05.2013, 18:15  [ТС] 11
Цитата Сообщение от Fenomen Посмотреть сообщение
Задайте отбор в настройках дин. списка. И просто выведите его на форму. Реализацию смотрите в типовых конфигурациях.
Да так и пришлось делать то, но зачем тогда было предусматривать возможность программной установки отборов...
0
Модератор
Эксперт 1С
3155 / 2826 / 539
Регистрация: 10.03.2011
Сообщений: 10,920
Записей в блоге: 1
16.05.2013, 00:17 12
Блин постоянно забываю что тут мисту не разместишь!

Добавлено через 4 минуты
На примере модуля УФ расскажу, так совсем понятно будет.
Имеем модуль:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаКлиенте
Перем А;
 
&НаКлиенте
Процедура ААА()
А = 0;
КонецПроцедуры
 
&НаСервере
ПроцедураБББ()
КонецПроцедуры
 
&наКлиенте
Процедура ВВВ()
Б = а;
КонецПроцедуры
 
А = 1;

Вызываем последовательно процедуры. Чему будет равна переменная Б? 0? Неа, 1!

При вызове серверных процедур модуль компилиться заного, при вызове клиентских то же.

(Цитировал Чистова П.)

Добавлено через 7 минут
На мой взгляд это все-таки баг(фича) платформы
0
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
16.05.2013, 13:18  [ТС] 13
Это что ж получается - перед каждым серв.вызовом перем. на клиенте нужно "сохранять" а потом восстанавливать ?
0
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.05.2013, 15:02 14
Цитата Сообщение от BVladimir2 Посмотреть сообщение
Это что ж получается - перед каждым серв.вызовом перем. на клиенте нужно "сохранять" а потом восстанавливать ?
Используйте реквизиты формы.
1
16 / 16 / 0
Регистрация: 26.02.2013
Сообщений: 458
16.05.2013, 20:04  [ТС] 15
Цитата Сообщение от Fenomen Посмотреть сообщение
Используйте реквизиты формы.
Хорошая мысль !
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2013, 20:04

8.3 Упр.прил.: Дерево из Запроса ?
Есть справочник с группами и элементами - нужно получить дерево с видом: Группа Элемент...

8.3 Упр.прил.: ДеревоЗначений и .НайтиСтроки
Ситуация такая, нужно вывести на экран дерево с отбором строк. Делаю это путем полного...

ОбработкаЗаполнения. СтандартнаяОбработка (упр. прил: ДанныеЗаполнения)
Иерархическому справочнику Номенклатура добавили реквизит Услуга (Булево). Этому реквизиту задали...

8.3 Упр.Прил.: COMSafeArray и массив из COM объектов ?
Есть СОМ объект, некое его свойство само по себе массив из других СОМ объектов. Вопрос, можно ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru