Имя: Пароль:
1C
1С v8
СКД и МоментВремени. Нужно ли брать границу, когда получаю остатки с помощью СКД
0 DirecTwiX
 
20.09.13
23:45
Допустим, запрос такой:

ВЫБРАТЬ
  *
ИЗ
  РегистрНакопления.Запасы.Обороты(&НП, &КП)

В СКД добавлен стандартный период, и указаны связи:
НП = &Период.ДатаНачала
КП = &Период.ДатаОкончания

Такой запрос корректен? Или нужно учитывать момент времени:
НП = &Период.ДатаНачала
КП = НачалоПериода(ДобавитьКДате(&Период.ДатаОкончания, "День", 1) "День");
(взято отсюда: http://help1c.com/faq/view/997.html)
1 Лефмихалыч
 
20.09.13
23:47
а вот теперь берем и смотрим в СП, что там пишут про таблицу остатков.
РегистрНакопленияМенеджер.<Имя регистра накопления>.Остатки (AccumulationRegisterManager.<Имя регистра накопления>.Balance)
РегистрНакопленияМенеджер.<Имя регистра накопления> (AccumulationRegisterManager.<Имя регистра накопления>)
Остатки (Balance)
Синтаксис:

Остатки(<МоментВремени>, <Отбор>, <Измерения>, <Ресурсы>)
Параметры:

<МоментВремени> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, на который необходимо получить остатки. Если параметр не указан, то будут получены текущие остатки (на максимальную дату движений регистра). Если в качестве параметра передана Дата, то остатки будут получены на начало дня, если МоментВремени - то в остатках не будут учтены движения регистра, произошедшие в тот же момент времени.


какой же вывод из этого следует? дайте подумать... хм...
2 shuhard
 
20.09.13
23:48
(0)[КП = НачалоПериода(ДобавитьКДате(&Период.ДатаОкончания, "День", 1) "День"); ]
оторвать руки
по самые уши
3 DirecTwiX
 
20.09.13
23:58
Спасибо!
(2) Да, мне тоже показалось странным)

(1) Хм.. А зачем тогда требуют подставлять момент времени в регистры бухгалтерии, хотя в СП написано, что и дата пойдёт?
4 Лефмихалыч
 
21.09.13
00:05
(3) а ты почитай глазами, что конкретно про дату там написано. Прямо вот пересиль себя и дочитай до конца. Во что бы то ни стало. Там есть ответ на этот вопрос.
5 Armando
 
21.09.13
00:18
Херня что в ноль обороты?
6 DirecTwiX
 
21.09.13
00:31
РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии>.ОборотыДтКт (AccountingRegisterManager.<Имя регистра бухгалтерии>.DrCrTurnovers)
РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии> (AccountingRegisterManager.<Имя регистра бухгалтерии>)
ОборотыДтКт (DrCrTurnovers)
Синтаксис:

ОборотыДтКт(<НачалоПериода>, <КонецПериода>, <ВидыСубконтоДт>, <ВидыСубконтоКт>, <Отбор>, <Измерения>, <Ресурсы>)
Параметры:

<НачалоПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, начиная с которого необходимо получить обороты. Если параметр не указан, то обороты будут получены начиная с момента ведения базы данных. Если в качестве параметра передана Дата или МоментВремени, то обороты за указанную дату (момент времени) будут включены в результирующую таблицу значений.
<КонецПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, определяющий конец периода за который необходимо получить обороты. Если параметр не указан, то обороты будут получены до самого позднего движения регистра. Если в качестве параметра передана Дата или МоментВремени, то обороты за указанную дату (момент времени) будут включены в результирующую таблицу значений.
<ВидыСубконтоДт> (необязательный)

Тип: ПланВидовХарактеристикСсылка.; Массив; ФиксированныйМассив.
Передается ссылка, или массив ссылок, или фиксированный массив ссылок на виды субконто. Параметр определяет, какие значения субконто дебета будут доступны по именам "СубконтоДт1", "СубконтоДт2" и т.д. Кроме того, обороты будут посчитаны только по счетам дебета, имеющим заданные виды субконто дебета. Если параметр не задан, то обращение к значениям субконто дебета осуществляется по порядку (индексу), как они определены на соответствующем счете.
Параметр не существует, если при конфигурировании для плана счетов не указаны субконто.
<ВидыСубконтоКт> (необязательный)

Тип: ПланВидовХарактеристикСсылка.; Массив; ФиксированныйМассив.
Передается ссылка, или массив ссылок, или фиксированный массив ссылок на виды субконто. Виды субконто определяют, какие значения субконто кредита будут доступны по именам "СубконтоКт1", "СубконтоКт2" и т.д. Кроме того, обороты будут посчитаны только по счетам кредита, имеющим заданные виды субконто кредита. Если виды субконто кредита не заданы, то обращение к значениям субконто кредита осуществляется по порядку, как они определены на соответствующем счете.
Параметр не существует, если при конфигурировании для плана счетов не указаны субконто.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая набор значений измерений регистра, по которым надо отбирать итоги. Допустимые значения ключа: СчетДт, СубконтоДт<Номер>, СчетКт, СубконтоКт<Номер>, <Имя измерения> или <Имя измерения>Дт и <Имя измерения>Кт.
Если параметр не указан, то отбор не используется.
<Измерения> (необязательный)

Тип: Строка, Неопределено.
Список измерений, для которых надо получить обороты. Строка, содержащая имена измерений, разделенных запятыми. Допустимые имена измерений: СчетДт, СубконтоДт<Номер>, СчетКт, СубконтоКт<Номер>, <Имя измерения> или <Имя измерения>Дт и <Имя измерения>Кт.
Если параметр не указан или указано Неопределено, то обороты будут сформированы по всем измерениям.
Значение по умолчанию: Неопределено
<Ресурсы> (необязательный)

Тип: Строка, Неопределено.
Список ресурсов, для которых надо получить обороты. Строка, содержащая имена ресурсов, разделенных запятыми.
Если параметр не указан или указано Неопределено, то обороты будут сформированы по всем ресурсам.
Значение по умолчанию: Неопределено
Возвращаемое значение:

Тип: ТаблицаЗначений.

Описание:

Получает обороты по регистру бухгалтерии на заданный момент. Обороты получаются в разрезе заданных измерений и по заданным ресурсам. В измерения входят счет дебета, субконто дебета, счет кредита, субконто кредита, измерения кредита, измерения (для балансовых) и измерения дебета, измерения кредита (для не балансовых).

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Параметры "Виды субконто Дт" и "Виды субконто Кт" не существуют, если при конфигурировании для плана счетов не указаны субконто.



Не нашёл...
7 Armando
 
21.09.13
00:36
"Если в качестве параметра передана Дата..."
8 Armando
 
21.09.13
00:44
(0) только что в название темы вчитался
ппц

СКД и МОМЕНТВРЕМЕНИ. Нужно ли брать ГРАНИЦУ, когда получаю ОСТАТКИ
а в (0) ОБОРОТЫ


ты уж определись, что конкретно тебе надо
9 DirecTwiX
 
21.09.13
00:46
(8) Большая разница что ли между остатками и оборотами?
Т.е. в остатки нужно момент времени пихать, а для оборотов и дата пойдёт?
10 sanja26
 
21.09.13
00:54
(9) для оборотов есть доп. параметр "включая .." в парамтреах таблицы
(1), (2) т.е. каждый раз пишем в коде

Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Период"));
Граница = Новый Граница(КонецДня(Дата), ВидГраницы.Включая);
Параметр.Значение = Граница;
Параметр.Использование = Истина;  

??
Я обычно, если не забываю, просто добавляю "+1" к концу периода
11 DirecTwiX
 
21.09.13
01:02
(10) "для оборотов есть доп. параметр "включая .." в параметрах таблицы"
Где? Виртуальной таблицы?
12 Armando
 
21.09.13
01:03
(9) большая разница. дату для остатков тоже можно.
при получении остатков, если подставишь дату, то в запросе к БД будет "period < ТвояДата",
тоже самое, если граница исключая
если граница включая, то "period <= ТвояДата"

для таблицы оборотов, если передаешь дату, всегда будет >= и <=
если границу передаешь, то в зависимости от вида границы. < или <=

то есть граница работает всегда однозначно. а дата в остатках и оборотах по разному себя ведет
13 DirecTwiX
 
21.09.13
01:19
(12) Спасибо за разъяснение!
Тогда получается, что вместо ДатыОкончания можно указать не границу, а дату+1 в остатках?

2) Почему в СП для остатков написано следующее:
"Если в качестве параметра передана Дата, то остатки будут получены на начало дня"
Косяк?
14 sanja26
 
21.09.13
01:32
(13) &Период.ДатаОкончания тебя спасет.
Дата по-умолчанию в 1с всегда начало дня
15 sanja26
 
21.09.13
01:33
(14) это по второму пункту (13)
16 DirecTwiX
 
21.09.13
02:00
(14) Это понятно. Вопрос был в следующем: если дата будет 24.10.92 12:00, то остатки будут на 24.10.92 00:00?
17 Armando
 
21.09.13
02:01
чуть-чуть обманул. остатки немного по другому считаются. там есть нюансы.
в общем берутся рассчитанные итоги на начало следующего месяца (из таблицы итогов) и от них отнимается оборот из основной таблицы от твоей даты до даты итогов.

схема примерно такая (упрощенно):
если остаток на дату &ТвояДата, или граница исключая

выбрать Сумма
из ТаблицаИтогов
где Период = &ДатаИтогов
объединить все
выбрать -Сумма
из ОсновнаяТаблица
где Период >= &ТвояДата и Период < &ДатаИтогов


если граница включая, то
где Период > &ТвояДата и Период < &ДатаИтогов
18 sanja26
 
21.09.13
02:07
(16) если дата будет 24.10.92 12:00, то остатки будут на 24.10.92 12:00
Просто дата обычно задается пользователем без указания времени
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший