Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Период в Регистре накопления

Период в Регистре накопления
Я
   Mashinist
 
07.11.19 - 13:17
Как известно, в 8ке можно указать дату проведения отличную от даты документа. Достаточно установить Период нужной датой
У значит есть документ, он как бы делает сторно движения другого документа той же датой, что и первое движение
Но проблема в том, что первое движение датой хх.хх.2020 23:59:59
Ну и сторно тоже делается хх.хх.2020 23:59:59
но если сортировать регистр по периоду, то сторно получается как бы раньше основного движения
как указать регистру период за периодом нужного мне документа?

период выбирается просто запросом

ВЫБРАТЬ
МойРегистр.Период КАК ПериодДляСторно
ИЗ РегистрНакопления.Мойрегистр КАК МойРегистр
ГДЕ...
 
 
   mistеr
 
1 - 07.11.19 - 13:21
(0) > сторно получается как бы раньше основного движения

А это важно?
   fisher
 
2 - 07.11.19 - 13:23
С какой радости сторно делается тем же периодом, что сторнируемое? С точки зрения анализа данных это же то же самое, что удалить исходные движения.
   catena
 
3 - 07.11.19 - 13:25
Глобальный контекст (Global context)
КонецМинуты (EndOfMinute)
Синтаксис:

КонецМинуты(<Дата>)
Параметры:

<Дата> (обязательный)

Тип: Дата.
Исходная дата.
Возвращаемое значение:

Тип: Дата.
Дата и время конца минуты.
Описание:

Определяет дату и время конца минуты для указанной даты.

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

Сообщить(КонецМинуты(ТекущаяДата()));
   catena
 
4 - 07.11.19 - 13:25
(1)Если проводки документа анализируют обороты регистра на момент документа, то может быть важно.
   fisher
 
5 - 07.11.19 - 13:26
Тоже не понимаю, почему важен порядок создания ссылок. Но если он нарушен - значит одна из ссылок генерилась нестандартно.
   fisher
 
6 - 07.11.19 - 13:30
(4) Тогда приплыли. Раз уж в пределах секунды чехарда вышла, то единственный вариант разносить по времени. Т.е. менять время первого документа
   Mashinist
 
7 - 07.11.19 - 13:35
(1) не очень важно... в принципе все работает и в результате все хорошо
(2) да. именно это и нужно. удалить исходное движение

(6) это конечно можно сделать с практической точно зрения. но теоретически же документов может быть много... и в конце концов прибавляя по 1 сек мы упремся в конец дня по любому
или получается, что система не может обработать больше чем 86 400 документов в один день в последовательности?
   mistеr
 
8 - 07.11.19 - 13:41
(5) У ТС дата в будущем. Там всякое может быть. :)
   ИУБиПовиц
 
9 - 07.11.19 - 13:49
попробуйте в запросе добавить в сгупприровать по "Документ", + Автоупорядочивание.
Если сторно создано позже первого дока по идее (но зависит от СУБД) порядок будет по ссылке.
   Mashinist
 
10 - 07.11.19 - 13:49
(8)именно дата в будущем
ну типа такой процесс - плановая дата устанавливается документом что бы посчитать сколько чего-то там будет в будущем
а потом ее корректируют 
ну в общем на практике все хорошо. но в теории не очень :-)
   unregistered
 
11 - 07.11.19 - 13:51
(5) Возможно, сторно делается документом другого вида. Пример в типовых конфигурациях - Реализация ТУ и Корректировка реализации ТУ (хотя в типовых сторно классическое - т.е датой, отличной от сторнируемого набора). Тогда внутри одной секунды ссылки будут упорядочены таким образом, что ссылки на все документы одного вида будут раньше всех ссылок на документы другого вида.
   unregistered
 
12 - 07.11.19 - 14:09
Последовательность документов внутри одной секунды в 1С не реализована нормально.
Упорядочить можно только документы одного вида. Т.к. ссылка (по сути уникальный индентификатор) присваивается внутри одной базы последовательно. Но даже эта логика ломается, если есть обмены с другими базами 1С, где создаются аналогичные документы.
Документы разного вида будут упорядочены сначала внутри документов одного вида. Порядок непредсказуем и никем не гарантируется.

Способ обхода по сути один - писать своё упорядочивание. Это может быть реквизит регистра типа число длиной 15 знаков (без дробной части), куда писать значение, которое выдаёт функция платформы ТекущаяУниверсальнаяДатаВМиллисекундах(). Получает текущую универсальную дату в миллисекундах (в UTC, начиная с 01.01.0001 00:00:00). Это даёт возможность потом получить записи в точном их хронологическом порядке. Но именно в порядке создания(!!!) этих записей. То есть сортировка будет по двум полям - Период, УниверсальнаяДатаСоздания. Пихать её в измерение нельзя. Использовать возможно только при работе с основной таблицей регистра, т.к. в виртуальных таблицах реквизитов нет.
Если не хочется заморачиваться с регистром накопления, можно написать какой-то свой аналог последовательностей. Например, на отдельном регистре сведений.
   Mashinist
 
13 - 07.11.19 - 15:16
(11) (12) так и есть. документ другого вида
всем спасибо.
   ИУБиПовиц
 
14 - 07.11.19 - 16:53
Еще, если оба этих документа создаются интерактивно,  А не обменами (или еще какими вариантами с установкой УИД) можно выдернуть милисекунды создания документа из УИДа
т.е. формируем запрос с ссылками - выгружаем в тз, добавляем колонки и заполняем их, сортируем по количеству милисекунд от какой то даты из лохматых годов профит..
   ИУБиПовиц
 
15 - 07.11.19 - 16:54
Только эта штука в любой момент может сломаться, в новой версии платформы, т.к. сами разрабы вроде говорили, что нельзя из УИД дату выдернуть корректно.
   Cyberhawk
 
16 - 07.11.19 - 17:12
(6) Конечно же не единственный
   Eiffil123
 
17 - 07.11.19 - 19:41
(14) надежность такого решения крайне низкая. В отчетах можно заморочиться и упорядочить документы по типу в пределах секунды (например, проговорить с пользователями, что регламентные документы должны быть всегда внизу списка, а первичка - вверху).

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.