Имя: Пароль:
1C
1С v8
СКД отчет не видит период
0 2307861c
 
05.01.12
12:36
Вот кусок как задаю период

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({&ДатаНачало}, {&ДатаКонец}, Авто, ) КАК ПродажиОбороты

а в отчет почему-то попадают документы за другие периоды тоже. Кто-то сталкивался?
1 zak555
 
05.01.12
12:38
датаДока не всегда равна дате записи движения это дока
2 2307861c
 
05.01.12
12:49
(1)Проверил дата документа и дата движений совпадает
3 2307861c
 
05.01.12
12:52
Вот полный запрос
ВЫБРАТЬ
   VKSOFT_ПроцентыПоМенеджерам.Менеджер КАК Менеджер,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.ЗаказПокупателя КАК Документ,
   ВЫРАЗИТЬ((ПродажиОбороты.СтоимостьОборот - ПродажиСебестоимостьОбороты.СтоимостьОборот) * &Курс КАК ЧИСЛО(15, 2)) КАК ВаловаяПрибыльЗаказ,
   ВЫРАЗИТЬ((ПродажиОбороты.СтоимостьОборот - ПродажиСебестоимостьОбороты.СтоимостьОборот) / 100 * VKSOFT_ПроцентыПоМенеджерам.ПроцентСЗаказа * &Курс КАК ЧИСЛО(15, 2)) КАК СуммаПроцентовЗаказ,
   NULL КАК ВаловаяПрибыльРеслизация,
   NULL КАК СуммаПроцентовРеализация,
   VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры,
   VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов,
   VKSOFT_ПроцентыПоМенеджерам.ПроцентСЗаказа,
   NULL КАК ПроцентСПродаж,
   0 КАК ОбщаяСуммаПроцентов
ИЗ
   РегистрСведений.VKSOFT_ПроцентыПоМенеджерам КАК VKSOFT_ПроцентыПоМенеджерам
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({&ДатаНачало}, {&ДатаКонец}, Авто, ) КАК ПродажиОбороты
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты({&ДатаНачало}, {&ДатаКонец}, Авто, ) КАК ПродажиСебестоимостьОбороты
           ПО ПродажиОбороты.Номенклатура = ПродажиСебестоимостьОбороты.Номенклатура
               И ПродажиОбороты.Регистратор = ПродажиСебестоимостьОбороты.Регистратор
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               ТаблицаОстатков.ДоговорКонтрагента.Организация КАК Организация,
               ТаблицаОстатков.ДоговорКонтрагента.Владелец КАК Контрагент,
               ТаблицаОстатков.ДоговорКонтрагента КАК ДоговорКонтрагента,
               ТаблицаДокументов.Регистратор КАК Регистратор,
               ТаблицаДокументов.СуммаВзаиморасчетовПриход КАК СуммаДокумента,
               ВЫБОР
                   КОГДА СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) < МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток)
                       ТОГДА МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход)
                   ИНАЧЕ МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток) - (СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) - МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход))
               КОНЕЦ КАК ОплатитьПоДокументу,
               ТаблицаОстатков.СуммаВзаиморасчетовОстаток КАК СуммаДолга
           ИЗ
               РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты({&ДатаНачало}, {&ДатаКонец}, Регистратор, , {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаНакопления
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты({&ДатаНачало}, {&ДатаКонец}, Регистратор, , {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаДокументов
                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки({&ДатаКонец}, {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаОстатков
                       ПО ТаблицаДокументов.ДоговорКонтрагента = ТаблицаОстатков.ДоговорКонтрагента
                   ПО (ТаблицаДокументов.Период <= ТаблицаНакопления.Период)
                       И ТаблицаНакопления.ДоговорКонтрагента = ТаблицаДокументов.ДоговорКонтрагента
           ГДЕ
               ТаблицаНакопления.СуммаВзаиморасчетовПриход > 0
               И ТаблицаДокументов.СуммаВзаиморасчетовПриход > 0
           
           СГРУППИРОВАТЬ ПО
               ТаблицаОстатков.ДоговорКонтрагента,
               ТаблицаДокументов.Регистратор,
               ТаблицаДокументов.СуммаВзаиморасчетовПриход,
               ТаблицаОстатков.СуммаВзаиморасчетовОстаток,
               ТаблицаОстатков.ДоговорКонтрагента.Организация,
               ТаблицаОстатков.ДоговорКонтрагента.Владелец
           
           ИМЕЮЩИЕ
               МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток) - (СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) - МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход)) > 0) КАК НеОплаченные
           ПО ПродажиОбороты.Регистратор = НеОплаченные.Регистратор
       ПО VKSOFT_ПроцентыПоМенеджерам.Менеджер = ПродажиОбороты.ЗаказПокупателя.Ответственный
           И (ПродажиОбороты.Номенклатура.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры)
           И (ПродажиОбороты.Контрагент.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов)
ГДЕ
   (НеОплаченные.ОплатитьПоДокументу <= 0
           ИЛИ ЕСТЬNULL(НеОплаченные.Регистратор, 0) = 0)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   VKSOFT_ПроцентыПоМенеджерам.Менеджер,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.ДокументПродажи,
   NULL,
   NULL,
   ВЫРАЗИТЬ((ПродажиОбороты.СтоимостьОборот - ПродажиСебестоимостьОбороты.СтоимостьОборот) * &Курс КАК ЧИСЛО(15, 2)),
   ВЫРАЗИТЬ((ПродажиОбороты.СтоимостьОборот - ПродажиСебестоимостьОбороты.СтоимостьОборот) / 100 * VKSOFT_ПроцентыПоМенеджерам.ПроцентСПродаж * &Курс КАК ЧИСЛО(15, 2)),
   VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры,
   VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов,
   NULL,
   VKSOFT_ПроцентыПоМенеджерам.ПроцентСПродаж,
   0
ИЗ
   РегистрСведений.VKSOFT_ПроцентыПоМенеджерам КАК VKSOFT_ПроцентыПоМенеджерам
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({&ДатаНачало}, {&ДатаКонец}, Авто, ) КАК ПродажиОбороты
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты({&ДатаНачало}, {&ДатаКонец}, Авто, ) КАК ПродажиСебестоимостьОбороты
           ПО ПродажиОбороты.Номенклатура = ПродажиСебестоимостьОбороты.Номенклатура
               И ПродажиОбороты.Регистратор = ПродажиСебестоимостьОбороты.Регистратор
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               ТаблицаОстатков.ДоговорКонтрагента.Организация КАК Организация,
               ТаблицаОстатков.ДоговорКонтрагента.Владелец КАК Контрагент,
               ТаблицаОстатков.ДоговорКонтрагента КАК ДоговорКонтрагента,
               ТаблицаДокументов.Регистратор КАК Регистратор,
               ТаблицаДокументов.СуммаВзаиморасчетовПриход КАК СуммаДокумента,
               ВЫБОР
                   КОГДА СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) < МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток)
                       ТОГДА МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход)
                   ИНАЧЕ МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток) - (СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) - МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход))
               КОНЕЦ КАК ОплатитьПоДокументу,
               ТаблицаОстатков.СуммаВзаиморасчетовОстаток КАК СуммаДолга
           ИЗ
               РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты({&ДатаНачало}, {&ДатаКонец}, Регистратор, , {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаНакопления
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты({&ДатаНачало}, {&ДатаКонец}, Регистратор, , {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаДокументов
                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки({&ДатаКонец}, {(ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ДоговорКонтрагента.Организация).* КАК Организация}) КАК ТаблицаОстатков
                       ПО ТаблицаДокументов.ДоговорКонтрагента = ТаблицаОстатков.ДоговорКонтрагента
                   ПО (ТаблицаДокументов.Период <= ТаблицаНакопления.Период)
                       И ТаблицаНакопления.ДоговорКонтрагента = ТаблицаДокументов.ДоговорКонтрагента
           ГДЕ
               ТаблицаНакопления.СуммаВзаиморасчетовПриход > 0
               И ТаблицаДокументов.СуммаВзаиморасчетовПриход > 0
           
           СГРУППИРОВАТЬ ПО
               ТаблицаОстатков.ДоговорКонтрагента,
               ТаблицаДокументов.Регистратор,
               ТаблицаДокументов.СуммаВзаиморасчетовПриход,
               ТаблицаОстатков.СуммаВзаиморасчетовОстаток,
               ТаблицаОстатков.ДоговорКонтрагента.Организация,
               ТаблицаОстатков.ДоговорКонтрагента.Владелец
           
           ИМЕЮЩИЕ
               МАКСИМУМ(ТаблицаОстатков.СуммаВзаиморасчетовОстаток) - (СУММА(ТаблицаНакопления.СуммаВзаиморасчетовПриход) - МАКСИМУМ(ТаблицаДокументов.СуммаВзаиморасчетовПриход)) > 0) КАК НеОплаченные
           ПО ПродажиОбороты.Регистратор = НеОплаченные.Регистратор
       ПО VKSOFT_ПроцентыПоМенеджерам.Менеджер = ПродажиОбороты.ДокументПродажи.Ответственный
           И (ПродажиОбороты.Номенклатура.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры
               ИЛИ ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаНоменклатуры)
           И (ПродажиОбороты.Контрагент.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов
               ИЛИ ПродажиОбороты.Контрагент.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = VKSOFT_ПроцентыПоМенеджерам.ГруппаКонтрагентов)
ГДЕ
   (НеОплаченные.ОплатитьПоДокументу <= 0
           ИЛИ ЕСТЬNULL(НеОплаченные.Регистратор, 0) = 0)
4 PVV65
 
05.01.12
13:43
(0) >> а в отчет почему-то попадают документы за другие периоды тоже

Как определил, если  в итоговой таблице только

>> ПродажиОбороты.ЗаказПокупателя КАК Документ,

который может быть за любой период?
5 sergei123654
 
05.01.12
13:47
(0) а если поменять на
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({&НАЧАЛОПЕРИОДА}, {&КОНЕЦПЕРИОДА}, Авто, ) КАК ПродажиОбороты

тоже не работает?
6 sergei123654
 
05.01.12
13:48
+(5) точнее
{&ДатаНачало} = {&НАЧАЛОПЕРИОДА}
{&ДатаКонец}  = {&КОНЕЦПЕРИОДА}
7 PVV65
 
05.01.12
13:50
(5) Ты делаешь отборы по периоду регистров, а выводишь заказы, которые не обязаны попадать в период регистров.
8 PVV65
 
05.01.12
13:50
+(7) или я чего то не понял...
9 PVV65
 
05.01.12
13:51
Т.е. - какие документы "лишние"?
10 2307861c
 
05.01.12
14:00
(9) Лишние реализаци, заказы могут быть не за период в том случаи если продажа этого заказа была в указаном периоде отчета.
11 PVV65
 
05.01.12
14:03
(10) Как определил, что есть лишние реализации?
12 2307861c
 
05.01.12
14:10
(12) Поставил период с 01.12.11 по 02.12.11 а попал документ за 28.11.11
13 PVV65
 
05.01.12
14:12
(12) Документ ЗаказПокупателя?
14 2307861c
 
05.01.12
14:13
(13)Реализация
15 2307861c
 
05.01.12
14:13
Ещё момент формирую отчет вот так

   ЭлементыФормы.Результат.Очистить();
   
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Использование = Истина;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение = ДатаНачала;
   
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Использование = Истина;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = ДатаОкончания;
   
   Если ВГРН Тогда
       СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(Константы.ВалютаУправленческогоУчета.Получить(), ТекущаяДата());
       Курс = СтруктураКурсаДокумента.Курс;
   Иначе
       Курс = 1;
   КонецЕсли;    
   
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Использование = Истина;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение = Курс;
   СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);
16 PVV65
 
05.01.12
14:15
(14) Я ж и спрашиваю - в за просе есть поле "Документ" (ЗаказПокупателя), а говоришь попала реализация - как увидел?
17 sergei123654
 
05.01.12
14:16
(15)    Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", Отчет.НачалоПериода);
18 2307861c
 
05.01.12
14:26
(17) У меня запрос объединяет две таблицы продажи по заказам и продажи по реализациям, смотрите выше весь запрос предоставил.
19 2307861c
 
05.01.12
14:28
(17) Недумаю что поможет, проверял в отладчике параметры по периодам установлены перед компоновкой отчета.
20 2307861c
 
05.01.12
14:30
(18) для (16)
21 PVV65
 
05.01.12
14:35
(2) Товарищ не понимает.
В результате запроса я не вижу документов реализации. Поэтому и спрашиваю - как ты увидел документ реализации?
22 2307861c
 
05.01.12
14:36
(21)ПродажиОбороты.ДокументПродажи, - это и тяне документ реализации
23 PVV65
 
05.01.12
15:06
(22) Увидел объединение.
Я бы посмотрел в регистре, какой регистратор у этого документа реализации.
24 PVV65
 
05.01.12
15:08
+(22) Т.е. нашел бы нужное значение в измерении и сделал по нему отбор и смотрел на регистраторы - документ реализации и регистратор могут не совпадать.
25 sergei123654
 
05.01.12
15:42
(18) а этот запрос правильно отрабатывает в консоли запросов?
Если там нормально работает, то скорее всего проблема в устанвке периодов - как вариант решения: создать этот отчет без програмных установок параметров. Параметры все установить через настройку в СКД.(кнопка настройка).
А если в консоли неправильно работает, то... то... то отладить его в консоли.

ну это мое, сугубо не профессиональное, мнение плотника.
26 2307861c
 
05.01.12
15:49
(24) Спасибо. Все спасибо. Все оказалось элементарно, есть возврат, а он пишет естественно в "Документ продажи" - реализацию по которой возврат.