|
Как перенести границы последовательности без перепроведения? |
☑ |
0
Тенепопятам
20.04.21
✎
10:14
|
Нужно перенести границы без перепроведения документов. Для этого, насколько я понял, есть метод УстановитьГраницу(). Проблема в том, что я не могу понять, как применить этот метод к конкретной последовательности. Помогите разобраться.
|
|
1
Beduin
20.04.21
✎
10:17
|
В типовых там по кнопке в закрытии можно сделать.
|
|
2
Обработка
20.04.21
✎
10:18
|
(0) Дарю.
Процедура КнопкаВыполнитьНажатие(Кнопка)
Последовательности.ПартионныйУчет.УстановитьГраницу(ДатаПоследовательности);
КонецПроцедуры
|
|
3
mikecool
20.04.21
✎
10:26
|
(2) а чего не на документ? или на убоже, что нам не гоже? ))
|
|
4
Serg_1960
20.04.21
✎
10:45
|
Всё просто. Азбука: границу последовательности, имхо, надо устанавливать на момент времени документа, входящего в последовательность. Кроме того, ещё нужно учесть наличие в последовательности дополнительных измерений (как правило, организация). Примерный пример :)
НужнаяПоследовательность.УстановитьГраницу(Новый МоментВремени(НужныйДокумент.Дата), Новый Структура("Организация",НужныйДокумент.Организация));
|
|
5
Serg_1960
20.04.21
✎
10:51
|
PS: типовая конфигурация - лучший учебник :) Погугли в конфигурации "СдвигГраницыПоследовательности", ".УстановитьГраницу(" - получишь примеры написания алгоритмов.
|
|
6
Обработка
20.04.21
✎
10:54
|
(3) Согласен не спорю.
|
|
7
Обработка
20.04.21
✎
11:06
|
Вот с
Процедура КнопкаВыполнитьНажатие(Кнопка)
МоментВремениДокумента = Новый МоментВремени(ДокументГаницы.Дата, ДокументГаницы.Ссылка);
Последовательности.ПартионныйУчет.УстановитьГраницу(МоментВремениДокумента);
КонецПроцедуры
|
|
8
Serg_1960
20.04.21
✎
12:10
|
Про измерения не забудь :) Я помню какой фурор произвели методисты 1С добавив в последовательности ПроведенВХронологическойПоследовательности :(
|
|
9
Тенепопятам
20.04.21
✎
12:16
|
Спасибо. В общем так и делал. Измерений у меня в УТ нет. Дело в том, что запрос к границам последовательности выдает таблицу, в которой несколько одинаковых записей с одним документом и несколько с другим. Причем граница стоит на одном из этих документов с более ранней датой. Я делал так: УстановитьГраницу(Документ.МоментВремени()), где документ - это документ с более поздней датой из таблицы, но граница при этом не изменялась. Соответственно, мне не понятно - это нормально, что запрос к границам возвращает такой результат? Если да, почему два документа? Это две разные последовательности? Тогда почему только две? Или это какой-то глюк и надо менять границу через скуль?
|
|
10
Serg_1960
20.04.21
✎
12:41
|
Если мне память не изменяет, то в УТ есть штатный функционал восстановления последовательностей.
PS: иногда штатный функционал не помогает - бывают такие глюки в базе, когда граница словно замерзает и перестаёт двигаться. тогда легче всё удалить и вновь заполнить последовательность.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший