Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

1С. Таблица значений и дин. список на форме. Выборка данных в таблице значений при выборе строки в динамическом списке.

Антон Трясцин Профи (565), закрыт 6 лет назад
Итак.
Есть форма на внешней обработке. На форме есть таблица значений и динамический список. В реквизитах есть еще дубль таблицы значений.
Заполняются так: динамический список заполняется из регистра сведений, таблицы значений заполняются одним и тем же запросом, все это происходит при открытии формы.
И в дин. списке и в ТЗ есть столбик "Серия"

Далее задача: при активизации строки в динамическом списке достать из нее значение "Серия" и запустить поиск по этой серии в ТЗ.
Т. е. я щелкаю мышкой на строку в списке, у строки в поле "Серия" например "123".
-> В ТЗ начинается поиск "123" в столбце "Серия", строки удовлетворяющие условию остаются, остальные удаляются.

Для ясности:
ТаблицаФальсификатов - ТЗ,
ТаблицаФальсификатовНачальная - дубль ТЗ,
СписокПисем - динамический список.

Коротко - алгоритм такой:
1) БОЛЬШИМ запросом с кучей условий и т. д. я заполняю ТЗ ТаблицаФальсификатовНачальная

2) Из ТаблицаФальсификатовНачальная я тащу данные в ТаблицаФальсификатов с определенным условием, а именно СписокПисем. ВыделеннаяСтрока. Серия = ТаблицаФальсификатов. Серия (вот тут и затык).

Т. е я не знаю как правильно (что бы это именно вот работало) достать значение Серия из выделенной строки в СписокПисем и отфильтровать ТаблицаФальсификатов прямо в запросе через условие, т. к. фильтровать через цикл ТЗ в 250 000 строк - удовольствие так себе.

Имею пока такой код:

&НаКлиенте
Процедура СписокПисемПриАктивизацииСтроки (Элемент)
ПодключитьОбработчикОжидания ("ПриАктивацииСтрокиНаКлиенте", 0.2, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ПриАктивацииСтрокиНаКлиенте ()
ПриАктивизацииСтроки ();
КонецПроцедуры

&НаСервере
Процедура ПриАктивизацииСтроки ()
Запрос = Новый Запрос ("ВЫБРАТЬ
| Номенклатура,
| Наименование,
| Серия
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаФальсификатовНачальная КАК ТаблицаФальсификатовНачальная
|;
|ВЫБРАТЬ
| Номенклатура,
| Наименование,
| Серия
|ИЗ
| ВременнаяТаблица");

Запрос. УстановитьПараметр ("ТаблицаФальсификатовНачальная", ТаблицаФальсификатовНачальная. Выгрузить ());

Если а > 1 Тогда
ТаблицаФальсификатов. Очистить ();
ТаблицаФальсификатов. Загрузить (Запрос. Выполнить ().Выгрузить ());
КонецЕсли;

Для каждого ТекСтрока Из ТаблицаФальсификатов Цикл
Если НЕ ТекСтрока. Серия = СписокПисем. ВыделенныеСтроки. СерияТогда
ТекСтрока. УдалитьСтроку ();
КонецЕсли;
КонецЦикла;

Сообщение = а;
ОбщегоНазначенияКлиентСервер. СообщитьПользователю (Сообщение);

а = а + 1;

/*/

Выдает ошибку:
{ВнешняяОбработка. ВнешняяОбработка1.Форма. Форма. Форма (162)}: Поле объекта не обнаружено (ВыделенныеСтроки)
Если НЕ ТекСтрока. Серия = СписокПисем. ВыделенныеСтроки. СерияТогда
Лучший ответ
Остальные ответы
Sergey V. Voronin Искусственный Интеллект (309607) 6 лет назад
надо трассировать и смотреть тип значения и какие в нём есть свойства.
А в запрос можно условий насовать.
Работа Юлия Мыслитель (8592) 6 лет назад
не буду вдаваться в подробности зачем там дублирующие таблицы и все так сложно..., а по существу: сначала на клиенте считываете нужные данные и передаете их параметром дальше (у меня динамический список - реквизит формы, не обработки)

&НаКлиенте
Процедура ПриАктивацииСтрокиНаКлиенте ();
Серия = ЭтаФорма. ТекущийЭлемент. ТекущиеДанные. Серия; // если так не пройдет, то ставьте точку остановы и ищите где там данные текущей строки
ПриАктивизацииСтроки (Серия);
КонецПроцедуры

&НаСервере
Процедура ПриАктивизацииСтроки (Серия)
Запрос = Новый Запрос ("ВЫБРАТЬ....

естественно, вот тут уже серию использовать в качестве параметра запроса
а вообще почитайте еще в синтакс-помощнике ТаблицаЗначений - НайтиСтроки
Похожие вопросы