3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
1

Отбор остатков и заказов поставщикам

10.02.2020, 08:46. Показов 1704. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, Уважаемые.
Делаю отчет, отбор остатков и оборотом, с заказам поставщикам. Хочу аналитику вести по проданым товарам, а если товар заканчивается и заказа поставщику нет, сформировать. Отбор по периоду и складам. Код вот

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Процедура КнопкаСформироватьНажатие(Кнопка)
        ТабДок=Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование,
        |   ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
        |   ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
        |   ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
        |   ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
        |   ЗаказыПоставщикам.Количество
        |ИЗ
        |   РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
        |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        |       ПО ЗаказыПоставщикам.Номенклатура.Код = ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код
        |ГДЕ
        |   ЗаказыПоставщикам.Период >= &Период";
    ДатаОтбора=?(ЗначениеЗаполнено(Период),Период,ТекущаяДата());
    
    Запрос.УстановитьПараметр("Период", ДатаОтбора);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.Показать();
 
КонецПроцедуры
Почему отбор остатков идет только там где есть заказ))) (простите не пойму). То есть отчет отбирает остатки только того товара, на которую есть заказпоставщику). Понимаю, что с соединением путаю, но не могу сообразить. Следующий вопрос такой- а как тут прикрутить отбор по складам? Сейчас никакого отбора нет, в форме реквизит склад есть, поле выбора, СправочникСсылка.Склады, нужно добавить запрос наименования склада а как не могу тоже понять. Заранее спасибо).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2020, 08:46
Ответы с готовыми решениями:

Отчет Анализ заказов поставщикам
Привет! Не мог бы кто-нибудь помочь? В УПП есть отчет "Анализ заказов поставщикам", он формируется...

Отбор остатков по группе номенклатуры
Добрый день подскажите пожалуйста, какую строку надо подправить , чтобы была возможность выбирать...

Страница с формами редактирования заказов + постраничный вывод = пустышки, если кол. заказов < заказов на стр.
Добрый день. Есть у меня страничка обновления заказов с вот таким кодом &lt;? /* Соединяемся с...

Количество заказов и сортировка заказов
1. Провести сортировку заказов по годам и для каждого года выявить заказчика сделавшего заказ на...

15
47 / 39 / 10
Регистрация: 23.04.2018
Сообщений: 139
10.02.2020, 09:09 2
ВНУТРЕННЕЕ СОЕДИНЕНИЕ - соединяет две таблицы так, чтобы попали только те данные, которые есть в обеих таблицах. Если в таблице 1 данные есть, а в таблице 2 данных (по аналитикам, по которым идет соединение) нет, то такие данные таблицы 1 в результат не попадут.

Например, если взять две таблицы

Код сотрудника ФИО
0 Иванов
1 Петров
3 Сидоров

И данные по окладам по кодам сотрудников

Код сотрудника Оклад
0 20000
3 10000
5 15000

То при внутреннем соединении по коду сотрудника попадут только эти данные
0 Иванов 20000
3 Сидоров 10000
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
10.02.2020, 09:44  [ТС] 3
Применить полное соединение?
0
30 / 23 / 7
Регистрация: 04.07.2019
Сообщений: 81
10.02.2020, 09:51 4
Я бы развернул запрос от РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты и сделал Левое
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
10.02.2020, 12:33  [ТС] 5
Да, перепробовал виды соединений и все равно результат тот же был. Понял что запрос идет от заказов, сеичас по вашему попробую

Добавлено через 2 часа 31 минуту
Все перепробовал, и полное и левое правое соединение и внутреннее. Отбор по остаткам на складе показывает только те остатки, товары которых есть в заказах. ЧЯДНТ?
1C
1
2
3
4
5
6
7
8
9
ИЗ
        |   РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
        |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        |       ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код = ЗаказыПоставщикам.Номенклатура.Код
        |ГДЕ
        |   ЗаказыПоставщикам.Период >= &Период";
    ДатаОтчета=?(ЗначениеЗаполнено(Период),Период,ТекущаяДата());
    
    Запрос.УстановитьПараметр("Период", Период);
Добавлено через 2 минуты
На сколько я понял это изза периода? Отбор периода идет от строчки ГДЕ. Может подскажете решение, как делать отбор заказов поставщикам по периоду, но и остатки и обороту отбирались ВСЕ с этого же то периода.
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
10.02.2020, 19:19  [ТС] 6
Исправил запрос. Использую вложенный запрос. Но
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"ВЫБРАТЬ
        |   ВложенныйЗапрос1.НоменклатураНаименование,
        |   ВложенныйЗапрос1.КоличествоНачальныйОстаток,
        |   ВложенныйЗапрос1.КоличествоПриход,
        |   ВложенныйЗапрос1.КоличествоРасход,
        |   ВложенныйЗапрос1.КоличествоКонечныйОстаток,
        |   ВложенныйЗапрос.Количество,
        |   ВложенныйЗапрос.Период
        |ИЗ
        |   (ВЫБРАТЬ
        |       ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК НоменклатураКод,
        |       ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование КАК НоменклатураНаименование,
        |       ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        |       ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
        |       ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
        |       ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
        |   ИЗ
        |       РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты) КАК ВложенныйЗапрос1
        |       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |           ЗаказыПоставщикам.Период КАК Период,
        |           ЗаказыПоставщикам.ЗаказПоставщику.Номер КАК ЗаказПоставщикуНомер,
        |           ЗаказыПоставщикам.Номенклатура.Код КАК НоменклатураКод,
        |           ЗаказыПоставщикам.Количество КАК Количество
        |       ИЗ
        |           РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
        |       ГДЕ
        |           ЗаказыПоставщикам.Период >= &Период, ) КАК ВложенныйЗапрос
        |       ПО ВложенныйЗапрос1.НоменклатураКод = ВложенныйЗапрос.НоменклатураКод";
    
    
    РезультатЗапроса = Запрос.Выполнить();
Но когда задаю период, ругается что
Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(27, 32)}: Не задано значение параметра "Период"
ЗаказыПоставщикам.Период >= <<?>>&Период) КАК ВложенныйЗапрос
Добавлено через 15 минут
Тут уже покрасивее пошло. Если заказа нет, в графе пусто, но остатки и обороты показывает.
0
47 / 39 / 10
Регистрация: 23.04.2018
Сообщений: 139
11.02.2020, 09:43 7
Теперь будет наоборот. Если остатков нет, а заказ - есть, то он в результат не попадет.

Если нужны данные обеих таблиц всегда, т.е. если есть и если нет парных данных - нужно полное соединение.
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
11.02.2020, 17:16  [ТС] 8
неа. работает, но показывает все прямм

Добавлено через 19 минут
правда от начала работы компании.
0
2133 / 1474 / 525
Регистрация: 16.01.2015
Сообщений: 6,309
11.02.2020, 19:28 9
Aslay, Если откровенно, Запрос - руки оторвать. Во-первых, он выдаст правильный результат только когда &Период = ТекущаяДата(), т.к. надо и в РН ТоварыНаскладах.ОстаткиИОбороты указывать тот же период.
Во-вторых, ЗАЧЕМ эти вложенные запросы, когда и проще и наглядней использовать временные таблицы и пакетный запрос, а главное понятно и легко в консоле отследить где выводит не те данные.
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
12.02.2020, 07:18  [ТС] 10
polax, спасибо). Ну я пытаюсь и так и сяк. Я думал о вт. Но не могу понять каким реквизитом подцепить товарыНаСкладахОстаткиИОбороты. В общем хотел так-отобрать заказыПоставщикам где период больше или равно указанной дате, выбрать остаткиИОборотывот, тут засада, отбор идет с самого начала, ну и подвис. Подскажите, где в ни товарыНаскладахОстаткиИОбороты есть дата. Мысль о том что придется РеализациюТовара применять-честно говоря пугает.

Ну продолжу, после отбора у меня получатся 2 ВТ, ВТ_Остатки и ВТ_Заказы, а затем уже Левым соединеним вывести в табличную форму.
Была мысль, но вот дату в остатках не могу наити.
0
1260 / 786 / 224
Регистрация: 22.04.2013
Сообщений: 5,758
Записей в блоге: 1
12.02.2020, 07:53 11
Цитата Сообщение от Aslay Посмотреть сообщение
реквизитом подцепить товарыНаСкладахОстаткиИОбороты
Цитата Сообщение от Aslay Посмотреть сообщение
Левым соединеним вывести в табличную форму
Цитата Сообщение от Aslay Посмотреть сообщение
Не задано значение параметра "Период"
не тема, а набор мемов.
ну не понимаете - почитайте ЖКК до просветления, поделайте простенькие запросики.
0
2133 / 1474 / 525
Регистрация: 16.01.2015
Сообщений: 6,309
12.02.2020, 08:07 12
Цитата Сообщение от Aslay Посмотреть сообщение
де в ни товарыНаскладахОстаткиИОбороты есть дата.
Смотри в Яндексе "запрос к виртуальным таблицам регистров накопления" Например
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
12.02.2020, 16:47  [ТС] 13
Цитата Сообщение от Yulunga Посмотреть сообщение
ну не понимаете - почитайте ЖКК до просветления, поделайте простенькие запросики.
На мисте сидите?)
0
1260 / 786 / 224
Регистрация: 22.04.2013
Сообщений: 5,758
Записей в блоге: 1
12.02.2020, 18:56 14
Aslay, неа, там все матом сразу ругаются. беспричинно. а я молчал неделю ))
0
3 / 2 / 1
Регистрация: 02.10.2018
Сообщений: 242
13.02.2020, 20:45  [ТС] 15
Начал писать, а сам смеюсь. Снова закидаете тапками, но че делать то, делать то что то надо. Где то подсмотрел
1C
1
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков,
и
1C
1
МестоХранения
и снова сваял
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"ВЫБРАТЬ
        |   ТоварыНаСкладахОстатки.Склад КАК Склад,
        |   ТоварыНаСкладахОстатки.Номенклатура,
        |   СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
        |   МестаХранения.МестоХранения
        |ИЗ
        |   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
        |       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |           МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
        |           МестаХраненияНоменклатуры.Склад КАК СкладХранения,
        |           МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
        |       ИЗ
        |           РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
        |               ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |                   МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
        |                   МестаХраненияНоменклатуры.Склад КАК Склад,
        |                   МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
        |               ИЗ
        |                   РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
        |               
        |               СГРУППИРОВАТЬ ПО
        |                   МестаХраненияНоменклатуры.Номенклатура,
        |                   МестаХраненияНоменклатуры.Склад) КАК МинПриоритет
        |               ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
        |                   И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет) КАК МестаХранения
        |       ПО ТоварыНаСкладахОстатки.Склад = МестаХранения.СкладХранения
        |           И ТоварыНаСкладахОстатки.Номенклатура = МестаХранения.НоменклатураХранения
        |
        |СГРУППИРОВАТЬ ПО
        |   ТоварыНаСкладахОстатки.Склад.Наименование,
        |   ТоварыНаСкладахОстатки.Склад,
        |   ТоварыНаСкладахОстатки.Номенклатура,
        |   МестаХранения.МестоХранения
        |ИТОГИ ПО
        |   Склад";
      ДатаОстатков=?(ЗначениеЗаполнено(Период),Период,ТекущаяДата());
    
    Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);
    
    РезультатЗапроса = Запрос.Выполнить();
Ну без прихода конечно, но остаток по дате показывает. Но снова без но никак. Я и так и сяк итоги и порядок меняю, ну не могу сделать чтоб в табличной форме, названия складов были вертикально, а номенклатура горизонтально. А заказы я подцеплю в следующем сообщении).

Добавлено через 9 минут
СкладНоменклатураМестоХраненияКоличествоОстаток
Склад г. Актобе ()ручка 152 742,000
Склад г. Актобе ()книга 8,000 

у меня щас так формируется. очень вырвиглазно, складов много, номенклатура и на том и на этом складе, очень неудобно.
0
2133 / 1474 / 525
Регистрация: 16.01.2015
Сообщений: 6,309
13.02.2020, 20:53 16
Aslay, убей, не пойму зачем внутреннее соединения РС сам с собой?
И соединения в кучу - первый признак , что обязательно будут ошибки. Делай запрос с одним соединением, потом сторой пакет со вторым соединением и третий к временным таблицам из первых двух
Что касается вопроса: Настройка про которую ты говоришь делается в скд, а запрос выдаст только так как у тебя
0
13.02.2020, 20:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2020, 20:53
Помогаю со студенческими работами здесь

Потоки. Подсчет общего числа заказов и числа заказов в разрезе категорий клиентов
Вы менеджер интернет-магазина, у которого есть счетчик заказов. У вас есть две категории клиентов...

SQL Запрос по поставщикам
Здравствуйте. Как составить запрос &quot;Определить количество поставщиков магазина с каждой страны....

Фильтр записей в таблице по поставщикам
Добрый Вечер! У нас есть некая таблица, в которой: Товар Поставщик Цена Принтер ...

Поиск MIN цены по поставщикам
Добрый день! Прошу помощи специалистов! Пытаюсь сделать проценку по прайс листам поставщиков....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru