Срез последних по записям РС

1. Pertubator 27.07.23 08:19 Сейчас в теме
Возникли сложности при получении среза последних по записям периодического регистра сведений (далее РС), если у РС имеется регистратор. В этом случае возможно существование записи в одну секунду по одним и тем же измерениям, но с разными регистраторами.
Таким образом в результат среза попадет 2 записи.

Изучив запрос на SQL пришел к выводу что там используется момент времени, но в 1С группировка по моменту времени запрещена. Как вы решаете данную проблему?
Текст SQL запроса стандартного 1С во вложении в картинке
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. soft_wind 27.07.23 14:15 Сейчас в теме
(1) значит у вас база неправильно работает

я создал копию документа Установка цены, Задал дату и время оригинала и при попытке провести получил ошибку

{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}:
Ошибка при вызове метода контекста (Записать):
Запись с такими ключевыми полями существует! :
...
Pertubator; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Pertubator 27.07.23 08:26 Сейчас в теме
Вроде как функция запроса "АВТОНОМЕРЗАПИСИ" решает данную проблему, но я так и не понял принцип работы этой функции, и по какому принципу формируются номера, что не гарантирует стабильность результата.

ВЫБРАТЬ
	ЛМБ_СведенияЗалоговогоБилета.Период КАК Период,
	ЛМБ_СведенияЗалоговогоБилета.ЗалоговыйБилет КАК ЗалоговыйБилет,
	АВТОНОМЕРЗАПИСИ() КАК НомерПП,
	ЛМБ_СведенияЗалоговогоБилета.ВидОперации,
	ЛМБ_СведенияЗалоговогоБилета.ВидОперацииНачальный
ПОМЕСТИТЬ втСрез
ИЗ
	РегистрСведений.ЛМБ_СведенияЗалоговогоБилета КАК ЛМБ_СведенияЗалоговогоБилета
ГДЕ
	ЛМБ_СведенияЗалоговогоБилета.ЗалоговыйБилет = &ЗалоговыйБилет

ИНДЕКСИРОВАТЬ ПО
	Период,
	ЗалоговыйБилет,
	НомерПП
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВложенныйЗапрос.ЗалоговыйБилет,
	втСрез.ВидОперации,
	втСрез.ВидОперацииНачальный
ИЗ
	(ВЫБРАТЬ
		МАКСИМУМ(втСрез.Период) КАК Период,
		втСрез.ЗалоговыйБилет КАК ЗалоговыйБилет,
		МАКСИМУМ(втСрез.НомерПП) КАК НомерПП
	ИЗ
		втСрез КАК втСрез
	
	СГРУППИРОВАТЬ ПО
		втСрез.ЗалоговыйБилет) КАК ВложенныйЗапрос
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втСрез КАК втСрез
		ПО ВложенныйЗапрос.ЗалоговыйБилет = втСрез.ЗалоговыйБилет
			И ВложенныйЗапрос.Период = втСрез.Период
			И ВложенныйЗапрос.НомерПП = втСрез.НомерПП
Показать
3. RustamZz 27.07.23 13:13 Сейчас в теме
(2) МоментВремени это Период+Регистратор. Получайте Максимум(Регистратор) для нужного или максимального периода в зависимости от задачи.
karamazoff; +1 Ответить
4. coollerinc 196 27.07.23 13:34 Сейчас в теме
Что то у вас не так, не может срез последних выдавать две записи по одинаковым измерениям, даже если подчинен регистратору и переодичность регистратор.

Если вам не нужна периодичность в пределах регистратора, поставьте периодичность в пределах секунды, если разрешено менять регистр.
5. Дмитрий74Чел 239 27.07.23 14:13 Сейчас в теме
(4) На периодичности Регистратор таких проблем не встречал. Похоже у автора как раз и стоит периодичность не Регистратор, а секунда.
Pertubator; +1 Ответить
7. coollerinc 196 27.07.23 14:19 Сейчас в теме
(5)Таких проблем, как описал автор вообще быть не должно, вне зависимости от настроек регистра
Pertubator; +1 Ответить
8. Pertubator 27.07.23 15:37 Сейчас в теме
(7)
(7)
Полностью согласен)))
Если есть возможность киньте в меня ссылкой или книжкой где описывается настройка оптимизатора запросов SQL. С моей базой много что не так.
Сразу иногда сложно сообразить.
Вставил скрин чисто поржать
Прикрепленные файлы:
10. coollerinc 196 27.07.23 16:57 Сейчас в теме
(8)Вроде все норм на скрине? Про оптимизатор запроса не слышал, это вообще что?
11. Pertubator 27.07.23 19:49 Сейчас в теме
(10)
Обведено красным. Я могу указать в качестве параметра виртуальной таблицы среза не только измерения, но и любой другой реквизит объекта чего быть не должно
14. coollerinc 196 28.07.23 10:26 Сейчас в теме
(11) Это так и должно быть. Мне кажется вы путаете работу виртуальных таблиц регистра накопления и регистра сведений. Подозреваю вы в запросе выбрали не все измерения, поэтому у вас и "дублируются" записи. На самом деле есть отличие по одному из измерений. А база у вас в норме.
6. soft_wind 27.07.23 14:15 Сейчас в теме
(1) значит у вас база неправильно работает

я создал копию документа Установка цены, Задал дату и время оригинала и при попытке провести получил ошибку

{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}:
Ошибка при вызове метода контекста (Записать):
Запись с такими ключевыми полями существует! :
...
Pertubator; +1 Ответить
9. Pertubator 27.07.23 15:51 Сейчас в теме
(6)
Если есть возможность киньте в меня ссылкой или книжкой где описывается настройка оптимизатора запросов SQL
15. Sashares 35 28.07.23 10:39 Сейчас в теме
(6)Зависит от периодичности регистра. Если по позиции регистратора, то провести можно будет.
12. Said-We 27.07.23 23:17 Сейчас в теме
(11) Не должно быть, но это есть. Если в условиях указать фильтр на не измерения, то логически получается не срез. Да это так.
Зачем это сделали не понятно, но так было всегда.
13. Oldsad 28.07.23 03:38 Сейчас в теме
Так и не понял в чем проблема у автора топика

Он пишет что у него проблемы,
но вместо того чтобы показать текст запроса/структуру регистра и т.п. и спросить в чем проблема,

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

Если, к примеру, у меня возникнет похожая проблема, то я обращусь к коллеге, в 99.99% случае он укажет на мою тупость мы вместе поржем над этим и проблема решена.
В оставшемся 0,01% я не полезу анализировать запросы в скуле, и не буду пытаться написать замену виртуальной таблице "СрезПоследних", а просто исправлю проблемный регистр тем или иным образом, в зависимости от того какая проблема.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот