Имя: Пароль:
1C
1С v8
Помогите с отчётом
,
0 Gomodrila
 
25.03.13
15:39
Отчёт "Неликвиды", в нём должный отображаться товары, которые 30 дней (относительно даты заданной пользователем) ни разу не продавались. Для каждого такого товара выведите остаток на дату формирования отчёта.
Подсказка (Данные о продажах берите из соответствующего регистра накопления)
1 НафНаф
 
25.03.13
15:42
это кому подсказка?
2 yra77
 
25.03.13
15:43
стаж 10 дней!! Ждем вопрос про УПП.
3 wowik
 
25.03.13
15:44
(0) берем из соответствующего регистра, чтобы оборотов за выбранные 30 дней не было.
4 del123
 
25.03.13
15:46
Ник хорош...)
В чем именно сложность в построении данного отчета?
5 Волесвет
 
25.03.13
15:49
на заданную дату - остатки по товарам, по этим товарам смотрим была ли продажа в течении 30 дней
6 Gomodrila
 
25.03.13
15:49
Стаж 5 дней)

Простейшим запросом иогу найти все даты проведенных товаров, но как из всего этого списка выделить только последнюю дату, чтоб потом сравнить её с заданной пользователем?
7 del123
 
25.03.13
15:53
ну как вариант группировку по номенклатуре, в функцию максимум даты продажи
8 Crush
 
25.03.13
16:05
В (3) предложено отличное решение. Что еще придумывать?

Ссылка из номенклатура где ссылка не в (выбрать номенклатура из продажиобороты(ДобавитьКдате(&текДата,день,-30),&текДата))
9 Джинн
 
25.03.13
16:08
(6) Зачем? Стройте отчет за период от ТекДата-30 дней до ТекДата. Если в этом периоде нет оборотов по "внешнему" расходу, то товар не продавался.
10 Gomodrila
 
25.03.13
16:10
ВЫБРАТЬ
   Продажи.Номенклатура КАК Номенклатура,
   МАКСИМУМ(Продажи.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ВТликвид
ИЗ
   РегистрНакопления.Продажи КАК Продажи

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВЫБОР
       КОГДА ДОБАВИТЬКДАТЕ(ВТликвид.РегистраторДата, День,30) < &ДатаАнализа
           ТОГДА "Распродажа"
       ИНАЧЕ "ПовышайЦЕНУ"
   КОНЕЦ КАК Стратегия,
   ВТликвид.Номенклатура,
   ВТликвид.РегистраторДата
ИЗ
   ВТликвид КАК ВТликвид
11 Gomodrila
 
25.03.13
16:11
Как-то так получается?
12 Джинн
 
25.03.13
16:13
(10) А обязательно так сложно выдирать гланды?
13 Gomodrila
 
25.03.13
16:14
А чтоб вывести остатки, то всё это опять выгружать в ВТ и делать объединённый запрос с Регистор Остатков? с условием что Стратегия = "распродажа"?
14 Gomodrila
 
25.03.13
16:14
(12) Не знаю ((
15 Gomodrila
 
25.03.13
17:30
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура
ПОМЕСТИТЬ ВТликвид
ИЗ
   РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, -30), &Дата, , ) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиТоваровОстатки.КолвоОстаток,
   ОстаткиТоваровОстатки.Номенклатура
ИЗ
   РегистрНакопления.ОстаткиТоваров.Остатки(&Текущая, ) КАК ОстаткиТоваровОстатки
ГДЕ
   НЕ ОстаткиТоваровОстатки.Номенклатура.Ссылка В
               (ВЫБРАТЬ
                   ВТликвид.Номенклатура
               ИЗ
                   ВТликвид КАК ВТликвид)




Джинн, спасибо за помощь, и всем остальным тоже)


Крохотный вопрос. Как в параметр периода ВТ ОстаткиТоваров.Остатки передать текущую дату? ну или дату формирования отчёта (что мне кажется аналогично)??
16 Web00001
 
25.03.13
18:07
Я так понимаю, это какое то тестовое задание. Фишка задания в том, что человек должен понять, что система не хранит в регистре накоплений, тех позиций ресурс у которых 0. То есть товаров с остатком 0 запросом к регистру не поймать.
то есть что надо сделать: сделать запрос к справочнику номенклатура и к нему левым соединением запрос к регистру с остатками. Потом условием надо отобрать те записи оборот у которых NULL(записи которые запрос не смог найти в регистре). Как то так:
ВЫБРАТЬ
   Товары.Ссылка
ИЗ
   Справочник.Номенклатура КАК Товары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, -30), &Дата1, , ) КАК ТоварыНаСкладахОбороты
       ПО Товары.Ссылка = ТоварыНаСкладахОбороты.Номенклатура
ГДЕ
   ТоварыНаСкладахОбороты.КоличествоОборот ЕСТЬ NULL
17 Web00001
 
25.03.13
18:26
(15)Запрос.УстановитьПараметр("Дата",ТекущаяДата());
18 Gomodrila
 
25.03.13
18:41
Ну мой код тоже работает. В параметрах отчёта, в "Выражение" параметра &Текущая просто прописал Функцию ТекущаяДата().
ДатаАнализа выбирается пользователем.

Это задание из мастер-группы "Быстрый старт в профессию Программист-1С" оно для того, чтоб я разобрался с темой отчёты и запросы.
19 Web00001
 
25.03.13
18:58
Ради интереса, посмотри в отчете, будет ли номенклатура которая никогда не продавалась? То есть в этом регистре не фигурировала.
>> В параметрах отчёта, в "Выражение" параметра &Текущая просто прописал Функцию ТекущаяДата().
Что, зачем, почему, потом, все потом :)
20 Web00001
 
25.03.13
18:59
оно для того, чтоб ты понял (16)
21 Gomodrila
 
26.03.13
15:41
(20) Видимо нет((
Создал новый товар. Запустил отчёт - товар в отчёт не попал
22 Gomodrila
 
26.03.13
15:45
(21) Но после проведения документа "Поступление товаров", остаток выдаёт.
23 Web00001
 
26.03.13
15:48
(21)Ты (16) читал? Его там быть не может. Внимательно посмотри на запрос в (15) Ты выбрал обороты за нужный интервал времени. Потом взял остатки на какую то дату. И проанализировал, внмание! есть ли продажи по товарам который есть на остатках на  дату &текущая.
24 Web00001
 
26.03.13
15:51
+(23)Запрос, то конечно работает... но это смотря с какой стороны посмотреть, он даже какие то данные показывает.
25 Gomodrila
 
26.03.13
16:12
Web00001 опыта у меня маловато.

http://clip2net.com/s/4OeQJu  вот поступление товара, я его никому не продавал.

http://clip2net.com/s/4OePLh  вот такой отчёт выходит. Остатки на текущую дату. Дата анализа задаётся пользователем.
Единственный как мне кажется недочёт, товар поступил 20 числа, ДатаАнализа 19 число, и он всё равно выводит остаток кресел. Ты это имел ввиду? Если (16) сделать так на проверку значения NULL  такого недочёта не будет?
26 Gomodrila
 
26.03.13
16:15
я их и продать бы никак не успел до 19, т.к. у меня их не было в наличии. Это согласен недочёт.
27 Web00001
 
26.03.13
17:07
Ты не стал читать, что я пишу?
Я говорю, ты данные берешь там, где их нет.
28 Web00001
 
26.03.13
17:13
стоп они же точно есть, если надо получить данные о товаре который не разу не продавался, значит он на остатках точно есть. Тогда да, чота я затупил, прости бро, прочитал как товар по которому 30 дней не было движений. А у тебя который есть! на складе и 30 дней не продавался. Тогда да все верно единственное, что временная таблица, здесь все равно не к чему и я бы использовал левое соединение.
29 FormatC
 
26.03.13
17:17
|ВЫБРАТЬ Номенклатура.Артикул КАК Артикул, Номенклатура, Сумма(КоличествоОстаток) КАК Количество, Сумма(СтоимостьОстаток) КАК Сумма
   |ИЗ  РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон,  Номенклатура не в
   |              (ВЫБРАТЬ Различные ПартииТоваровНаСкладах.Номенклатура
   |               ИЗ   РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
   |               ГДЕ
   |                  КодОперации в (&КодОперациии) и Период Между &ДатаНач и &ДатаКон
   |                  и  Номенклатура  в
   |                                   (ВЫБРАТЬ Различные Номенклатура
   |                                     ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон,))))
   |Сгруппировать по Номенклатура
   //|упорядочить по номенклатура.Наименование
   |Итоги по Общие, номенклатура Автоупорядочивание";

в коды операций передаем те операции, которые учитываются при анализе неликвида