Работа Юлия
Мыслитель
(8592)
6 лет назад
не буду вдаваться в подробности зачем там дублирующие таблицы и все так сложно..., а по существу: сначала на клиенте считываете нужные данные и передаете их параметром дальше (у меня динамический список - реквизит формы, не обработки)
&НаКлиенте
Процедура ПриАктивацииСтрокиНаКлиенте ();
Серия = ЭтаФорма. ТекущийЭлемент. ТекущиеДанные. Серия; // если так не пройдет, то ставьте точку остановы и ищите где там данные текущей строки
ПриАктивизацииСтроки (Серия);
КонецПроцедуры
&НаСервере
Процедура ПриАктивизацииСтроки (Серия)
Запрос = Новый Запрос ("ВЫБРАТЬ....
естественно, вот тут уже серию использовать в качестве параметра запроса
а вообще почитайте еще в синтакс-помощнике ТаблицаЗначений - НайтиСтроки
Есть форма на внешней обработке. На форме есть таблица значений и динамический список. В реквизитах есть еще дубль таблицы значений.
Заполняются так: динамический список заполняется из регистра сведений, таблицы значений заполняются одним и тем же запросом, все это происходит при открытии формы.
И в дин. списке и в ТЗ есть столбик "Серия"
Далее задача: при активизации строки в динамическом списке достать из нее значение "Серия" и запустить поиск по этой серии в ТЗ.
Т. е. я щелкаю мышкой на строку в списке, у строки в поле "Серия" например "123".
-> В ТЗ начинается поиск "123" в столбце "Серия", строки удовлетворяющие условию остаются, остальные удаляются.
Для ясности:
ТаблицаФальсификатов - ТЗ,
ТаблицаФальсификатовНачальная - дубль ТЗ,
СписокПисем - динамический список.
Коротко - алгоритм такой:
1) БОЛЬШИМ запросом с кучей условий и т. д. я заполняю ТЗ ТаблицаФальсификатовНачальная
2) Из ТаблицаФальсификатовНачальная я тащу данные в ТаблицаФальсификатов с определенным условием, а именно СписокПисем. ВыделеннаяСтрока. Серия = ТаблицаФальсификатов. Серия (вот тут и затык).
Т. е я не знаю как правильно (что бы это именно вот работало) достать значение Серия из выделенной строки в СписокПисем и отфильтровать ТаблицаФальсификатов прямо в запросе через условие, т. к. фильтровать через цикл ТЗ в 250 000 строк - удовольствие так себе.
Имею пока такой код:
&НаКлиенте
Процедура СписокПисемПриАктивизацииСтроки (Элемент)
ПодключитьОбработчикОжидания ("ПриАктивацииСтрокиНаКлиенте", 0.2, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПриАктивацииСтрокиНаКлиенте ()
ПриАктивизацииСтроки ();
КонецПроцедуры
&НаСервере
Процедура ПриАктивизацииСтроки ()
Запрос = Новый Запрос ("ВЫБРАТЬ
| Номенклатура,
| Наименование,
| Серия
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаФальсификатовНачальная КАК ТаблицаФальсификатовНачальная
|;
|ВЫБРАТЬ
| Номенклатура,
| Наименование,
| Серия
|ИЗ
| ВременнаяТаблица");
Запрос. УстановитьПараметр ("ТаблицаФальсификатовНачальная", ТаблицаФальсификатовНачальная. Выгрузить ());
Если а > 1 Тогда
ТаблицаФальсификатов. Очистить ();
ТаблицаФальсификатов. Загрузить (Запрос. Выполнить ().Выгрузить ());
КонецЕсли;
Для каждого ТекСтрока Из ТаблицаФальсификатов Цикл
Если НЕ ТекСтрока. Серия = СписокПисем. ВыделенныеСтроки. СерияТогда
ТекСтрока. УдалитьСтроку ();
КонецЕсли;
КонецЦикла;
Сообщение = а;
ОбщегоНазначенияКлиентСервер. СообщитьПользователю (Сообщение);
а = а + 1;
/*/
Выдает ошибку:
{ВнешняяОбработка. ВнешняяОбработка1.Форма. Форма. Форма (162)}: Поле объекта не обнаружено (ВыделенныеСтроки)
Если НЕ ТекСтрока. Серия = СписокПисем. ВыделенныеСтроки. СерияТогда