Имя: Пароль:
1C
1C 7.7
v7: Условие выбор складов
,
0 julia_rostov
 
27.11.12
10:49
Товарищи помогите!
Есть запрос, надо переделать условие.Посдкажите пожалуйста.
   ТЗ = "
   |Товар = Регистр.ОстаткиТоваров.Товар;
   |Кол   = Регистр.ОстаткиТоваров.Количество;
   |Склад  = Регистр.ОстаткиТоваров.Склад;
   |ПрСклад = Регистр.ОстаткиТоваров.Склад.ФлагОстатки;
   |Функция КонОст = КонОст(Кол);
   |Группировка Товар Без Групп;
 

   ???|Условие (Склад  = Константа.ОснСклад);
   |Условие (Товар в СписТоваров);
   |";
Вот вместо этого условия ???|Условие (Склад  = Константа.ОснСклад); должен выбираться склад например с кодом 56,78,94.(т.е. одновременно  условие по 3 -м складам) Как правильно написать условие.Буду всем очень благодарна.
1 Wobland
 
27.11.12
10:50
или?
2 julia_rostov
 
27.11.12
10:51
сейчас делается просто по основному складу, а мне надо по 3 -м складам одновренно.
3 lxndr
 
27.11.12
10:51
Условие (Товар в СписТоваров);

со складом точно так же
4 WoodMan
 
27.11.12
10:52
добавить склады в список значений, например спСкладов, условие заменить на аналогичное условие по товарам
|Условие (Склад в СпСкладов);
5 julia_rostov
 
27.11.12
10:55
Я правильно поняля,если нет поправьте.... надо создать новый список значений СпСклады???  и обращаться к нему в запросе
6 Морозов Александр
 
27.11.12
10:56
правильно
7 julia_rostov
 
27.11.12
10:58
А можно просто в условии жестко прописать номера складов по которым будет отбор?? И если не трудно пример.
8 Godofsin
 
27.11.12
10:59
(7) Это не есть гуд.
9 julia_rostov
 
27.11.12
11:00
СписТоваров = СоздатьОбъект("СписокЗначений");
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
       СписТоваров.ДобавитьЗначение(Товар);
   КонецЦикла;
   
   СписСкладов = СоздатьОбъект("СписокЗначений");
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
       СписСкладов.ДобавитьЗначение(Товар);
   КонецЦикла;
   ТЗ = "
   |Товар = Регистр.ОстаткиТоваров.Товар;
   |Кол   = Регистр.ОстаткиТоваров.Количество;
   |Склад  = Регистр.ОстаткиТоваров.Склад;
   |ПрСклад = Регистр.ОстаткиТоваров.Склад.ФлагОстатки;
   |Функция КонОст = КонОст(Кол);
   |Группировка Товар Без Групп;


   |Условие (Склад в СписСкладов);
   |Условие (Товар в СписТоваров);
т.е. вот так будет правильней???
10 Godofsin
 
27.11.12
11:01
(9) Нет. предполагаю, что так:
СписСкладов.ДобавитьЗначение(Склад);
11 Godofsin
 
27.11.12
11:01
И то, это если у тебя есть в ТЧ реквизит "Склад"
12 julia_rostov
 
27.11.12
11:02
ой извиняюсь да вы совершенно правы!! это моя опечатка. Спасибо большое
13 Erhov_egor
 
27.11.12
11:02
ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
       СписСкладов.ДобавитьЗначение(Товар);
   КонецЦикла;
Где товар склад должен быть
14 julia_rostov
 
27.11.12
11:03
Только вот ругается он на склад!!!Переменная не определена (Склад)
15 Erhov_egor
 
27.11.12
11:03
А можно было  через или еще сделать
16 Erhov_egor
 
27.11.12
11:03
Ну так склад надо получать,это же просто переменная
17 Erhov_egor
 
27.11.12
11:04
А где фото?
18 julia_rostov
 
27.11.12
11:04
так я спрашивала как сделать через или может подскажите??
19 julia_rostov
 
27.11.12
11:05
фото кину
20 Godofsin
 
27.11.12
11:05
(14) Ну так значит нет в ТЧ склада, определяй по-другому
21 julia_rostov
 
27.11.12
11:07
фото кинула
22 Erhov_egor
 
27.11.12
11:07
Или например можно так:
СправСклад = СоздатьОбъект("Справочник.Склад");
СправСклад.НайтиПоКоду("23");
СписСкладов.ДобавитьЗначение(СправСклад.ТекущийЭлемент);
СправСклад.НайтиПоКоду("24");
СписСкладов.ДобавитьЗначение(СправСклад.ТекущийЭлемент);
СправСклад.НайтиПоКоду("25");
СписСкладов.ДобавитьЗначение(СправСклад.ТекущийЭлемент);
23 julia_rostov
 
27.11.12
11:07
так как сделать через ИЛИ
24 Builder
 
27.11.12
11:07
ВыбСклад = СоздатьОбъект("Справочник.Склады");
ВыбСклад.НайтиПоКоду(56);
СписСкладов.ДобавитьЗначение(ВыбСклад.ТекущийЭлемент());
ВыбСклад.НайтиПоКоду(78);
СписСкладов.ДобавитьЗначение(ВыбСклад.ТекущийЭлемент());

Поправить по месту название справочника и тип кода.
25 Godofsin
 
27.11.12
11:08
(22) А потом какой-нибудь мудрый юзер сменит код "23" на код "445" и вывалится ошибка
26 Erhov_egor
 
27.11.12
11:09
(25)Тогда сделать выбор из справочника на форме и чтоб тащил в список
27 Voronve
 
27.11.12
11:10
(0) Сделай список складов элементом формы отчета. Переложи проблему выбора складов на юзера
28 Godofsin
 
27.11.12
11:11
+(25) тогда уж так:
Если СправСклад.НайтиПоКоду("23") = 1 тогда
СписСкладов.ДобавитьЗначение(СправСклад.ТекущийЭлемент);
иначе
Сообщить("Не обнаружен склад");
КонецЕсли;
29 Erhov_egor
 
27.11.12
11:13
(28)А если пользователь такой то может он коды у всех поменяет,по потом твой код 23 будет на другом складе
30 Erhov_egor
 
27.11.12
11:14
Короче на форме сделай список, и кнопку на кнопке напишешь в формулу процедуру какую нибудь
31 Godofsin
 
27.11.12
11:17
(29) все правильно, потому вариант (26) (27) оптимальный
32 Erhov_egor
 
27.11.12
11:53
Там ОткрытьПодбор();
2 + 2 = 3.9999999999999999999999999999999...