Внешний отчет для УТ11.4, делаю СКД. В приницпе сложностей не возникает, тем более тут уже более чем сильно помогли. Есть Колонка для номенклатуры Количество заказов. Мне бы эту колонку "разбить". Кол-во заказов за 30 дней, 60 дней, 90 дней. Каким образом это можно дописать?
Сам запрос выглядит так:
ВЫБРАТЬ
ЗаказыКлиентов.Номенклатура КАК Номенклатура,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыКлиентов.Регистратор) КАК КоличествоЗаказов,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
НоменклатураСписок.Артикул КАК Артикул,
НоменклатураСписок.НаименованиеПолное КАК НаименованиеПолное,
НоменклатураСписок.SL КАК SL,
НоменклатураСписок.Model КАК Model,
НоменклатураСписок.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСписок.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСписок.Status КАК Status,
НоменклатураСписок.ShelvesNumber КАК ShelvesNumber,
НоменклатураСписок.Group1 КАК Group1,
НоменклатураСписок.Category КАК Category
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСписок
ПО ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСписок.Ссылка
ГДЕ
ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
ЗаказыКлиентов.Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток,
НоменклатураСписок.Артикул,
НоменклатураСписок.Group1,
НоменклатураСписок.НаименованиеПолное,
НоменклатураСписок.SL,
НоменклатураСписок.Model,
НоменклатураСписок.InB2XSystemSince,
НоменклатураСписок.NoLongerAvailable,
НоменклатураСписок.Status,
НоменклатураСписок.ShelvesNumber,
НоменклатураСписок.Category
(47) Нужно вся номенклатура, но заказы отображать только для номенклатуры, которая есть на остатках?
ВЫБРАТЬ
НоменклатураСправочник.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
ЗаказыКлиентов.Период КАК ДатаЗаказа,
ЗаказыКлиентов.Заказано КАК Заказано,
НоменклатураСправочник.Артикул КАК Артикул,
НоменклатураСправочник.Model КАК Model,
НоменклатураСправочник.SL КАК SL,
НоменклатураСправочник.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСправочник.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСправочник.Status КАК Status,
НоменклатураСправочник.Comment КАК Comment,
НоменклатураСправочник.ShelvesNumber КАК ShelvesNumber,
НоменклатураСправочник.Group1 КАК Group1,
НоменклатураСправочник.Category КАК Category
ИЗ
Справочник.Номенклатура КАК НоменклатураСправочник
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И ТоварыНаСкладахОстатки.Характеристика = ЗаказыКлиентов.Характеристика
И (ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон)
ПО (ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСправочник.Ссылка)
(1) Как я понимаю, нужно получить 3 отдельные колонки с количество заказов за 30, 60 и 90 дней соответственно?
В запрос добавляете поле период: ЗаказыКлиентов.Период Как ДатаЗаказа
В вычисляемые поля добавляете:
За30Дней:
Выбор когда ДатаЗаказа > ДобавитьКДате(&ДатаКон, "День", -30) Тогда КоличествоЗаказов Иначе 0 Конец
Соответственно для остальных полей поменять -30 на -60 и -90.
Выбор Когда ДОБАВИТЬКДАТЕ(&НачалоПериода, День, 30) < ЗаказыКлиентов.Регистратор.Дата Тогда
30
Когда ДОБАВИТЬКДАТЕ(&НачалоПериода, День, 60) < ЗаказыКлиентов.Регистратор.Дата Тогда
60
//бла бла бла
Иначе
0
Конец
(10) Я добавляю Пользовательское поле "Колво" с выражением через настройки. А данный код где прописывать? Правда не пойму.Если в добавляемом мне поле, то ест синтаксическая ошибка.
ВЫБРАТЬ
ЗаказыКлиентов.Номенклатура КАК Номенклатура,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыКлиентов.Регистратор) КАК КоличествоЗаказов,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
НоменклатураСписок.Артикул КАК Артикул,
НоменклатураСписок.НаименованиеПолное КАК НаименованиеПолное,
НоменклатураСписок.SL КАК SL,
НоменклатураСписок.Model КАК Model,
НоменклатураСписок.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСписок.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСписок.Status КАК Status,
НоменклатураСписок.ShelvesNumber КАК ShelvesNumber,
НоменклатураСписок.Group1 КАК Group1,
НоменклатураСписок.Category КАК Category,
Выбор Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 30) < ЗаказыКлиентов.Регистратор.Дата Тогда
"30"
Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 60) < ЗаказыКлиентов.Регистратор.Дата Тогда
"60"
Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 90) < ЗаказыКлиентов.Регистратор.Дата Тогда
"90 "
Иначе
"Over 90"
Конец как Period
ИЗ
(20) Блин, я хз что такое сегодня. Кофе заварил) При добавлении кода через конструктор, как ты и показывал код стался такой:
ВЫБРАТЬ
ЗаказыКлиентов.Номенклатура КАК Номенклатура,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыКлиентов.Регистратор) КАК КоличествоЗаказов,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
НоменклатураСписок.Артикул КАК Артикул,
НоменклатураСписок.НаименованиеПолное КАК НаименованиеПолное,
НоменклатураСписок.SL КАК SL,
НоменклатураСписок.Model КАК Model,
НоменклатураСписок.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСписок.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСписок.Status КАК Status,
НоменклатураСписок.ShelvesNumber КАК ShelvesNumber,
НоменклатураСписок.Group1 КАК Group1,
НоменклатураСписок.Category КАК Category,
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 30) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "30"
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 60) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "60"
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 90) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "90 "
ИНАЧЕ "0"
КОНЕЦ КАК Поле1
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСписок
ПО ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСписок.Ссылка
ГДЕ
ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
ЗаказыКлиентов.Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток,
НоменклатураСписок.Артикул,
НоменклатураСписок.Group1,
НоменклатураСписок.НаименованиеПолное,
НоменклатураСписок.SL,
НоменклатураСписок.Model,
НоменклатураСписок.InB2XSystemSince,
НоменклатураСписок.NoLongerAvailable,
НоменклатураСписок.Status,
НоменклатураСписок.ShelvesNumber,
НоменклатураСписок.Category,
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 30) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "30"
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 60) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "60"
КОГДА ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, 90) < ЗаказыКлиентов.Регистратор.Дата
ТОГДА "90 "
ИНАЧЕ "0"
КОНЕЦ
Показать
Но вот в поле1 (по умолчанию поставило) выводится значение 0. Хотя заказы были. Я так понимаю надо добавить несколько полей? Но ведь и в таких случаях юудет число 0. При этом заказы то есть.
Но буквально понимать то не надо. Мне достаточно и 4 чашечек ароматного кофе
Псевдоним "Поле1" обзываем как надо, а запрос то правильный. &ДатаНач слишком ранняя, что все валиться свыше 90 дней
(25)Ну как бэ я предполагал таблицу, а не плоскую группировку Детальные записи
Строки
Группировка
- детальные записи
Поля До того, что Вы отметили красненьким
Колонки
Группировка 1 уровня Детальные записи, поле КоличествоЗаказов
Группировка 1 уровня Period
То есть. В запросе
Выбор Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 30) < ЗаказыКлиентов.Регистратор.Дата Тогда
"30"
Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 60) < ЗаказыКлиентов.Регистратор.Дата Тогда
"60"
Когда ДОБАВИТЬКДАТЕ(&ДатаНач , День, 90) < ЗаказыКлиентов.Регистратор.Дата Тогда
"90 "
Иначе
"Over 90"
Конец как Period
Показать
Приблизительно как на картинках
Только подставте в первую группировку колонок количество заказов, вто вторую Период
(30) Да нихера чет не понимаю. Надо добавить ресурс для этого? Но он не был добавлен. Без него же кол-во заказов считалось. Играясь с этой таблицей тоже ничего не считает верно. Я конечно не хочу наглеть, очень не хочу, но может посмотрите лично?
(34) все то, просто нужно обозначить критерий.
Я делал так: за последние 30 дней, за последние 60 дней (30 дней входят в это кол-во), и то же для 90 дней.
(35) понял вас. но все равно что-то не то. Создал пробный заказ на первую же номенклатуру на 69 штук. Значение никак не поменялось. Было один, осталось один.
(37) всё, я понял в чем беда. Я изначально все не правильно делал. Мне пишет кол-во заказов, а не сколько штук было заказано. А ваше решение в данном слчуае рабочее. Есть ли какой-то легкий способ исправить кол-во заказов на кол-во штук?
Это я изначально не правильно поставил вопрос. Извиняюсь.
(40) ну если подробно, то подразумевал я сколько штук было заказано. И изначально делал не правильно.Кол-во заказов не надо, надо кол-во штук по данной номенклатуре сколько было заказано. Есть лекий способ исправить это, не подскажите?
(44) Практически все доработал, свои поля еще внес. Но остался последний момент - надо выводить всю номенклатуру. Я попытался сделать так:
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ЗаказыКлиентов.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
ЗаказыКлиентов.Период КАК ДатаЗаказа,
ЗаказыКлиентов.Заказано КАК Заказано,
НоменклатураСправочник.Артикул КАК Артикул,
НоменклатураСправочник.Model КАК Model,
НоменклатураСправочник.SL КАК SL,
НоменклатураСправочник.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСправочник.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСправочник.Status КАК Status,
НоменклатураСправочник.Comment КАК Comment,
НоменклатураСправочник.ShelvesNumber КАК ShelvesNumber,
НоменклатураСправочник.Group1 КАК Group1,
НоменклатураСправочник.Category КАК Category,
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И ТоварыНаСкладахОстатки.Характеристика = ЗаказыКлиентов.Характеристика
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
ПО ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСправочник.Ссылка
ГДЕ
ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон
Показать
Т.е. таблицу с номенклатурой объединить с данной таблицей. Пишет, что нельз использовать поле неограниченной длины comment. Не могли бы подсказать как тут действовать лучше?
(47) Нужно вся номенклатура, но заказы отображать только для номенклатуры, которая есть на остатках?
ВЫБРАТЬ
НоменклатураСправочник.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
ЗаказыКлиентов.Период КАК ДатаЗаказа,
ЗаказыКлиентов.Заказано КАК Заказано,
НоменклатураСправочник.Артикул КАК Артикул,
НоменклатураСправочник.Model КАК Model,
НоменклатураСправочник.SL КАК SL,
НоменклатураСправочник.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСправочник.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСправочник.Status КАК Status,
НоменклатураСправочник.Comment КАК Comment,
НоменклатураСправочник.ShelvesNumber КАК ShelvesNumber,
НоменклатураСправочник.Group1 КАК Group1,
НоменклатураСправочник.Category КАК Category
ИЗ
Справочник.Номенклатура КАК НоменклатураСправочник
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И ТоварыНаСкладахОстатки.Характеристика = ЗаказыКлиентов.Характеристика
И (ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон)
ПО (ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСправочник.Ссылка)
(49) не хотелось отвлекать, но сам не справился. Остатки по складам выводит неверные значения. Сравниваю со стандартным отчетом Остатки и доступность по складам. Я правда пытался сделать без Вашей помощи, но не получается.
Я так думаю, что проблема где-то в
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
Пытался изменить, добавлял код из стандартного отчета, но проблему не решает. Менял внутренее соединение на внешнее - так же. Т.е. по нашему отчету остаток ноль, по стандартному 62. И честно вообще не нашел чтобы где то числа в остатках совпали. Сидел пару дней, тут даже тему создал, но помочь не смогли. Не могли бы пожалуйста посмотреть.
(52) У стандартного отчета особых настроек нет. Нет выбора по складу (значит по всем показывает) и нет опр номенклатуры. Т.е. просто отчет по всем товарам и всё. У стандартного отчета такой запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
Сегменты.Номенклатура КАК Номенклатура,
Сегменты.Характеристика КАК Характеристика,
ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
Сегменты.Сегмент.* КАК СегментНоменклатуры,
Сегменты.Номенклатура.* КАК Номенклатура,
Сегменты.Характеристика.* КАК Характеристика}
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
ИспользуетсяОтборПоСегментуНоменклатуры
;
////////////////////////////////////////////////////////////////////////////////
// Временная таблица "ВтСвободныеОстатки"
//
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Набор.Номенклатура КАК Номенклатура,
Набор.Характеристика КАК Характеристика,
Набор.Склад КАК Склад,
СУММА(Набор.ВНаличии) КАК ВНаличии,
СУММА(Набор.ВРезервеСоСклада) КАК ВРезервеСоСклада,
СУММА(Набор.ВРезервеПодЗаказ) КАК ВРезервеПодЗаказ,
СУММА(Набор.КОтгрузке) КАК КОтгрузке
ПОМЕСТИТЬ ВтСвободныеОстатки
ИЗ(
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
Таблица.ВНаличииОстаток КАК ВНаличии,
Таблица.ВРезервеСоСкладаОстаток КАК ВРезервеСоСклада,
Таблица.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказ,
0 КАК КОтгрузке
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки( , {
(Номенклатура, Характеристика) В(
ВЫБРАТЬ
ТаблицаОтбора.Номенклатура КАК Номенклатура,
ТаблицаОтбора.Характеристика КАК Характеристика
ИЗ
ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
ГДЕ
ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
} {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
Таблица.КОтгрузкеОстаток КАК ВНаличии,
0 КАК ВРезервеСоСклада,
0 КАК ВРезервеПодЗаказ,
Таблица.КОтгрузкеОстаток КАК КОтгрузке
ИЗ
РегистрНакопления.ТоварыКОтгрузке.Остатки(, {
(Номенклатура, Характеристика) В(
ВЫБРАТЬ
ТаблицаОтбора.Номенклатура КАК Номенклатура,
ТаблицаОтбора.Характеристика КАК Характеристика
ИЗ
ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
ГДЕ
ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
} {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица) КАК Набор
СГРУППИРОВАТЬ ПО
Набор.Номенклатура, Набор.Характеристика, Набор.Склад
ИНДЕКСИРОВАТЬ ПО
Номенклатура, Характеристика, Склад
;
////////////////////////////////////////////////////////////////////////////////
// Построение отчета
//
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Набор.Номенклатура КАК Номенклатура,
Набор.Характеристика КАК Характеристика,
Набор.Склад КАК Склад,
МАКСИМУМ(&ТекстЗапросаВесНоменклатуры) КАК Вес,
МАКСИМУМ(&ТекстЗапросаОбъемНоменклатуры) КАК Объем,
МАКСИМУМ(Набор.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаХранения,
МАКСИМУМ(Набор.Номенклатура.ЕдиницаДляОтчетов) КАК ЕдиницаДляОтчетов,
МАКСИМУМ(Набор.Номенклатура.КоэффициентЕдиницыДляОтчетов) КАК КоэффициентЕдиницыДляОтчетов,
СУММА(Набор.ВНаличии) КАК ВНаличии,
СУММА(Набор.ПриходОсновной) КАК ПриходОсновной,
СУММА(Набор.РасходОсновной) КАК РасходОсновной,
СУММА(Набор.ВРезервеСоСкладаИПодЗаказ) КАК ВРезервеСоСкладаИПодЗаказ,
СУММА(Набор.ВРезервеСоСкладаИПодЗаказ)
+ СУММА(Набор.ВРезервеГрафика) КАК ВРезерве,
СУММА(Набор.Котгрузке) КАК Котгрузке
ИЗ(
// 1) В наличии
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
Таблица.ВНаличии КАК ВНаличии,
0 КАК ПриходОсновной,
Таблица.ВРезервеПодЗаказ
+ Таблица.ВРезервеСоСклада
+ Таблица.КОтгрузке КАК РасходОсновной,
Таблица.ВРезервеПодЗаказ
+ Таблица.ВРезервеСоСклада КАК ВРезервеСоСкладаИПодЗаказ,
0 КАК ВРезервеГрафика,
Таблица.КОтгрузке КАК КОтгрузке
ИЗ
ВтСвободныеОстатки КАК Таблица
ОБЪЕДИНИТЬ ВСЕ
// 2) Приход по заказам
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
0 КАК ВНаличии,
Таблица.КоличествоИзЗаказовОстаток КАК ПриходОсновной,
0 КАК РасходОсновной,
0 КАК ВРезервеСоСкладаИПодЗаказ,
0 КАК ВРезервеГрафика,
0 КАК КОтгрузке
ИЗ
РегистрНакопления.ГрафикПоступленияТоваров.Остатки(,{
(Номенклатура, Характеристика) В(
ВЫБРАТЬ
ТаблицаОтбора.Номенклатура КАК Номенклатура,
ТаблицаОтбора.Характеристика КАК Характеристика
ИЗ
ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
ГДЕ
ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
} {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица
ОБЪЕДИНИТЬ ВСЕ
// 3) Расход по заказам
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
0 КАК ВНаличии,
0 КАК ПриходОсновной,
Таблица.КоличествоИзЗаказовОстаток КАК РасходОсновной,
0 КАК ВРезервеСоСкладаИПодЗаказ,
0 КАК ВРезервеГрафика,
0 КАК КОтгрузке
ИЗ
РегистрНакопления.ГрафикОтгрузкиТоваров.Остатки(,{
(Номенклатура, Характеристика) В(
ВЫБРАТЬ
ТаблицаОтбора.Номенклатура КАК Номенклатура,
ТаблицаОтбора.Характеристика КАК Характеристика
ИЗ
ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
ГДЕ
ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
} {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица
ОБЪЕДИНИТЬ ВСЕ
// 4) Резерв графика поставок
ВЫБРАТЬ
Таблица.Номенклатура КАК Номенклатура,
Таблица.Характеристика КАК Характеристика,
Таблица.Склад КАК Склад,
0 КАК ВНаличии,
0 КАК ПриходОсновной,
0 КАК РасходОсновной,
0 КАК ВРезервеСоСкладаИПодЗаказ,
-Таблица.Количество КАК ВРезервеГрафика,
0 КАК КОтгрузке
ИЗ
РегистрСведений.ДоступныеОстаткиПланируемыхПоступлений КАК Таблица
{ГДЕ
(Таблица.Номенклатура, Таблица.Характеристика) В(
ВЫБРАТЬ
ТаблицаОтбора.Номенклатура КАК Номенклатура,
ТаблицаОтбора.Характеристика КАК Характеристика
ИЗ
ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
ГДЕ
ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
}
{ГДЕ
Таблица.Склад.* КАК Склад,
Таблица.Номенклатура.* КАК Номенклатура,
Таблица.Характеристика.* КАК Характеристика}
ГДЕ
Таблица.Количество < 0
И Таблица.ДатаДоступности = ДАТАВРЕМЯ(1, 1, 1)) КАК Набор
СГРУППИРОВАТЬ ПО
Набор.Номенклатура, Набор.Характеристика, Набор.Склад
Показать
Мне кажется нам надо только пункт В наличии. Сейчас пытаюсь как-то запрос объединить.
(53) так запрос выбирает из РегистрНакопления.ТоварыКОтгрузке.Остатки и из РегистрНакопления.СвободныеОстатки.Остатки и других.
В (49) из РегистрНакопления.ТоварыНаСкладах.Остатки и только ВНаличииОстаток. И только для тех товаров, которые есть в заказе.
(54) вот в чем беда. я понял. Просто поменяв регистр на свободныеОстатки.Остатки решит проблему? Или останется так же только ддля тех товаров, что есть в заказах?
(55) так что в итоге нужно? На данный момент остатки выводятся только для номенклатуры которая есть на остатках и есть в заказе.
Нужно выводить не только которая есть в заказе?
Тогда так:
ВЫБРАТЬ
НоменклатураСправочник.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
ЗаказыКлиентов.Период КАК ДатаЗаказа,
ЗаказыКлиентов.Заказано КАК Заказано,
НоменклатураСправочник.Артикул КАК Артикул,
НоменклатураСправочник.Model КАК Model,
НоменклатураСправочник.SL КАК SL,
НоменклатураСправочник.InB2XSystemSince КАК InB2XSystemSince,
НоменклатураСправочник.NoLongerAvailable КАК NoLongerAvailable,
НоменклатураСправочник.Status КАК Status,
НоменклатураСправочник.Comment КАК Comment,
НоменклатураСправочник.ShelvesNumber КАК ShelvesNumber,
НоменклатураСправочник.Group1 КАК Group1,
НоменклатураСправочник.Category КАК Category
ИЗ
Справочник.Номенклатура КАК НоменклатураСправочник
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
ПО (ЗаказыКлиентов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И ТоварыНаСкладахОстатки.Характеристика = ЗаказыКлиентов.Характеристика
И (ЗаказыКлиентов.Период МЕЖДУ &ДатаНач И &ДатаКон)
ПО (ТоварыНаСкладахОстатки.Номенклатура = НоменклатураСправочник.Ссылка)
(56) Нужно именно так. Но запрос почему то работать не хочет. Ну т.е. он оставил всё, как было. Никуда в вычисляемые поля добавлять не надо? Или может я что с отборами напутал? Ибо поля не добавлялись.
(57) у меня нет вашей базы и она отличается от типовой. Запрос будет выводить остатки и для товаров которые не заказывали. Вопрос какие остатки.
Если нужны остатки согласно запросу в (53), тогда смотрите какие регистры и поля там выбираются и используйте у себя.
(58) в сб вечером обнаружил что вообще за числа выводятся в остатках. в вскр думал сделать. не смог. почему то остатки задваиваются в зависимости от периода. где-то задваиваются, где то затраиваются. Я уже честно задолбался. пол выходных на него убил. Запрос пробовал переписать. Хотя сомневаюсь, что проблема в запросе. Тут скорее всего в периоде. Но даже если выбираю период только на сегодня. остатки задваиваются. На скринах остатки затроились вообще. Если за вчера, остатки норм (только по одной номенклатуре). Т.е. по верхней стрчоке правильные остатки будут 1050, по нижней 61. Я вам отдам 3 sm только не бросайте.
(60) по фотография ничего сказать не смогу.
Как я понял, сделали объединение, как в типовом отчете?
Объединение делали с соединением по заказам?
Сначала сделайте просто объединение во временной таблице, и уже из нее соединяйте с заказами.
Для начала просто добейтесь соединение по остаткам, уже потом делайте соединение с заказами.
(62) ну так данные из этого запроса берутся из РегистрНакопления.ТоварыНаСкладах. Это все остатки которые есть в Наличие в этом регистре. А сравниваете с данными, которые берутся из других регистров.
(63) По регистру свободные остатки точно такая же картина. Было 62 и 1 заказали. В отчете число 122. Т.е. задвоилось. А почему так могло произойти уже хз
(71) если я выставляю период отчета только сегодня (т.е. 1.07.19-1.07.19) - даже в Вашем варианте одно задвоено, другое затроено! если я ставлю период с 1.06 - 3-.06 там где 122 встает 61 (тут правильно), а где 3300 вообще становится число в 11000. Откуда хз. На 10 умножилось чтоль. Если ставить период 30.06-30.06 - вообще все даные по остаткам и заказам пропадают.
(73) Я уверен, что Вы уже устали от меня, но помощи искать мне больше негде, сегодня последний день на задачу. Полночи сидел исправлял - не исправил.Плюнул, взял за основу СКД стандартного отчета. Там все можно настроить только проблема с кол-ом заказов. Я пытался добавить по аналогии с нашим отчетом, но насколько я понял в колонку Наличие попадали тогда вообще все заказы. Поместил тогда Заказы с теми же данными во временную таблицу и теперь не пойму как две эти таблицы объединить в пакете запросов 4. Я так понимаю этот запрос формирует данные и итоговые поля. В него я изначально и добавил ЗаказыКлиентов но космические цифры вылезали в колонке Наличие. Убрал оттуда - стало как надо. Я так понимаю надо добавить временную таблицу (что я уже и сделал) и в вычисляемых полях добавить наши 3 колонки. Верно?
Все,что я могу предложить 3sm, понимаю, что чертовски мало но это единственное.
81.
spacecraft
02.07.19 12:29 Сейчас в теме+2.98 $m
(80) то что я сделал в (76) потребовалось 5 минут. Если бы вопрос сразу стоял так как он был озвучен в самом конце, то и решение соответствующее. В самом начале вопрос звучал совершенно по другому, соответственно и решение было другое. Правильно заданный вопрос это половина ответа.
Хотел бы попросить у Вас помощи, я так думаю Вам особого труда не составит это. Ведь на этот раз я опишу всё, в чем проблема с первого раза)
Написал ещё один отчет на СКД. Намного проще того, с чем Вы помогали.
И проблема нарисовалась откуда не ждали. ТЧ ДополнительныеРеквизиты документа ЗаказКлиента.
Сейчас данный документ формируется самой 1С-кой при помощи обмена с сайтом.
В общем модуле прописано ОбменССайтом прописано, чтоб создавались 2 дополнительных реквизита ДатаЗаказаНаСайте и НомерЗаказаНаСайте.
И я не понимаю как их вытащить (на форме и в самом документе они отсутствуют). Задача для меня оказалась не тривиальная, ибо с таким я ещё не сталкивался.
На всякий случай приведу скриншот (в нем показано отладчиком где можно увидеть эти 2 реквизита (если глубже провалиться это второй скриншот)). Максимум, что есть - 1.61sm.
Я вообще правильно понимаю, что они есть только где-то там вирутально и посмотреть\изменить их никак не могу?
Я вообще зачем у Вас спросил... Просто вспомнил слова, что с отчетом прошлым справились бы за 5 минут, если бы я верно всё написал. И подумал вдруг и тут не откажите. Сейчас код (запроса) следующий:
ВЫБРАТЬ
РеализацияТоваровУслуг.Номер КАК Номер,
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Склад КАК Склад,
РеализацияТоваровУслугТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
РеализацияТоваровУслуг.НомерAWB КАК НомерAWB,
РеализацияТоваровУслуг.Партнер КАК Партнер
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ДопРеквизитыЗаказаНомерЗаказа
ПО РеализацияТоваровУслуг.ЗаказКлиента = ДопРеквизитыЗаказаНомерЗаказа.Ссылка
И (ДопРеквизитыЗаказаНомерЗаказа.Свойство.Наименование = "Номер заказа на сайте")
ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
РеализацияТоваровУслуг.Проведен
(84) если включено ведение "Общие реквизиты и сведения", то дополнительные сведения хранятся в РС "ДополнительныеСведения" и связаны с документом через ПВХ "ДополнительныеРеквизитыИСведения"
Соответственно нужно соединять не с ТЧ ДополнительныеРеквизиты, а с этим регистром.
Как-то так:
ВЫБРАТЬ
РеализацияТоваровУслуг.Номер КАК Номер,
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Склад КАК Склад,
РеализацияТоваровУслугТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
ДополнительныеСведения.Значение КАК НомерAWB,
РеализацияТоваровУслуг.Партнер КАК Партнер
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ПО (РеализацияТоваровУслуг.Ссылка = ДополнительныеСведения.Объект)
И (ДополнительныеСведения.Свойство = &Свойство)
ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
РеализацияТоваровУслуг.Проведен
Показать
где &Свойство это ссылка ПВХ.ДополнительныеРеквизитыИСведения на нужное свойство
(87) Так. Вижу в выборе свойства Дату заказа с сайта и Номер заказа с сайта. Правда ничего пока не меняется от этого выбора) Буду сча пробовать перенести, что колонкой было
(93) Возможно. А есть возможность как-нибудь найти по имени их? Хотя пробовал руами прописывать в запросе - ошибка, что в принципе логично. Напрямую я так понял нельзя к ним обратиться.
Я помню была какая-то задача одна, где необходимо было написать примерно следющее:
НайтиПоИмени = "ДатаЗаказаНаСайте". Ну такое можно как нибудь в запрос пихнуть?
ВЫБРАТЬ
РеализацияТоваровУслуг.Номер КАК Номер,
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Склад КАК Склад,
РеализацияТоваровУслугТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
РеализацияТоваровУслуг.Партнер КАК Партнер,
ЗаказКлиентаДополнительныеРеквизиты.Значение КАК НомерAWB
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
ПО (ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство)
И РеализацияТоваровУслуг.ЗаказКлиента = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
РеализацияТоваровУслуг.Проведен
Показать
Нужно определиться с хранением доп.реквизита.
Если искать по наименованию, тогда нужно искать по полному наименованию. Так, как оно отображается на скрине в (91).
ПО (ЗаказКлиентаДополнительныеРеквизиты.Свойство.Наименование = "Дата заказов на сайте (Список заказов клиентов)")
Не работает. Всё тоже самое.
Насчет места хранения доп.реквизита... по скрину с (86)
можно увидеть строчку "ОбязательныеПоляВставить (ДатаЗаказаНаСайте, ДополнительныеРеквизитыЗаказаКлиента) (стрчка 4).
Т.е. хранится то он в доп.реквизитах, я правильно понимаю?)
(96) по этому коду ничего сказать нельзя. Это просто название переменной.
В консоле запросов выполнить такой код:
ВЫБРАТЬ
ЗаказКлиентаДополнительныеРеквизиты.Ссылка КАК Ссылка,
ЗаказКлиентаДополнительныеРеквизиты.Свойство КАК Свойство,
ЗаказКлиентаДополнительныеРеквизиты.Значение КАК Значение
ИЗ
Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
ГДЕ
ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &Ссылка
(107) вот. Определили, что доп. значения хранятся в ТЧ документа Заказы.
Теперь в той же консоле такой код:
ВЫБРАТЬ
РеализацияТоваровУслуг.Номер КАК Номер,
РеализацияТоваровУслуг.Дата КАК Дата,
РеализацияТоваровУслуг.Склад КАК Склад,
РеализацияТоваровУслугТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
РеализацияТоваровУслуг.Партнер КАК Партнер,
ЗаказКлиентаДополнительныеРеквизиты.Значение КАК НомерAWB
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
ПО (ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство)
И (РеализацияТоваровУслуг.ЗаказКлиента = ЗаказКлиентаДополнительныеРеквизиты.Ссылка)
ПО (РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка)
ГДЕ
РеализацияТоваровУслуг.Проведен
И РеализацияТоваровУслуг.Ссылка = &Ссылка
Показать
Ссылка теперь это документ реализации, в котором указан заказ из прошлого кода
(110)
ух. выводить то выводит, в колонку номер AWB. А возможности вывести 2 колонки нет?) Ну т.е. не выбирать, что выводить, а чтоб появились две колонки плюсом с этими значениями? Сам, я боюсь не справлюсь с этим
(111) чтобы не выбирать я уже говорил, что вместо
ПО (ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство)
использовать Имя:
ПО (ЗаказКлиентаДополнительныеРеквизиты.Свойство.Имя = "НомерЗаказа_777777777777777777")
Подставить конкретное значение.
А чтобы два поля выбиралось, нужно объединить запросы с выбором в каждом своего свойства.