Имя: Пароль:
1C
1С v8
Заполнение перечня номенклатуры по остаткам на складе
,
0 Валидатор
 
12.11.13
16:18
конфа 10.3 УТ 8.1. Есть документ установка скидок номенклатуры, нужно сделать возможность заполнения табличной части - Товары по данным остатков на складах (склады задаются на закладке Получатели скидки). Добавил кнопку для заполнения в Товарах, при нажатии на нее срабатывает запрос, в котором у меня и встает вопрос:
ВЫБРАТЬ
    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    ТоварыНаСкладахОстатки.Номенклатура
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура

этим запросом я получаю остаток товаров на складе, и так понимаю в параметр склад нужно передавать склад, который определяется у меня в табличной части получатели скидки, вот тут и возникает вопрос, не получается связать их(
1 an-korot
 
12.11.13
16:43
точнее можно? ты в переменную склад не можешь условие передать? или тебе нужно получить инфу по  2 или более складам?
2 Валидатор
 
12.11.13
16:45
(1) мне нужно получить склад с закладки Получателискидки(Склад) записать это значение, и потом передать его как параметр для запроса по отбору номенклатуры
3 Валидатор
 
12.11.13
16:46
ВЫБРАТЬ
                    |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
                    |    ТоварыНаСкладахОстатки.Номенклатура КАК ТоварыДляЗагрузки,
                    |    УстановкаСкидокНоменклатурыПолучателиСкидки.Получатель
                    |ИЗ
                    |    Документ.УстановкаСкидокНоменклатуры.ПолучателиСкидки КАК УстановкаСкидокНоменклатурыПолучателиСкидки
                    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаСкидокНоменклатуры КАК УстановкаСкидокНоменклатуры
                    |        ПО УстановкаСкидокНоменклатурыПолучателиСкидки.Ссылка = УстановкаСкидокНоменклатуры.Ссылка
                    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                    |        ПО УстановкаСкидокНоменклатурыПолучателиСкидки.Получатель = ТоварыНаСкладахОстатки.Склад
                    |ГДЕ
                    |    ТоварыНаСкладахОстатки.Склад = &Склад
                    |    И УстановкаСкидокНоменклатуры.Ссылка = &Ссылка
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    ТоварыНаСкладахОстатки.Номенклатура,
                    |    УстановкаСкидокНоменклатуры.Ссылка,
                    |    УстановкаСкидокНоменклатурыПолучателиСкидки.Получатель";

вот запрос по поиску номенклатуры по нужному складу, а вот как в параметрпередать нужный склад, который у меня в другой тч? запросом проходил ту тч, но как то неудачно(
4 an-korot
 
12.11.13
16:47
если 1 вариант то:

|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &Склад
|СГРУППИРОВАТЬ ПО
|    ТоварыНаСкладахОстатки.Номенклатура
;
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("тутКодСклада").Ссылка);


или 2й вариант:

|ГДЕ
|    ТоварыНаСкладахОстатки.Склад.Код = &Склад
|СГРУППИРОВАТЬ ПО
|    ТоварыНаСкладахОстатки.Номенклатура
;
Запрос.УстановитьПараметр("Склад","тутКодСклада");


ву-а-ля.
5 an-korot
 
12.11.13
16:48
если нужно из нескольких складов, то нужно создать структуру и передать таким же образом ее.
6 Валидатор
 
12.11.13
16:48
(4) склад берется из тч, нельзя код склада прописать жеско
7 Wobland
 
12.11.13
16:48
а как связаны склады и номенклатуры?
8 Валидатор
 
12.11.13
16:49
(7) в регистре накопления я так полагаю)
9 Валидатор
 
12.11.13
16:50
(7) типа когда поступление происходит пишется же номенклатура и склад куда она поступает
10 an-korot
 
12.11.13
16:50
(6) и в каком виде у тебя там склад записан? ну найди по наименованию этот склад в чем проблема ;)
11 DexterMorgan
 
12.11.13
16:50
Про параметры виртуальных таблиц уже было?
12 Валидатор
 
12.11.13
16:51
(10) какое наименование? создается документ, в него пишут склад в табличную часть, потом нажимают кнопкой и данными котоые по складу этому есть заполняется номенклатура
13 an-korot
 
12.11.13
16:52
(9) ну и в чем проблема? номенклатура по документу приходит? возмите склад из документа. так не бывает: что пришел товар, а куда лег не известно ;)
14 Wobland
 
12.11.13
16:52
(9) представь факт: есть 20 картошки на помойке и 40 картошки на мусорке. как заполнять документ?
15 Валидатор
 
12.11.13
16:52
ВЫБРАТЬ
    УстановкаСкидокНоменклатурыПолучателиСкидки.Получатель.Ссылка
ИЗ
    Документ.УстановкаСкидокНоменклатуры.ПолучателиСкидки КАК УстановкаСкидокНоменклатурыПолучателиСкидки
ГДЕ
    УстановкаСкидокНоменклатурыПолучателиСкидки.Ссылка.Ссылка = &Ссылка
такой запрос по складам мне 2 строки выдает, одна пустая, другая с нужным мне складом, почему пустая строка появляется? потому что Получатели скидки два типа - договор контрагента и склад, договора нет, поэтому пусто? так?
16 Валидатор
 
12.11.13
16:53
(14) представь факт номер 2: есть указание брать картошку на мусорке, нажимаешь на кнопку и документ заполняется 40 картошками с мусорки
17 Валидатор
 
12.11.13
16:54
(14) то есть создали документ, поставили в ТЧ склад - мусорка, перешли в ТЧ товары - нажали кнопку, и все что есть на мусорке упало в наш док
18 del123
 
12.11.13
16:55
(16) Зачем склад сразу указывать в табличной части? Выведи реквизит на форму. При выполнении запроса подставляешь этот реквизит как параметр в запрос. Если есть нужда заполнять склад в табличной части, то в том же запросе добавь колонку
19 del123
 
12.11.13
16:55
(17) А сложность то в чем?:)
20 Wobland
 
12.11.13
16:55
(17) а при 80 складах в ТЧ как быть?
21 an-korot
 
12.11.13
16:56
аааа.... вот бы сразу код показали...
выгребайте все подряд, без строки:
|ГДЕ
|    ТоварыНаСкладахОстатки.Склад.Код = &Склад

потом выгрузите в таблицу отфильтруйте по складу и  любуйтесь остатками с указанием на каком складе лежит.
22 Валидатор
 
12.11.13
16:56
(2) заполнять по всем 80 складам
(18) если бы можно было вывести склад на форму как реквизит уже бы давно так сделал) но говорят типа нет, нельзя
23 Wobland
 
12.11.13
16:57
(21) >Склад.Код = &Склад
фу на тебя

похоже, надо вынуть таблицу остатков, где Склад В (Список)
24 DexterMorgan
 
12.11.13
16:57
Запрос.УстановитьПараметр("Склад", Получатели.ВыгрузитьКолонку("Склад"));
25 Wobland
 
12.11.13
16:57
(22) отлично. с задачей определились. дальше
26 DexterMorgan
 
12.11.13
16:57
(24) + в запросе Склад В ("&Склады")
27 an-korot
 
12.11.13
16:58
(25) точно.
28 an-korot
 
12.11.13
16:59
(23) без этой строки, имелось ввиду..
все клещами нужно тащить.
29 Валидатор
 
12.11.13
16:59
СписокСкладов = Новый СписокЗначений;
Для Каждого ТекСтрока из ПолучателиСкидки Цикл
    СписокСкладов.Добавить(ТекСтрока.Получатель);    
КонецЦикла;

можно так еще получить склад, но у меня в СЗ попадет 2 значения: 1 пустое, другое со складом, как от пустого избавиться?
30 Wobland
 
12.11.13
17:00
(29) del на клавиатуре
31 Валидатор
 
12.11.13
17:01
(30) ооо блин, ну какой дел, как я из списка значений делетом буду удалять строки в режиме предприятия? ну не пишите глупостей
32 an-korot
 
12.11.13
17:01
(29)

Если ПустоеЗначение(ТекСтрока.Получатель)Тогда
Продолжить;
КонецЕсли;
33 del123
 
12.11.13
17:01
(29) Есть предположение, что нужно в ТЧ склады удалить пустую строку)
34 DexterMorgan
 
12.11.13
17:01
(32) ЗначениеЗаполнено()
35 Wobland
 
12.11.13
17:01
(32) (34) фу на вас ещё раз
36 Валидатор
 
12.11.13
17:01
(32) в 8.1 нет ПустоеЗначение функции((
37 del123
 
12.11.13
17:02
(35) +1 :))
38 DexterMorgan
 
12.11.13
17:02
(32) Клюшечник
39 DexterMorgan
 
12.11.13
17:02
(35) я его просто поправил
40 an-korot
 
12.11.13
17:03
(36) ТекСтрока.Получатель= Неопределено

... или = ""

запусти разок отладчик и глянь как строка выглядит
41 DexterMorgan
 
12.11.13
17:03
А вообще тема развод какой то
42 an-korot
 
12.11.13
17:04
(41) действительно...
Валидатор, вы же по моему не 1 год уже тут, что вы такие вопросы задаете? )))))
43 Wobland
 
12.11.13
17:05
(41) (42) ни разу ЛивингСтара не читали? он круче ТС
44 Wobland
 
12.11.13
17:09
вспомнился bananan что-то..
45 an-korot
 
12.11.13
17:10
(38) внутрь цикла код ставить считаю не нужным без надобности. у 1с по моему на 8 уровней вложенности есть лимит, а потом она глючить начинает на ровном месте, в переменных например путаться... так что не надо про клюшечника.  :`-(
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан