Ошибка в выражении конецпериода датаокончания день

   dark70

20.03.23 — 15:15

Тем избитая, но не получается.

Запрос по двум регистрам : остатиИобороты и второй- остатки.

Для ОстатковИОборотов НачалоПериода = &Период.ДатаНачала, КонецПериода = &Период.ДатаОкончания

Для регистра Остатков как только не пробовал, и секунду добавлял и конецДня ставил.

Сейчас, например, КонецПериодаОстатков = КОНЕЦПЕРИОДА(&КонецПериода, «ДЕНЬ»)

Это запрос по Остаткам

ВЫБРАТЬ

    АР_ВзаиморасчетыПоАрендеОстатки.Контрагент КАК Контрагент,

    АР_ВзаиморасчетыПоАрендеОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента,

    АР_ВзаиморасчетыПоАрендеОстатки.СуммаОстаток КАК Остаток,

    АР_ВзаиморасчетыПоАрендеОстатки.ОбъектАренды КАК ОбъектАренды

ИЗ

    РегистрНакопления.АР_ВзаиморасчетыПоАренде.Остатки({(&КонецПериодаОстатков)}, ) КАК АР_ВзаиморасчетыПоАрендеОстатки

ГДЕ

    АР_ВзаиморасчетыПоАрендеОстатки.Депозит = ЛОЖЬ

Но все равно не цепляет документы 23.59.59, только если поставить КонецПериода след. день.

Еще вот так пробовал

ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»Секунда»,1)

тоже не цепляет.

   dark70

1 — 20.03.23 — 15:17

   vicof

2 — 20.03.23 — 15:28

КОНЕЦПЕРИОДА(Параметры.ДатаОкончания, «ДЕНЬ»)

   vicof

3 — 20.03.23 — 15:29

Ну и может нет на 23:59:59 недепозитных остатков

   ASU_Diamond

4 — 20.03.23 — 15:29

А если в запросе прописать конец дня?

   Новый1сник2

5 — 20.03.23 — 15:43

(0) КонецПериода и КонецПериодаОстатков одна дата ? попробуй в выражении заполнить &Период.ДатаОкончания

   Новый1сник2

6 — 20.03.23 — 15:43

+ для остатков

   dark70

7 — 20.03.23 — 15:44

(2) Так и сделано

Остатки есть, смотрю по другому отчету. Да и стоит изменить время документа на 23.59.58 и остатки появляются.

КОНЕЦПЕРИОДА(&Период.ДатаОкончания, «ДЕНЬ») может так ? Попробовал, та же фигня.

(5) Пробовал.

   Новый1сник2

8 — 20.03.23 — 15:45

вообще то в стандартный период, должны все документы попадать. странно

   Timon1405

9 — 20.03.23 — 15:47

может быть в типе параметра «КонецПериодаОстатков» дата стоит, а не дата+время?

   p-soft

10 — 20.03.23 — 15:47

остатки и обороты попробуйте. для глюка как то необычно..

   Новый1сник2

11 — 20.03.23 — 15:48

(9) опередил

   toypaul

12 — 20.03.23 — 15:52

Все правильно работает. В СКД таблица «Остатки» получается данные на НАЧАЛО периода. То есть на начало секунды. Поэтому нужно взять начало следующего дня чтобы получить остаток на конец секунды. Либо отдельные извращенцы передаются границу в параметр периода — и вроде как так тоже работает

   dark70

13 — 20.03.23 — 15:55

(8) Попадают если по одному регистру. А тут два разных.

(12) А если будет документ след. дня со времененм 0.00.00 ?

   toypaul

14 — 20.03.23 — 15:56

(13) и што?

   dark70

15 — 20.03.23 — 15:57

(14) Попадет в отчет ?

   toypaul

16 — 20.03.23 — 15:58

(15) нет. если прочитать (12) до появления просветления :)

   dark70

17 — 20.03.23 — 15:58

(12) Я пробовал так

ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»Секунда»,1)

тоже не попадает.

   arsik

18 — 20.03.23 — 15:59

(17) Через границу тогда делай.

   toypaul

19 — 20.03.23 — 16:00

(17) значит на тебя какое-то проклятье наложено. надо молитву прочитать для его снятия

   toypaul

20 — 20.03.23 — 16:02

Я даже думаю что проклятье это называется — не используй одни вычисляемые поля (параметры) для получения других

   Новый1сник2

21 — 20.03.23 — 16:09

(17) а так пробовал

ДобавитьКДате(КонецПериода(&Период.ДатаОкончания, «ДЕНЬ»),»Секунда»,1)

   vicof

22 — 20.03.23 — 16:11

Щас окажется, что таблицы местами перепутаны, и соединение внутреннее

   dark70

23 — 20.03.23 — 16:11

(12) Заменил на ОстаткиИОбороты, только использую &Период.ДатаОкончания

   dark70

24 — 20.03.23 — 16:13

   eddy_n

25 — 20.03.23 — 16:46

Эта тема стара как мир. Не ты один на эти грабли наступил в случае с вирт. таблицей Остатков и последней секундой дня. Используй:

  Граница = Новый Граница(Дата, ВидГраницы.Включая);

  Запрос.УстановитьПараметр(«КонецПериодаОстатков», Граница);

   eddy_n

26 — 20.03.23 — 16:48

Отчет на СКД здесь ни при чём. Причина не в нём.

   dark70

27 — 20.03.23 — 19:05

(25) Так я же переделал на таблицу остатков и оборотов. И все равно не видит 23.59.59.

   PR

28 — 20.03.23 — 19:16

(27) Гон

Позорище

Матчасть знает только (12)

Рукалицо

   Гена

29 — 20.03.23 — 19:49

(12) «В СКД таблица «Остатки» получается данные на НАЧАЛО периода. То есть на начало секунды»

Секунда как вагон поезда, имеет начало и конец. Значит Остатки в запросе всегда берутся на начало вагона…

а миллисекунды в 1С есть?

   Гена

30 — 20.03.23 — 19:54

А вообще-то они и не нужны. Раз документы 23:59:59 не попадают в запрос по остаткам, то они лежат ВНУТРИ вагона. Следовательно, можно не бояться брать периодом начало следующего. Документы следующего периода будут в своём вагоне и никак не попадут в запрос, который запрашивает его начало как начало следующего дня.

   Гена

31 — 20.03.23 — 19:58

На пальцах: запрос запросит остатки на начало секунды 00:00:00, поэтому документ от 00:00:00 туда не попадёт.

Один к одному как документы 13:59:59 не попадают на начало секунды 23:59:59

   dark70

32 — 20.03.23 — 20:03

Я переделал на регистр ОстаткиИОбороты. Но все равно не захватывает 23.59.59

ВЫБРАТЬ

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.Контрагент КАК Контрагент,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.ПериодАренды КАК ПериодАренды,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК Долг,

    ЛЕВ(АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.Контрагент.Наименование, 1) КАК ПерваяБуква,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.ОбъектАренды КАК ОбъектАренды,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.Регистратор КАК Регистратор,

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.СуммаВзаиморасчетовКонечныйОстаток КАК Остаток

ИЗ

    РегистрНакопления.АР_ВзаиморасчетыПоАренде.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Авто, , ) КАК АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1

        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.АР_ВзаиморасчетыПоАренде.ОстаткиИОбороты(

                {(&НачалоПериода)},

                {(&КонецПериода)},

                Авто,

                ,

                ПериодАренды >= &НачалоПериода

                    И ПериодАренды < &КонецПериода) КАК АР_ВзаиморасчетыПоАрендеОстаткиИОбороты

        ПО АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.Контрагент = АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.Контрагент

            И АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.ДоговорКонтрагента = АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.ДоговорКонтрагента

            И АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.ОбъектАренды = АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.ОбъектАренды

ГДЕ

    АР_ВзаиморасчетыПоАрендеОстаткиИОбороты.Депозит = ЛОЖЬ

    И АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.Депозит = ЛОЖЬ

Конфигурация специализированная, поэтому не обращайте внимание на все эти депозиты и периоды оплаты.

Стоит время документа сместить на секунду раньше и документ попадает в отчет, т.е. движения документа влияют на остаток.

   dark70

33 — 20.03.23 — 20:04

Долг разворачивается по периодам слева направо, а вот Остаток неверный, не видит 23.59.59

   dark70

34 — 20.03.23 — 20:06

(31) ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»Секунда»,1) тоже не попадает.

Только явно указать след. день в КонецПериода.

   Гена

35 — 20.03.23 — 20:12

(34) Вы меня не поняли, я предлагаю вместо СКД текущего периода использовать СНД следующего. Если в запросе у Вас я вижу &КонецПериода, то наверное должна быть и какая-то &НачалоПериода, но только следующего… нет?

   PR

36 — 20.03.23 — 20:21

Рукалицо

Сборище упоротых новичков

   Гена

37 — 20.03.23 — 20:28

(34) «Только явно указать след. день в КонецПериода»

Отлично. Мы выяснили минимальный квант периода в запросе. Значит нам достаточно СНД запроса для следующего дня (+1 к текущему любому периоду)

   dark70

38 — 20.03.23 — 20:29

Да как-то странно, я там хоть день добавлю, все равно остатки не те.

ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»День»,1)

В другом дело.

   Гена

39 — 20.03.23 — 20:38

(38) вот же я вижу в запросе:

АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.СуммаВзаиморасчетовКонечныйОстаток

А для НАЧАЛЬНОГО остатка подобной нет?

АР_ВзаиморасчетыПоАрендеОстаткиИОбороты1.СуммаВзаиморасчетовНАЧАЛЬНЫЙОстаток

   Тындр

40 — 20.03.23 — 21:25

а можнож было вместо даты границу времени «включая» секунду передать, не?

   eddy_n

41 — 20.03.23 — 21:58

(40) Можно было бь нормально реализовать в случае с вирт. таблицами на стороне вендора функцию КонецПериода(КонДата, День) и всё — вопрос был бы закрыт. А так — вечная тема для не одного поколения.

   rudnitskij

42 — 20.03.23 — 22:02

(40) ему это три раза уже писали, он не знает что такое граница

   PR

43 — 20.03.23 — 22:07

(41) Какой ты умный, тебе череп не жмет?

А КонецПериода(‘20000101’, День) = ‘20000101235959’?

И что делать, если мне нужны начальные остатки, а не конечные?

   Lexandr

44 — 20.03.23 — 22:14

Ну варианты всякие могут быть, как присобачить эту +1 секунду при получении остатков.

   Lexandr

45 — 20.03.23 — 22:15

   dark70

46 — 20.03.23 — 22:16

(40) Да хоть что там передавай. Пока не убрал СтандартныйПериод, ничего не получалось.

Т.е. был Период и у НачалоПериода было выражение Период.ДатаНачала, у конца периода соотв-но Период.ДатаОкончания.

И границу передавал и просто секунды прибавлял в параметр КонецПериодаОстатков, смотрел в отладчике, параметры четко заполнялись в ПриКомпоновке.

Убрал Период, теперь конечно не так удобно, приходится отдельно вбивать НачалоПериода и КонецПериода, и там прописал выражение

ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»Секунда»,1)

зато нормально видит и долги развернуть по периодам и конечный остаток.

   PR

47 — 20.03.23 — 22:17

(44) Там два варианта, либо брать ‘20000102’ либо граница конца дня включая, обе уже обсосали сто раз, но кому-то по ходу нравится обсасывать обсосанное снова и снова, поливая обсосанное горючими слезами

   PR

48 — 20.03.23 — 22:18

(46) Трындежь, поменяй прокладку

   dark70

49 — 20.03.23 — 22:19

   Гена

50 — 21.03.23 — 08:01

По логике понятно, что структура любого регистра накопления не может быть непрерывной, а является зернистой в 1 секунду. Понятно также, что надо было как-то определиться с протяжённостью этой секунды и выбрали когда-то её начало. Хорошо. Но почему тогда сразу во внутреннем предопределённом механизме не заложили сдвиг вперёд на длину этой секунды, если запрашивается конец периода?

Как я понял, здесь уже устали от многолетних вопросов от новичков по 59-ой секунде и давно уже найдены КОСТЫЛИ для решения данной проблемы.

А почему никто не спросил, а зачем я хожу на костылях? Почему бы не попросить фирму 1С перепрошить внутренний алгоритм и по запросу КонецПериода сразу же добавлять секунду? Зачем заставлять программистов вечно ходить на костылях?

   PR

51 — 21.03.23 — 10:20

Вот ведь вроде еще не пятница, а клоуны уже набежали гурьбой

   Новый1сник2

52 — 21.03.23 — 10:27

(49) проверил на своем отчете дата окончания = 31.03.2023, ДатаОстатков = 01.04.2023 0:00:00

Для ДатыОстатков в СКД выражение ДобавитьКДате(КонецПериода(&ПериодОтчета.ДатаОкончания, «ДЕНЬ»),»Секунда»,1)

   azernot

53 — 21.03.23 — 10:44

(50) В далёком начале 2000-х, точно не помню в 2003 или в 2004, когда плотно занялся 1С 8, я столкнулся с тем, что виртуальная таблица Остатки регистров накопления по-умолчанию для даты, указанной в параметре «Период» использует остатки на границу «исключая» (т.е. на начало секунды), в отличие от виртуальной таблицы ОстаткиИОбороты, которая конечный остаток получает на границу «включая». Я тоже удивился, почему так? Ведь примерно в 90% случаев таблица Остатки используется для получения именно конечных остатков. Казалось бы, ну сделайте по-умолчанию «включая», а если пользователю понадобится, он передаст границу «исключая». Внятный ответ я так и не нашёл, воз и ныне там, а программисты продолжают наступать на эти грабли.

К чему я это? К тому, что проблема давняя, известная. Но судя по тому, что за 20 лет ничего не изменилось в этом направлении, есть достаточно веские причины для того, чтобы Остатки работали так, как работают. Не думаю, что стоит ждать изменений. Остатки так и будут работать, как работают. С этим надо просто смириться.. и продолжать жрать кактус используя Границу или сдвигая период на секунду.

   PR

54 — 21.03.23 — 10:47

(53) И ты туда, Брут?

Что скажешь про (43)?

Что делать, если мне нужны остатки именно на начало, а не на конец?

   azernot

55 — 21.03.23 — 10:49

(54) Что делать? Я ж ответил. Использовать границу «Исключая» или добавлять -1 секунду! Ровно так же как делается сейчас, чтобы получать конечные остатки.

   PR

56 — 21.03.23 — 10:54

(55) А, то есть ты про то, что кактус потому, что по дефолту не конечные остатки, а начальные

Ну такое, сомнительное

   azernot

57 — 21.03.23 — 11:04

(56) Я думаю, всему виной то, что предполагалось, что основная функция метода Остатки() — получение остатка на момент времени регистратора (а там как правило нужно на момент не включая движения этого регистратора). Но это не точно, поэтому т-с-с-с-с!

;)

   Гена

58 — 21.03.23 — 11:21

(53) тогда костыль исчезнет для конца периода, но появится для начала. Это не выход.

Надо принять, что 20 лет назад договорились использовать дно стакана, в которое налита секунда.

Просто для КонецПериода внутри сразу заалгоритмировать плюс 1 сек, т.е. воспользоваться тем, что планковское время для 1С секунда.

И тогда больше никогда ни один программист не будет больше ходить на костылях.

И не надо бояться документов, проведёных в 00:00:00, ведь дно стакана первой секунды будет ниже.

   azernot

59 — 21.03.23 — 11:25

(58) Я против такого «планкового времени». У меня в базе может быть больше, чем 86400 документов в сутки.

   Гена

60 — 21.03.23 — 11:27

(59) да хоть миллион

   PR

61 — 21.03.23 — 11:29

(59) В одной секунде может быть больше одного документа

И граница — это дата + ссылка на регистратор

   Гена

62 — 21.03.23 — 11:40

Понятно, что не надо напрямую менять внутреннюю сущность ПериодКонец, иначе рухнут все отчёты.

Достаточно попросить фирму 1С ввести новую сущность ПериодКонецНовый и тогда программисты будут в своих новых запросах спокойно её использовать.

   PR

63 — 21.03.23 — 11:41

(62) Граница включая

   azernot

64 — 21.03.23 — 11:42

(62) Ага, и потом будет миллиард тем на Мисте «Помогите, в отчёт попадают данные за первую секунду следующего дня!». Потому что кто-то обязательно будет использовать этот «ПериодКонецНовый» в таблице ОстаткиИОбороты.

   azernot

65 — 21.03.23 — 11:49

Но в принципе, можно было бы расширить набор свойств у общего объекта «СтандартныйПериод». Кроме ДатаНачала и ДатаОкончания добавить к примеру: ДатаНачалаГраницаВключая, ДатаОкончанияГраницаВключая.

   Гена

66 — 21.03.23 — 11:49

(64) да не попадут они никак. Вон же автор ветки принудительно сдвинул на секунду конец и всё нормально. Да и упоминал он же выше, что все доки 58 попадают, а 59 не попадают. Значит после сдвига попадут все доки 59 и НЕ ПОПАДУТ все 00. Чудес не бывает.

Мы же вроде уже выяснили, что на зернистой временной шкале, несмотря на громкое название сКд — всё равно идёт анализ НА НАЧАЛО последнего зерна конечного периода, т.е. на начало зерна 59.

   azernot

67 — 21.03.23 — 11:53

(66) Виртуальная таблица ОстаткиИОбороты получает конечный остаток на конец периода по методу границы «Включая» :)

И если вы сделаете в СКД запрос типа МойРегистр.ОстаткиИОборты(&НачалоПериода, ДобавитьКДате(КонецПериода(&КонецПериода, «ДЕНЬ»),»Секунда»,1))

вам в оборот попадут данные за 1 секунду дня следующего за &КонецПериода (как в обороты, так в остатки)

Просто попробуйте. :)

   PR

68 — 21.03.23 — 11:55

(66) Автор ветки унылый наркоман, у него вообще ничего не работает, даже то, что у других работает

Только воду мутит

   Гена

69 — 21.03.23 — 11:58

(67) зачем пробовать — и так понятно из названия, что метод «включая границу» как раз и даёт сдвиг на секунду )

   Новый1сник2

70 — 21.03.23 — 12:01

(65) согласен, интересная идея

   azernot

71 — 21.03.23 — 12:01

(69) Я предлагаю вам попробовать, чтобы убедиться что виртуальные таблицы Остатки() и ОстаткиИОбороты() по-разному работают с параметрами Период и КонецПериода соответсвенно.

Мне кажется вы это не осознаёте в (66).

   Гена

72 — 21.03.23 — 12:04

(70) я пока не совсем согласен. ДатаОкончанияГраницаВключая — это понятно и красиво сработает.

А вот для начала периода включать границу, по-моему, ни к чему.

   Гена

73 — 21.03.23 — 12:05

(71) я уже понял, снимается КонецПериодаНовый с обсуждения. Тут оказывается можно границу ещё включать/выключать )

   azernot

74 — 21.03.23 — 12:08

(72) Да, сходу не могу придумать прикладную задачу, где бы можно было использовать ДатаНачалаГраницаВключая. Я такой реквизит добавил бы хотя бы для симметрии. А уж программисты сами придумают, где они будут его использовать.

   PR

75 — 21.03.23 — 12:15

(74) Ага, и потом новая волна визгов, как эти идиоты в 1С всех запутали и что нихрена непонятно, ДатаНачалаГраницаВключая — это когда на начало секунды или на конец, потому что для кого-то включая — это по аналогии с концом, а для кого-то включая — это когда попадает в период или нет

В общем, повизжать всегда найдется кому

   Новый1сник2

76 — 21.03.23 — 12:20

(72) сама идея добавить ДатаОкончанияГраницаВключая логичная, чтобы не извращаться с добавлением секунды.

для начала периода включать границу может и не надо.

   Гена

77 — 21.03.23 — 12:29

Глянул БП. В глазах рябит от сотен строк:

Запрос.УстановитьПараметр(«КонПериода», Новый Граница(КонецПериода, ВидГраницы.Включая));

   ssh2006

78 — 21.03.23 — 12:36

(0) Идут годы, ничего не меняется..

   PR

79 — 21.03.23 — 12:45

(78) И не говори, как ныли, так и ноют

   PR

80 — 21.03.23 — 12:46

(77) Может тебе профессию поменять, раз у тебя от кода в глазах рябит?

Зрение — штука важная, посадишь, что потом делать будешь

   Гена

81 — 21.03.23 — 13:18

Итак, это костыль, когда надо обязательно включать границу, чтобы захватить 59-ю секунду. Тогда надо признать изначальный ляп языка 1С, либо приведите мне пример, когда для конца периода не нужна последняя секунда.

   PR

82 — 21.03.23 — 13:20

(81) Ты совсем наглухо тупой что ли?

Тебе же миллиард раз сказали пример, когда остатки нужны на начало

   Гена

83 — 21.03.23 — 13:22

(82) тук-тук-тук… про начало периода разговора нет. Дубль два: приведите пример, когда для КОНЦА периода не нужна 59-я секунда.

   PR

84 — 21.03.23 — 13:30

(83) В конце всегда включая секунду

Ты совсем что ли в сознание не приходишь?

   Гена

85 — 21.03.23 — 13:37

(84) Если «в конце всегда включает секунду», то зачем понадобился именно для конца периода костыль «ВключаяГраницу?

Значит Вы не правы. Без этого костыля 59-я секунда не включается в конец периода. И мы в этом убедились в данной ветке.

Значит по умолчанию граница не включена. Вот я и интересуюсь, по какой логике разработчики изначально не включили 59-ю секунду в сущность конца периода. Что-то же было тогда давно у них в голове. Какой-то пример, когда эта последняя секунда не нужна именно для конца периода.

You see?

   PR

86 — 21.03.23 — 13:38

(85) Читай ветку с самого начала

   echo77

87 — 21.03.23 — 18:25

Чем все закончилось?

Может у автора проблема номер ноль? https://youtu.be/IbOzq-S9jU0

   dark70

88 — 21.03.23 — 18:33

(52) Так у меня тоже на других отчетах всегда все нормально было. А тут и с табл. остатков переписал на табл. оборотов и секунды добавлял и из приНачалеКомпоновки передавал как время, так и границу. Ничего не помогало.

Пока убрал СтандартныйПериод и сделал отдельный ввод Начала и Окончания.

https://s1.hostingkartinok.com/uploads/images/2023/03/1785616133ec579db8ef88c3141f3137.jpg

Я бы сбросил для проверки отчет, но он для спец.конфигурации, на обычной бухгалтерии не будет работать.

   dark70

89 — 21.03.23 — 18:40

   Новый1сник2

90 — 22.03.23 — 08:14

(88) попробуй стандартный период переименовать на «ПериодОтчета»

   Ботаник Гарден Меран

91 — 22.03.23 — 09:26

(77)

Это устаревшая версия БП.

В новых уже

Запрос.УстановитьПараметр(«КонецПериода»,Новый МоментВремениСУточнениемПериода(КонтекстРасчета.КонецПериода, УточнениеПериода));

   eddy_n

92 — 22.03.23 — 10:04

(91) Как оказалось на поверку, МоментВремениСУточнениемПериода — тема не новая.

   eddy_n

93 — 22.03.23 — 12:16

Появилось в 8.3.9 в 2016.

СКД остатки на конец дня

Я

  

I_learn_1c

21.11.17 — 13:51

Здравствуйте,

помогите пожалуйста.

Делаю отчет в СКД. Нужно выводить ТоварыВРезерве.Остатки, на конец дня.

В запросе указываю

РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, )

Но период задается не четко датой, а типом «Стандартная дата начала» («Начало этого дня», «Начало этой недели» и т.д.)

Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло.

Стандартный период как то не притулила потому что смущает что нам дата начала и дата конца, а мне то только одна дата нужна, чтобы остатки конкретно на нее получить.

Как правильно получить остатки на конец дня? обычные формы, если важно, КА 1.1

  

azernot

1 — 21.11.17 — 14:03

>Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло

Как делали? И как поняли, что не помогло?

  

Гипервизор

2 — 21.11.17 — 14:05

(0) Для таблицы Остатков я бы получал так:

ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)

  

azernot

3 — 21.11.17 — 14:05

Попробуйте так:

Заведите параметр

КонДата, для которого в Выражении напишите &Период.ДатаОкончания

А в запросе укажите

КОНЕЦПЕРИОДА(&КонДата,»День»)

  

I_learn_1c

4 — 21.11.17 — 14:08

(1)  В запросе:

РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, )

В параметрах СКД один параметр Период, тип Дата, у него в Выражение записано КОНЕЦПЕРИОДА(&Период,»День»)

В Настройках СКД в Параметрах отмечен Период и если у него значение менять на какое-то «Начало этого месяца» к примеру, дата ставится например 01.11.2017 0:00:00

И в отчете выводится Параметры: Период:01.11.2017 0:00:00

  

I_learn_1c

5 — 21.11.17 — 14:09

(2) а куда это писать?

  

azernot

6 — 21.11.17 — 14:10

(4) Ну так параметр-то вы не меняете. Вы остатки проверьте, на начало они выдаются или на конец.

  

I_learn_1c

7 — 21.11.17 — 14:11

(3) Тогда Период типа Стандартный период, а КонДата -типа дата?

И в настройках СКД в параметрах все равно период?

  

I_learn_1c

8 — 21.11.17 — 14:12

(6) сейчас, пробую

  

azernot

9 — 21.11.17 — 14:14

(7) Да.

  

I_learn_1c

10 — 21.11.17 — 14:29

(9) Вроде меняется как надо..но я путаться уже стала.

По идее должно быть же достаточно в параметрах указать КОНЕЦПЕРИОДА(&Период,»День»)? А то что он выводит в Отчете 00:00:00 это не важно?

  

Гипервизор

11 — 21.11.17 — 14:40

(10) Какие поля вы выводите в отчет нам неведомо, но в качестве параметра у вас указывается конец дня.

Вот только записи со временем 23:59:59 у вас в отчет не попадут, проверьте.

  

I_learn_1c

12 — 21.11.17 — 14:49

(11)а куда в СКД дописать можно

ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)

  

I_learn_1c

13 — 21.11.17 — 14:49

?

  

azernot

14 — 21.11.17 — 14:52

В запрос, туда где указывается период остатков

Например:

РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, «День»), «Секунда», 1), )

  

Гипервизор

15 — 21.11.17 — 14:53

Ну или в выражении параметра СКД

  

I_learn_1c

16 — 21.11.17 — 15:33

(14)спасибо большое, работает.правда записей на 23:59 у меня нет.

а с 23:59 это особенность 1С такая? И считается же что это та же дата? это не переходит еще на 00:00 следующего дня или как-то еще?

  

I_learn_1c

17 — 21.11.17 — 15:35

(15) и вам тоже спасибо)

  

vicof

18 — 21.11.17 — 15:37

(16) Читай про даты, границы и моменты времени

  

azernot

19 — 21.11.17 — 15:37

Виртуальная таблица Остатки() даёт остатки на границу НЕ ВКЛЮЧАЯ. Это такая особенность виртуальной таблицы остатков.

Таблица ОстаткиИОбороты выдаёт данные по границу ВКЛЮЧАЯ

  

I_learn_1c

20 — 21.11.17 — 15:40

(18) вот только прочитала про то что написано в (19) . Буду вникать подробнее, спасибо что подсказали что к чему

Обратная связь

Караков Александр Александрович
Много нового и интересного я узнал в этом курсе начиная с общих механизмов платформы,заканчивая автоматизацией
расчета зарплаты.
на практике полученные знания пригодились для построения внешних печатных форм и обработки заполнения табличных частей
документов, построению отчетов в СКд в конфигурации Бухгалтерии предприятия.
Сейчас работаю над проектом перехода крупной организации с 7.7 на 8.2 Бухгалтерию предприятия. Очень доволен форматом курса, большое спасибо!!!
Буду слушать продвинутый.

Ошибки и решения.

1 . В форме документа Закупка,КомплектацияБлюд,Продажа на панели навигации нет команд перехода на движения в регистрах сделанных этим документом
Устанавливается в командном интерфейсе управляемой формы

2. Общий модуль РаботаСДокументамиКлиент компилируется на сервере ,а необходимо компилировать на клиенте.

3 В документе Закупка Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр
Движения.ОстаткиТМЦ.Записывать = Истина;
Движения.Закупки.Записывать = Истина;
Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура,Цена»,»Количество,Сумма»);

Для Каждого ТекСтрокаНоменклатура Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
// регистр Закупки Приход
Движение = Движения.Закупки.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
КонецЦикла;

4 В Регистре сведений состав блюд имеется измерение Количество, а оно должно быть ресурсом , для того чтобы платформа не давала
записать ошибочные сведения (На одно блюдо , одна компонента и разное количество)

5-6.В общем модуле неправильный код контроля остатков

Перписал запрос по контролю остатков (выбираем различную номенклатуру из табличной части документа,используем левое соединение к таблице документа,
в параметре Момент устанавливаем границу включая движения самого документа)

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиТМЦОстатки.КоличествоОстаток,
| ТабличнаяЧастьДокумента.НомерСтроки,
| ТабличнаяЧастьДокумента.Номенклатура
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабличнаяЧастьДокумента.Номенклатура КАК Номенклатура,
| МИНИМУМ(ТабличнаяЧастьДокумента.НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
| ГДЕ
| ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка
|
| СГРУППИРОВАТЬ ПО
| ТабличнаяЧастьДокумента.Номенклатура) КАК ТабличнаяЧастьДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(
| &Момент,
| Номенклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабличнаяЧастьДокумента.Номенклатура
| ИЗ
| Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
| ГДЕ
| ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка)) КАК ОстаткиТМЦОстатки
| ПО (ОстаткиТМЦОстатки.Номенклатура = ТабличнаяЧастьДокумента.Номенклатура)
|ГДЕ
| ОстаткиТМЦОстатки.КоличествоОстаток < 0″;

Если ИмяДокумента»Продажа» Тогда

Запрос.Текст = СтрЗаменить(Запрос.Текст, «Продажа», ИмяДокумента);

КонецЕсли;
Граница = Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая);
Запрос.УстановитьПараметр(«Момент», Граница);

7. При выводе сообщения пользователю не правильно позиционируется поле вывода ,необходимо
Сообщение.Поле = «Номенклатура[«+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+»].Количество»;

8-9.В документе комплектация в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,
так же отсутствует необходимость дважды установки флага записывать для набора записей ОстаткиТМЦ

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр ОстаткиТМЦ Приход
Движения.ОстаткиТМЦ.Записывать = Истина;
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = Блюдо;
Движение.Количество = Количество;

// регистр ОстаткиТМЦ Расход
// Движения.ОстаткиТМЦ.Записывать = Истина;

Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура»,»Количество»);

Для Каждого ТекСтрокаСостав Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаСостав.Номенклатура;
Движение.Количество = ТекСтрокаСостав.Количество;
КонецЦикла;

Движения.Записать();

Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект, «КомплектацияБлюд»);

КонецПроцедуры

10.В форме документа продажа обращение к КонстантыМенеджер можно только на сервере

&НаКлиенте
Процедура ПриОткрытии(Отказ)

Если Объект.Ссылка.Пустая() Тогда

Объект.Покупатель = ПолучитьОсновногоПокупателя();

КонецЕсли;

КонецПроцедуры

//Обращение к КонстантыМенеджер можно только на сервере
//
&НаСервереБезКонтекста
Функция ПолучитьОсновногоПокупателя()
Возврат Константы.ОсновнойПокупатель.Получить();
КонецФункции

11.В документе продажа в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,

Процедура ОбработкаПроведения(Отказ, Режим)

// регистр ОстаткиТМЦ Расход
Движения.ОстаткиТМЦ.Записывать = Истина;
Движения.Продажи.Записывать = Истина;

Таблица = Номенклатура.Выгрузить();
Таблица.Свернуть(«Номенклатура,Цена»,»Количество,Сумма»);

Для Каждого ТекСтрокаНоменклатура Из Таблица Цикл
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;

// регистр Продажи Приход
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
Движение.Количество = ТекСтрокаНоменклатура.Количество;
Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
КонецЦикла;

Движения.Записать();

Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект);

КонецПроцедуры

12.В отчете Остатки необходимо добавить параметр НаДату ,который будет вводить пользователь,а в выражение параметра Период ввести : ДобавитьКДате(КонецПериода(&НаДату, «День»), «Секунда», 1)
для получения корректных остатков. параметр НаДату включим в быстрые пользовательские настройки

13. Регистр накопления Продажи должен быть оборотным, т.к. иначе регистр не будет закрываться в ноль
14. В отчете ПродажиЗакупки изменим Запрос в СКД так же в пользовательском режиме пересчитаем итоги для корректного
формирования отчета.

ВЫБРАТЬ
ЕСТЬNULL(ЗакупкиОбороты.Номенклатура, ПродажиОбороты.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(ЗакупкиОбороты.КоличествоОборот, 0) КАК КоличествоЗакупки,
ЕСТЬNULL(ЗакупкиОбороты.СуммаОборот, 0) КАК СуммаЗакупки,
ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК КоличествоПродажи,
ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СуммаПродажи
ИЗ
РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПО ЗакупкиОбороты.Номенклатура = ПродажиОбороты.Номенклатура

Помощь миру

http://forum.infostart.ru/forum15/topic68900/message739993/#message739993

http://forum.infostart.ru/forum26/topic70963/

//продолжение следует

Имитация (программное) нажатия Клавиш 2
В системе » 1С:Предприятие» часто возникает ситуация, когда нужно закрыть окно сообщений, появляющееся при вызове метода Сообщить. Стандартно это окно закрывается при нажатии комбинации клавиш Ctrl + Shift + Z , но можно сделать это и программно.


Импорт — экспорт данных через XML. Обработка обмена документами 7
Восстановление документов 1С из архива в рабочую базу (XML обмен)
Не редко требуется восстановить данные испорченного документа 1С из архива базы после не умышленных, а зачастую ошибочных, действий удачливого пользователя. Самым простым способом я


Использование предложения ДЛЯ ИЗМЕНЕНИЯ 0
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи. ДЛЯ ИЗМЕНЕНИЯ дает возможность указать в


Использование Предопределенных данных конфигурации 2
Текст запроса может содержать предопределенные данные конфигурации, такие как:
— значения перечислений;
— предопределенные данные:
— справочников;
— планов видов характеристик;
— планов счетов;
— планов видов расчетов;
— пустые ссылки;


Как в запросе указать пустую дату? — ДАТАВРЕМЯ() 7
Для указания Даты и Времени в запросе предназначена функция ДАТАВРЕМЯ(
ДАТАВРЕМЯ ( Целое число , Целое число , Целое число )
Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указываю


Посмотреть все результаты поиска похожих

Здравствуйте, помогите пожалуйста. Делаю отчет в СКД. Нужно выводить ТоварыВРезерве.Остатки, на конец дня. В запросе указываю РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) Но период задается не четко датой, а типом «Стандартная дата начала» («Начало этого дня», «Начало этой недели» и т.д.) Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло. Стандартный период как то не притулила потому что смущает что нам дата начала и дата конца, а мне то только одна дата нужна, чтобы остатки конкретно на нее получить. Как правильно получить остатки на конец дня? обычные формы, если важно, КА 1.1

>Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло Как делали? И как поняли, что не помогло?

Для таблицы Остатков я бы получал так:

Попробуйте так: Заведите параметр КонДата, для которого в Выражении напишите &Период.ДатаОкончания А в запросе укажите КОНЕЦПЕРИОДА(&КонДата,»День»)

В запросе: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) В параметрах СКД один параметр Период, тип Дата, у него в Выражение записано КОНЕЦПЕРИОДА(&Период,»День») В Настройках СКД в Параметрах отмечен Период и если у него значение менять на какое-то «Начало этого месяца» к примеру, дата ставится например 01.11.2017 0:00:00 И в отчете выводится Параметры: Период:01.11.2017 0:00:00

Ну так параметр-то вы не меняете. Вы остатки проверьте, на начало они выдаются или на конец.

Тогда Период типа Стандартный период, а КонДата -типа дата? И в настройках СКД в параметрах все равно период?

Вроде меняется как надо..но я путаться уже стала. По идее должно быть же достаточно в параметрах указать КОНЕЦПЕРИОДА(&Период,»День»)? А то что он выводит в Отчете 00:00:00 это не важно?

Какие поля вы выводите в отчет нам неведомо, но в качестве параметра у вас указывается конец дня. Вот только записи со временем 23:59:59 у вас в отчет не попадут, проверьте.

а куда в СКД дописать можно ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)

В запрос, туда где указывается период остатков Например: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, «День»), «Секунда», 1), )

Ну или в выражении параметра СКД

спасибо большое, работает.правда записей на 23:59 у меня нет. а с 23:59 это особенность 1С такая? И считается же что это та же дата? это не переходит еще на 00:00 следующего дня или как-то еще?

Читай про даты, границы и моменты времени

Виртуальная таблица Остатки даёт остатки на границу НЕ ВКЛЮЧАЯ. Это такая особенность виртуальной таблицы остатков. Таблица ОстаткиИОбороты выдаёт данные по границу ВКЛЮЧАЯ

вот только прочитала про то что написано в . Буду вникать подробнее, спасибо что подсказали что к чему

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

СКД. Граница периода

документацию читать надо и пробовать: 

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

всё четко работает


(с) I_G_O_R

или в выражении параметра Период (тип Дата) указать конструкцию

ВЫБОР &Период КОГДА ДатаВремя(1,1,1) ТОГДА ДатаВремя(1,1,1)  ИНАЧЕ ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&Период, «ДЕНЬ»), «СЕКУНДА», 1) КОНЕЦ

(с) http://www.spec8.ru/d08m12-lastsec  , Видео урок из статьи

Всё это обусловлено тем, что остатки виртуальной таблицы получаются на начало секунды, тем самым при проведении документов мы будем получать актуальные остатки на момент перед датой документа, а не после.

Популярные сообщения из этого блога

Вводная: текст в заголовке колонки отчета необходимо сориентировать «на 90»,  в ячейках же отчета оставить «на 0». Гуглопоиск отсылает к веткам различных форумов, где всё сводится к «нужно делать самостоятельный макет». Оказалось необязательно.

Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавлениеизменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За

Когда нужно в макете (табличном документе) изменить ширину колонки  для конкретных строк: 1. Выделить всю строку (строки). Именно всю, фокус для выделенной области не работает. 2. Нажимаем и не отпускает Ctrl 3. С помощью мыши изменяют ширину любой из колонок — будет задан вопрос об создании нового формата строк — соглашаемся. Как же прекрасен мир, где для модификаций не достаточно просто использовать контекстное меню и диалог редактора свойств, где нужно знать заветные слова и таинства танца. 90ые, моё почтение. UPD Программно, тоже самое, можно сделать через ТабДок = Новый ТабличныйДокумент(); ТабДок.Область(1,,1,).СоздатьФорматСтрок(); ТабДок.Область(1,1).ШиринаКолонок = 70; ТабДок.Область(1,2).ШиринаКолонок = 30; ТабДок.Область(2,,2,).СоздатьФорматСтрок(); ТабДок.Область(2,1).ШиринаКолонок = 30; ТабДок.Область(2,2).ШиринаКолонок = 70; ТабДок.Показать();

Когда я создал свой первый отчет в 1С с помощью системы компоновки данных (СКД) и начал проверять его на правильность заполнения, то обнаружил одну проблему, с которой думаю будут сталкиваться все начинающие 1С программисты. Проблема заключалась в том что в отчет попадали не все документы. Если сказать точнее не попадали документы за последнее число, установленного периода. Данная статья предназначена тем кто только делает первые шаги в изучение 1С. Если Вы более менее опытный можете дальше не читать.

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

Как в СКД добавить итоги

Как в СКД сравнить значение двух колонок

Как переименовать заголовки колонок в шапке

Как создать отчет с помощью СКД

Как в СКД добавить заголовок

Как правильно настроить отбор по периодам в СКД

И так давайте разберем все на примере, вот у нас есть отчет, мы задали период и сформировали его и видим что за 11.06 есть документы.

1С Начало и Конец дня

Но если мы сформируем отчет на эту дату то он будет пустой.

Внимательные люди заметили что у нас в периоде отображается не только дата но и время, и время установлено началом дня, т.е. мы выбираем документы которые созданы 11.06.2017 в 0:00:00.

Логично что документы которые созданы в другое время не попали в отчет, что бы это исправить нужно установить еще и время 23.59.59. В этом случае отчет будет формироваться корректно.

Но в большинстве случаев время в периоде просто не нужно, если пользователь выбирает 11.06 соответственно он хочет видеть документы за весь этот день.

1С Начало и Конец периода

Для того чтобы установить период концом выбранного дня нужно немного изменить запрос, поменять условие это

СчетНАОплатуКлиенту.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

на это.

СчетНАОплатуКлиенту.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)

Т.е мы добавили стандартную функцию НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА.

Как настроить отбор концом дня в 1С СКД

Так же можно изменить состав даты и убрать о туда время, делается это во вкладке «Параметры» в поле «Тип».

Как правильно настроить отбор по периодам в СКД

Если теперь мы выберем тот же период то отчет сформируется правильно.

1С СКД как установить период концом дня

На эту тему в интернете достаточно много ответов, но все они на форумах, чаще всего там пишут «используй функцию КОНЕЦПЕРИОДА». Тут же у новичком возникает вопрос а где её использовать и как правильно. Поэтому я написал эту небольшую статью и попытался рассказать все как можно проще и понятней.

Возможность установки времени нужно продумывать на начальном этапе, и если в нем нет необходимости то и выводить его не нужно.

 0 

   

Распечатать

В отчет не попадают данные за последний день… Как исправить?

Пользователь выбрал период формирования отчета с 1июля по 31. Почему при формировании отчета в него не попадают данные за 31 число?

На самом деле, это одна из самых распространенных ошибок при разработке отчетов. В 1С 8.х дата содержит время с точностью до секунды, и если в своем отчете Вы описываете параметры следующим образом:
title
то при формировании пользователем отчета с 1 по 31 июля, фактически параметры будут заполнены так: НачалоПериода = 01.07.2010. 0:00:00, КонецПериода = 31.07.2010. 0:00:00. Т.е. данные, отличные от начала дня 31-го числа в отчет не попадут.

Для того, чтобы в отчет попали данные и за весь день 31 июля, необходимо написать в поле Выражение параметра КонецПериода следующее:
title
КонецПериода(&КонецПериода,»День»)

Тут КонецПериода() – функция языка выражений системы компоновки данных.
also

Здравствуйте, помогите пожалуйста. Делаю отчет в СКД. Нужно выводить ТоварыВРезерве.Остатки, на конец дня. В запросе указываю РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) Но период задается не четко датой, а типом «Стандартная дата начала» («Начало этого дня», «Начало этой недели» и т.д.) Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло. Стандартный период как то не притулила потому что смущает что нам дата начала и дата конца, а мне то только одна дата нужна, чтобы остатки конкретно на нее получить. Как правильно получить остатки на конец дня? обычные формы, если важно, КА 1.1

>Пробовала в параметрах СКД для периода писать КОНЕЦПЕРИОДА(&Период,»День») — не помогло Как делали? И как поняли, что не помогло?

Для таблицы Остатков я бы получал так:

Попробуйте так: Заведите параметр КонДата, для которого в Выражении напишите &Период.ДатаОкончания А в запросе укажите КОНЕЦПЕРИОДА(&КонДата,»День»)

В запросе: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) В параметрах СКД один параметр Период, тип Дата, у него в Выражение записано КОНЕЦПЕРИОДА(&Период,»День») В Настройках СКД в Параметрах отмечен Период и если у него значение менять на какое-то «Начало этого месяца» к примеру, дата ставится например 01.11.2017 0:00:00 И в отчете выводится Параметры: Период:01.11.2017 0:00:00

Ну так параметр-то вы не меняете. Вы остатки проверьте, на начало они выдаются или на конец.

Тогда Период типа Стандартный период, а КонДата -типа дата? И в настройках СКД в параметрах все равно период?

Вроде меняется как надо..но я путаться уже стала. По идее должно быть же достаточно в параметрах указать КОНЕЦПЕРИОДА(&Период,»День»)? А то что он выводит в Отчете 00:00:00 это не важно?

Какие поля вы выводите в отчет нам неведомо, но в качестве параметра у вас указывается конец дня. Вот только записи со временем 23:59:59 у вас в отчет не попадут, проверьте.

а куда в СКД дописать можно ДобавитьКДате(КонецПериода(&Период, «День»), «Секунда», 1)

В запрос, туда где указывается период остатков Например: РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДобавитьКДате(КонецПериода(&КонДата, «День»), «Секунда», 1), )

Ну или в выражении параметра СКД

спасибо большое, работает.правда записей на 23:59 у меня нет. а с 23:59 это особенность 1С такая? И считается же что это та же дата? это не переходит еще на 00:00 следующего дня или как-то еще?

Читай про даты, границы и моменты времени

Виртуальная таблица Остатки даёт остатки на границу НЕ ВКЛЮЧАЯ. Это такая особенность виртуальной таблицы остатков. Таблица ОстаткиИОбороты выдаёт данные по границу ВКЛЮЧАЯ

вот только прочитала про то что написано в . Буду вникать подробнее, спасибо что подсказали что к чему

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Понравилась статья? Поделить с друзьями:
  • Ошибка в выражении xpath invalid expression
  • Ошибка в выпускном распредвале опель
  • Ошибка в вызванном внутреннем сервисе деловая среда
  • Ошибка в выгрузке в суфд
  • Ошибка в выбранной цели при принятии решения