Имя: Пароль:
1C
1С v8
отбор в подчиненном справочнике
,
0 Elf56
 
06.03.18
09:21
Всем доброго времени суток.

Имеется 1С:Предприятие 8.3 (8.3.10.2667)
И самописная конфигурация

Есть справочник "Основной" и подчиненный ему справочник "Подчиненный".
Справочник "Подчиненный" отображается на форме справочника "Основной" с отбором по владельцу формы обычные.

Также в процедуре "При получении данных" в табличной части отображающей "Подчиненный" справочник есть запрос получающий по определенному условию элементы подчиненного справочника владельца.

Далее полученный список помещается в такое условие

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

где СпПозиции массив полученный из запроса.

И вот что удивительно если запустить 1с то все будет работать верно, но процедуры "ПриВыводеСтроки" и "ПриПолученииДанных" будут срабатывать каждую секунду, Если же закоментировать выше указанный код т.е. не добавлять еще одного условия то процедуры не будут вызываться каждую секунду. Почему так получается?

И еще мне нужно в процедуре "ПриВыводеСтроки" использовать параметр ДанныеСтроки.Ссылка, но почему то если в табличной части подчиненного справочника интерактивно из формы по стандартной кнопке табличной части отлючить отбор то параметр ДанныеСтроки становится равным НЕОПРЕДЕЛЕНО, а в процедуре у меня есть обращение к ДанныеСтроки.Ссылка, соответственно при отлючении отбора вываливается ошибка. Если Сделать проверку типо

Если НЕ ДанныеСтроки = НЕОПРЕДЕЛЕНО Тогда

то отлючение отбора по кнопке, получаемого в процедуре "ПриПолученииДанных" не происходит.

Как организовать правильно дополнительный отбор в подчинном справочнике по мимо отбора по владельцу и чтобы отлючение этого дополнительного отбора работало корректно в моем случае.
Всем заранее спасибо за ответы.
1 hhhh
 
06.03.18
09:37
(0) вам надо ПриАктивизацииСтроки. ПриПолученииДанных она сразу целый экран выводит, зачем вам 20 элементов сразу обрабатывать?
2 catena
 
06.03.18
10:06
(0)Может быть, установка отбора зацикливает ПриПолученииДанных?
3 Ёпрст
 
06.03.18
10:18
(0) ёё...
выкинь свой код на помойку.

У  табличного поля на форме, в котором у тебя подчиненный справочник, поставь свойство "Связь по владельцу" и воткни туда ССылка.
Всё.
4 Elf56
 
06.03.18
10:30
Это не мой код дали исправить

Там уже стоит "связь по владельцу" просто к ней еще прибавляется условие из процедуры ПриПолученииДанных
5 Ёпрст
 
06.03.18
10:32
(4) в ПриПолученииДанных отбор устанавливаешь ? - не удивительно
6 Elf56
 
06.03.18
10:34
(5) а как надо ?
7 Ёпрст
 
06.03.18
10:38
Хотя бы в ПриОткрытии установить отбор 1 раз, ну и максимум, в ПослеЗаписи
8 catena
 
06.03.18
10:38
(6)Тебе ОТБОР нужен в процедурах, которые постоянно отрабатывают при насиловании поля на форме или все-таки один раз достаточно при открытии формы?
9 Ёпрст
 
06.03.18
10:39
усё.
10 hhhh
 
06.03.18
10:40
(6) ну ты бесконечный цикл инициируешь. ПриПолученииДанных ты меняешь отбор, а при изменении отбора программа естественно получает новые данные, опять запускается ПриПолученииДанных, по второму разу, оно опять меняет отбор, потом запускается третье ПриПолученииДанных, и так до бесконечности. Должно у тебя уйти в бесконечную рекурсию. Непонятно, почему у тебя вообще этот кусок работает, видимо ты везунчик.
11 Elf56
 
06.03.18
10:41
Спасибо хот мыслей понял.
Да говорю же не я писал заметил, что косяк вот и начал в нем разбираться, а не тупо писать как программер до меня )
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший