Имя: Пароль:
1C
1С v8
сложение остатков двух складов
0 lampa
 
14.01.16
13:14
Вот есть у меня запрос такой:


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

Запрос.УстановитьПараметр("Наименование",Справочники.Склады.НайтиПоНаименованию("Оптовый Склад"));


Он вынимает остатки с одного склада
Нашел топик, где вроде похожая задача: v8: Запрос из двух регистров.

Я так понимаю, нужно объединить 2 запроса в один:


Запрос.Текст = "ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.ВНаличииОстаток,
|    Номенклатура1.Артикул
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Наименование) КАК ТоварыНаСкладахОстатки
|        ПРАВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
|        ПО ТоварыНаСкладахОстатки.Номенклатура = Номенклатура1.Ссылка
|ОБЪЕДИНИТЬ
|    ТоварыНаСкладахОстатки.ВНаличииОстаток,
|    Номенклатура1.Артикул
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Наименование2) КАК ТоварыНаСкладахОстатки
|        ПРАВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
|        ПО ТоварыНаСкладахОстатки.Номенклатура = Номенклатура1.Ссылка

Запрос.УстановитьПараметр("Наименование",Справочники.Склады.НайтиПоНаименованию("Оптовый Склад"));
Запрос.УстановитьПараметр("Наименование2",Справочники.Склады.НайтиПоНаименованию("Розничный Склад"));


В верном направлении иду?
1 lubitelxml
 
14.01.16
13:20
Склад В (&списНаименование), где списНаим - массив, тогда и объединять не надо
2 eklmn
 
гуру
14.01.16
13:21
конфигурация какая?
3 lubitelxml
 
14.01.16
13:21
СписНаим.Добавить(Справочники.Склады.НайтиПоНаименованию("Оптовый Склад"))
4 lampa
 
14.01.16
13:23
(2) 1С:Предприятие 8.3 (8.3.7.1776)
5 eklmn
 
гуру
14.01.16
13:24
(4) крута, тогда бери метлу и вперед
6 Azverin
 
14.01.16
13:24
(4) ответ в (1), но тебе это не поможет
7 eklmn
 
гуру
14.01.16
13:25
(1) тоже за ним
8 lampa
 
14.01.16
13:25
(1) я вот только не понимаю, как объединится количество? Мне кажется, номенклатура просто будет выводится из нескольких складов, а не объединяться.
9 eklmn
 
гуру
14.01.16
13:26
да блин обычный отчет по товарам с отбором по нужным складам и без группировки склада
10 lubitelxml
 
14.01.16
13:26
(8) попробуй, сам все увидишь
11 lubitelxml
 
14.01.16
13:27
(7) свое мнение либо озвучь, либо при себе оставь, твои выбросы здесь никому не нужны
12 eklmn
 
гуру
14.01.16
13:31
(1) вбросы тут посты (1)(3)(4), свое мнение я уже озвучил.
13 tznimble
 
14.01.16
13:36
Запрос = Новый Запрос;
    
Запрос.Текст = "ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.ВНаличииОстаток,
|    Номенклатура1.Артикул,
|    Номенклатура1.Код,
|    Номенклатура1.Наименование
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстатки
|        ПРАВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
|        ПО ТоварыНаСкладахОстатки.Номенклатура = Номенклатура1.Ссылка";

СписокСкладов = Новый Массив();
СписокСкладов.Добавить(Справочники.Склады.НайтиПоНаименованию("Оптовый Склад"));
СписокСкладов.Добавить(Справочники.Склады.НайтиПоНаименованию("Розничный Склад"));

Запрос.УстановитьПараметр("Наименование",СписокСкладов);

По поводу как объединится количество: читай про виртуальные таблицы

Про "вброс" от eklmn - в некоторых конфигурациях для оптовых и розничных складов используются разные регистры. В этом случае нужно объединять и группировать данные из этих регистров.
Поэтому и возник вопрос "какая конфигурация".А в ответ ты пишешь версию платформы. В связи с чем eklmn тебя в дворники и произвел.

Доступно объяснил?
14 lampa
 
14.01.16
13:38
(13) блин, я в двух постах кидал именно эти данные и никто мне нормально не объяснил, что это не то, вот я и думал до этого времени, что я кидаю конфигурацию. Вот Управление торговлей, редакция 11.1 (11.1.10.199)
15 tznimble
 
14.01.16
13:58
Тогда всё пройдёт как написано - в 11-й всё в одном месте хранится
16 lampa
 
14.01.16
18:13
(15) м, по какой-то причине выбираются товары только с оптового склада. Даже если я меняю позиции складов в массиве, ничего не изменяется. А если брать из массива оптовый склад, то выбирается из розницы (т.е. тут всё нормально). попробовать через запрос ОБЪЕДИНИТЬ?
17 lampa
 
14.01.16
18:13
(16) убрать оптовый склад*
18 tznimble
 
14.01.16
18:18
Давайте попробуем понять:
1. Номенклатура у Вас должна выводиться вся, ибо правым соединением подтянут справочник Номенклатура
ergo 2. Логично предположить, что у Вас показывает остатки только по одному складу?
19 Мимохожий Однако
 
14.01.16
18:21
Второй склад пустой, вот и не показывает
20 lampa
 
14.01.16
18:23
(19) (18) смотрите, когда в массиве 2 склада, то выводится (видимо потому что товара больше) только количество оптового склада. Если из массива убрать оптовый слад, то выводится количество розничного
21 tznimble
 
14.01.16
18:23
На демо УТ всё отлично работает. Попробуйте заменить

Склад В (&СписокСкладов)

на

Склад = &Склад1 или Склад = &Склад2


И изменить задание параметров.
22 mikecool
 
14.01.16
18:25
(21) Склад В (&СписокСкладов) = Склад = &Склад1 или Склад = &Склад2
23 Мимохожий Однако
 
14.01.16
18:26
(20)Почему берешь ресурс "ВНаличииОстаток"? ИМХО, здесь засада.
24 tznimble
 
14.01.16
18:29
(22) верно, равно, но у человека отчего-то не работает. А на типовой демо всё отлично.
"Будем искать" (q)
25 tznimble
 
14.01.16
18:34
(23) Правильно он берёт. Ему нужен остаток товаров в наличии для указанных складов.
26 Мимохожий Однако
 
14.01.16
18:38
(20)Убери из массива не оптовый склад,  а розничный.
27 Мимохожий Однако
 
14.01.16
18:41
Можно для начала вывести дополнительные поля Склад и НоменклатураСсылка, а потом убирать. Видимо, ТС не знает про такой инструмент как Консоль запросов.
28 lampa
 
14.01.16
18:54
Блин, у меня данные забиваются по артикулу (артикул как ключ). В этом списке идет артикул->количество.


Пока Выборка.Следующий() Цикл             
    ВозвратСерверу.Вставить(Выборка.Артикул, Выборка.ВНаличииОстаток);
КонецЦикла;


Вот в этом массиве как раз получается "товар"->325
Дальше я смотрю через "ведомость товаров по складам", там у одного товара на оптовом складе тоже 325, на рознице 4.

Сейчас добавил ключам массива название склада. Теперь же выводится, что на опте 321, а на рознице 4. Наверное я чего-то не понимаю в отчетах (может там товар в резерве), пока не буду никому голову морочить, завтра узнаю, почему так может быть.
29 Мимохожий Однако
 
14.01.16
19:01
Есть еще регистр Свободные остатки
30 lampa
 
14.01.16
19:03
всем спасибо, в отчете надо еще период указывать, там как раз 321 штука идет. "Склад В (&СписокСкладов)" верный.