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

Отбор из справочника, на который наложен фильтр

Автор stomsky, 01 авг 2011, 18:28

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

stomsky

Доброго времени суток!
1С версии 8.1.
Подскажите плиз как мне реализовать заполнение табличной части документа данными из справочника, предварительно наложив на справочник некоторый фильтр?
Суть такова: мне в табличную часть документа надо отобрать несколько сущностей

stomsky

Доброго времени суток!
1С версии 8.1.
Подскажите плиз как мне реализовать заполнение табличной части документа данными из справочника, предварительно наложив на справочник некоторый фильтр?

Поясню подробнее. Мне в табличную часть документа надо отобрать несколько сущностей из справочника (например, справочник основных средств). Проблема в том, что в форме отбора из справочника должны быть видны не все основные средства, а только те, которые удовлетворяют некоторому условию (ну например, в ходят в некоторый заранее известный список по инвентарным номерам-кодам).
Не понятно как такое реализовать?

В форме редактирования документа есть таблица (сетка), связанная с табличной частью документа.
Для столбца этой сетки, связанного с атрибутом "ОсновноеСредство" табличной части, я устанавливаю обработчик события "НачалоВыбора".
В этом обработчике я получаю форму выбора:

ФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора(,ЭтаФорма);
ФормаВыбора.Отбор ... // здесь инициализирую фильтр
ФормаВыбора.Открыть();

Добавление в результате проходит успешно. Но если я таким образом редактирую уже введенную строку (т.е. вмсто одного основного средства выбираю другое), то у меня просто добавляется еще одна новая строка. А старая (котороую я редактировал) так и остается неизменным.

Я в 1С-ке новичек, и подозреваю, что просто делаю что-то не так...
Подскажите пожалуйста как правильно реализовать описанный мной функционал?

stomsky

Неужели ни разу никому не требовалось заполнять табличную часть документа из предварительно отфильтрованного справочника??? По-моему, совершенно рядовая потребность....  :dfbsdfbsdf:
Или я слишком сумбурно описал проблему?

Шурыгин Иван Сергеевич

описали маловато.
вы наверно забыли такую деталь как СтандартнаяОбработка = Ложь;
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

stomsky

Цитата: Шурыгин Иван Сергеевич от 04 авг 2011, 06:07
описали маловато.
вы наверно забыли такую деталь как СтандартнаяОбработка = Ложь;
Нет про
СтандартнаяОбработка = Ложь;
я не забыл.
Если я не прописываю эту строку, то открываются сразу два диалога выбора (один порождается стандартной обработкой действия, другой - тот, который я создаю своим кодом).
Если эту строку я прописываю, то диалог только один (как и надо).

НО ПРОБЛЕМА остается: независимо от того добавляю я строку или редактирую, фактически происходит ДОБАВЛЕНИЕ строки.
Может у меня в принципе подход неверный?

has

Т.е. при редактировании она добавляет новую строку? Хм, значит где-то программно указано добавление строки. Отладчиком попробуй пробежаться.

stomsky

Все. Разобрался. Никаких трассировок не понадобилось.  :)
Нужно было при создании формы выбора в качестве владельца указывать не форму ("ЭтаФорма"), а элемент, из события которого вызывается форма выбора. В моем случае - ячейка грид, в котором отображается табличная часть.
Этот элемент даже передается параметром в процедуру обработчик!
Надо было сделать так (разница выделена жирным):

ЦитироватьФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора(,Элемент);

Спасибо всем, кто ответил!

CalvinKlein


Теги:

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

Рейтинг@Mail.ru

Поиск