Имя: Пароль:
1C
1С v8
Конец периода в СКД
0 Анцеранана
 
29.05.14
14:20
Уважаемые коллеги. Есть отчет в СКД - получает остатки по регистру сведений взаиморасчеты на дату (30.04.2014). Однако в него попадает остаток, который закрылся в 30.04.2014 23:59:59.В моем отчете Параметр СКД устанавливается при выборе даты:

  Процедура ДатаКонПриИзменении(Элемент)
      // Вставить содержимое обработчика.
      УстановитьПараметрДаты("КонецПериода",КонецДня(Элемент.Значение));
      
  КонецПроцедуры
          
  Процедура УстановитьПараметрДаты(ИмяПараметра,Значение)
      
      Параметр  = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
      Если НЕ Параметр = Неопределено Тогда
          Параметр.Значение = Значение;
          Параметр.Использование = Истина;
      КонецЕсли;
      
  КонецПроцедуры


За закладке "параметры" указано напротив параметра КонецПериода:
КонецПериода(&КонецПериода,"День")

Что-то я делаю не так.
При формировании отчета за 01.05.2014 (оборотов за этот день не было) контрагент не попадает, но сумма меняется.
Почему СКД не видит последнюю секунду?

PS Параметр в запросе СКД если что указан в фигурных скобочках
1 wowik
 
29.05.14
14:34
КонецПериода(&КонецПериода,"День") + 1, мне кажется...
2 nufnufcheg
 
29.05.14
14:37
у меня для таких случаев сделано так:
два параметра КонецПериода и КонецПериодаГраница.
КонецПериода ты устанавливаешь сам, а в параметре КонецПериодаГраница в СКД устанавливаешь выражение ОбщийМодульСКД.КонецПериода(&КонецПериода, "День")

а в общем модуле ОбщийМодульСКД добавляешь процедуру:

Функция КонецПериода(Дата, Период) Экспорт
    
    Период = ВРег(Период);
    Если Период = "МИНУТА" Тогда
    
        Возврат Новый Граница(КонецМинуты(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "ЧАС" Тогда
        
        Возврат Новый Граница(КонецЧаса(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "ДЕНЬ" Тогда
        
        Возврат Новый Граница(КонецДня(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "НЕДЕЛЯ" Тогда
        
        Возврат Новый Граница(КонецНедели(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "МЕСЯЦ" Тогда
        
        Возврат Новый Граница(КонецМесяца(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "КВАРТАЛ" Тогда
        
        Возврат Новый Граница(КонецКвартала(Дата), ВидГраницы.Включая);
        
    ИначеЕсли Период = "ГОД" Тогда
        
        Возврат Новый Граница(КонецГода(Дата), ВидГраницы.Включая);
        
    Иначе
        
        Возврат Дата;
        
    КонецЕсли;
       
КонецФункции
3 Franchiser
 
гуру
29.05.14
23:40
(1) потому что используешь регистр остатков или остатков и оборотов. Прибавляй секунду или используй границу. Или еще вариант стандартный период.
4 EvgeniuXP
 
29.05.14
23:42
(0) потому что так сделали разработчики платформы 1С - их это устраивает.
5 vicof
 
30.05.14
01:40
(3) Стандартный понятнее и эстетичнее
6 echo77
 
30.05.14
07:26
Это не СКД, это виртуальная таблица остатков берет остатки на начало секунды
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn