Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Условие вхождения в список

v7: Условие вхождения в список
Я
   Лиза777
 
25.04.18 - 13:13
Добрый день. Простой момент, но чёт туплю. Мне надо в запросе условие поставить, чтобы значение входило в список. МойСписок - это список значений, в котором элементы справочника вида МойСправочник.НайтиПоКоду(55).ТекущийЭлемент.
В запросе пишу
|Условие (Товар В МойСписок);

ошибка МойСПИСОК<<?>>
Переменная не определена (МойСПИСОК)

Как не определена то? Чего не так не пойму
 
 
   Temai
 
1 - 25.04.18 - 13:14
|Условие (Товар В &МойСписок) -Найди одно отличие
   Лиза777
 
2 - 25.04.18 - 13:16
нашла, ща попробую...
   Zmich
 
3 - 25.04.18 - 13:16
(1). Речь о 7.7
   Лиза777
 
4 - 25.04.18 - 13:18
(1) неа не идёт так
   Zmich
 
5 - 25.04.18 - 13:19
(4). Мало данных. Покажи полный код, как список заполняется и код запроса.
   Джинн
 
6 - 25.04.18 - 13:19
Значит Ваш список вне видимости из процедуры, где формируется запрос.
   Карст
 
7 - 25.04.18 - 13:20
МойСПИСОК это чо ?

МойСправочник.НайтиПоКоду(55).ТекущийЭлемент.  - чойта ?
   Злопчинский
 
8 - 25.04.18 - 13:22
мойСписок - должен быть на форме или д.б. определен как глобальная переменная модуля или должен ббыть определен как локальная переменная процедуры/функции или д.б. определен как формальный параметр процедцры/функции
   Злопчинский
 
9 - 25.04.18 - 13:23
.. ну или если рубить по нашенски - то глобальная переменная глобального модуля в этом глобализованном мире...
   Лиза777
 
10 - 25.04.18 - 13:25
МойСправочник = СоздатьОбъект("Справочник.Товары");
    МойСписок = СоздатьОбъект("СписокЗначений");
    МойСправочник.НайтиПоКоду("284");  
    МойСписок.ДобавитьЗначение(МойСправочник.ТекущийЭлемент().Код);    
    МойСправочник.НайтиПоКоду("282");
    МойСписок.ДобавитьЗначение(МойСправочник.ТекущийЭлемент().Код);    
    
    Запрос
    ............
    |КодЭлемента = Документ.МойДокумент.Товар.Код;    
    ..........
    |Условие (КодЭлемента В МойСписок);
    ............
 
 Рекламное место пустует
   Злопчинский
 
11 - 25.04.18 - 13:26
Упрости, а то лишнее дергание базы
МойСписок.ДобавитьЗначение(МойСправочник.Код);
   Лиза777
 
12 - 25.04.18 - 13:27
Текст запроса со списком формируются в ОДНОЙ функции, а выполняется запрос в процедуре уже
   Злопчинский
 
13 - 25.04.18 - 13:27
(10) написано в целом правильно.
если ругается - значит либо МойСписок другими буквами в разных местах написан либо вы чего-то недоговариваете
   Лиза777
 
14 - 25.04.18 - 13:27
(11) ок, спс
   Лиза777
 
15 - 25.04.18 - 13:29
(13) я название и копировала и пробовала менять. Может чего-то не договариваю, только пока не пойму чего
   Злопчинский
 
16 - 25.04.18 - 13:29
а должно быть вот так
МойСправочник = СоздатьОбъект("Справочник.Товары");

МойСписок = СоздатьОбъект("СписокЗначений");

МойСправочник.НайтиПоКоду("284");  
МойСписок.ДобавитьЗначение(МойСправочник.ТекущийЭлемент());    

МойСправочник.НайтиПоКоду("282");
МойСписок.ДобавитьЗначение(МойСправочник.ТекущийЭлемент()); 

 |Элемент = Документ.МойДокумент.Товар;    
 ..........
 |Условие (Элемент В МойСписок);
   Злопчинский
 
17 - 25.04.18 - 13:30
(12) недостаточно передать в функцию ТЕКСТ запроса - текст он и есть текст. в нем нет никаких списокв и справочников.
в функцию следует передать в т.ч. и переменные, которые упоминаются в тексте запроса
   Zmich
 
18 - 25.04.18 - 13:31
(12). Запрос должен выполняться в том же месте, где формируется список значений. Текст запроса - это просто строка.
   Злопчинский
 
19 - 25.04.18 - 13:31
вот это:
МойСправочник.НайтиПоКоду("284");  
МойСписок.ДобавитьЗначение(МойСправочник.ТекущийЭлемент()); 

- быдлокод.
Не отрабатывается ситуация когда элемент не найден по коду. Пздж что такой код всегда будет найден - является всего лишь довеском к быдлокоду и ничем иным.
   Лиза777
 
20 - 25.04.18 - 13:34
(8) помогло. Объявила переменную МойСписок в модуле формы и не ругается )
   Лиза777
 
21 - 25.04.18 - 13:34
(18) точно!
   Злопчинский
 
22 - 25.04.18 - 13:35
если надо в коде постоянно обращаться к списку каких-то значений, а в конфигурации нет подходящего объекта для хранения такого списка, то в качестве "хранилища" таких элементов можно использовать люой документ, в котором есть ТЧ Товары.

Запихнуть этот документ-контейнер в начало журнала. Какими значениями заполнит пользователь этот контейнер - то и фильтровать запрос.

А сам документ или искать или запихнгуть как ссылку в константу например (для начала)
   Злопчинский
 
23 - 25.04.18 - 13:36
(21) точно не в (18), а в (17)
в (18) - опоздунец ;-)
   Лиза777
 
24 - 25.04.18 - 13:36
ну да. Спасибо!!!!!
   Злопчинский
 
25 - 25.04.18 - 13:41
Спасибо не надо!
надо участвовать в "Мисс бюст" нв ежегодных мистаконкрсах! ;-)
   Джинн
 
26 - 25.04.18 - 13:43
(10) А зачем Вы вообще кодами пользуетесь, а не ссылками?
   Злопчинский
 
27 - 25.04.18 - 13:56
(26) От бездуховности, наверное... ;-)
   Лиза777
 
28 - 26.04.18 - 05:03
(25, 26) ссылками это просто ТекущийЭлемент() ? Мне кажется это будет более громоздко в памяти держать, чем просто число - код
   Sserj
 
29 - 26.04.18 - 05:37
(28) А ТекущийЭлемент() в списке это на самом деле строка 9 символов.
   Sserj
 
30 - 26.04.18 - 05:39
+(28) А запрос со строкой
КодЭлемента = Документ.МойДокумент.Товар.Код;

Будет соединять таблицу строк документов со таблицей справочника номенклатуры чтобы получить этот самый код.
   Лиза777
 
31 - 26.04.18 - 05:49
аааа, ну значит поставлю ТекущийЭлемент(). Спасибо!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует