Пропадает граница последовательности при загрузке системы

1. LeshaUMC 24.07.20 13:09 Сейчас в теме
Пропадает граница последовательности при загрузке системы. В глобальном модуле есть функция, суть - восстановление последовательности по регистру товары.
Для А=1 По Метаданные.Последовательность() Цикл
		Посл = Метаданные.Последовательность(А).Идентификатор;
		Если Найти(Посл,"Товары")<>0 Тогда //вот она родимая........
			Послед=Последовательность.ПолучитьАтрибут(Посл);
			ДокПос=Послед.ПолучитьДокумент(); //вот и документ получили 
			ПозицияНач = Послед.ПолучитьПозицию(); 
			ДатП = Послед.ПолучитьДату(); 
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Док = СоздатьОбъект("Документ"); б = 0;
 		Док.ВыбратьПоПоследовательности(ПозицияНач, , Посл);
		Пока Док.ПолучитьДокумент() = 1 Цикл 
			б = б + 1;
			Если б > 1 тогда
				// непроведенные документы не принадлежат посл-тям
				Если Док.Проведен() = 0 Тогда
					Продолжить;
				КонецЕсли;
				// запретить регистрацию изменений документа при его проведении
				Док.РегистрацияИзменений(0);
				// собственно проведение документа. так как документы проводятся
				// последовательно то граница посл-ти будет перенесена на данный
				// документ
				Если Док.Провести()=0 Тогда
					Сообщить("ОБНАРУЖЕНА ОШИБКА. Документ не провелся! "+Док);   
					Прервать;
				КонецЕсли;
				Сообщить(Док);
			КонецЕсли;
				//тут считаем сколько доков проведи и при необходимости делаем паузу
		КонецЦикла;
		Если б > 1 тогда	
			Сообщить("Документ ГП "+?(Док.Выбран()=1,""+Док," не определён."));
			Сообщить("Имя последовательности "+Посл);
			Сообщить("Последовательность неприрывна до: "+Послед.Получить());
			Сообщить("Документ розрыва: "+ДокПос);
			Сообщить("Последовательность восстановлена!"); 
		КонецЕсли; 

	    Послед.Установить(Док);
Показать

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

Документ ГП не определён.
Имя последовательности Товары
Последовательность неприрывна до: . . 00:00:00
Позиция ГП: # 0 0
Последовательность восстановлена!

Даже если я устанавливаю ГП вручную, через: Послед.Установить(Док);
то после перезагрузки все равно слетает! Что это может быть???
Найденные решения
6. CheBurator 3119 27.07.20 03:48 Сейчас в теме
(5) ну. включи как бы мозг.
//
Док = СоздатьОбъект("Документ"); б = 0;
Док.ВыбратьПоПоследовательности(ПозицияНач, , Посл);
Пока Док.ПолучитьДокумент() = 1 Цикл 
.....
КонецЦикла;


Послед.Установить(Док); //как бы тут закончена обработка ВСЕХ доков. ты находишься за пределами ВСЕХ доков. о каком доке ЗДЕСЬ ты ведешь речь?
Иваныч; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3119 25.07.20 14:30 Сейчас в теме
Последовательность непрЕрывна до
Документ рАзрыва
.
3. CheBurator 3119 25.07.20 14:32 Сейчас в теме
ну, перепровел ты кучу документов в последовательности - и что?
автоматом только ТА сдвигается если проведение идет в "текущем времени" со сдвигом ТА - тогда и ГП сдвинется автоматом.
а так если без сдвига ТА - провел доки в последовательности - ставь программно ГП на нужный момент времени.
5. LeshaUMC 26.07.20 02:15 Сейчас в теме
(3) Так в конце программно и ставлю: Послед.Установить(Док);
Потом при загрузке идет эта процедура, и начинается она с первого документа, а не с ГП.
6. CheBurator 3119 27.07.20 03:48 Сейчас в теме
(5) ну. включи как бы мозг.
//
Док = СоздатьОбъект("Документ"); б = 0;
Док.ВыбратьПоПоследовательности(ПозицияНач, , Посл);
Пока Док.ПолучитьДокумент() = 1 Цикл 
.....
КонецЦикла;


Послед.Установить(Док); //как бы тут закончена обработка ВСЕХ доков. ты находишься за пределами ВСЕХ доков. о каком доке ЗДЕСЬ ты ведешь речь?
Иваныч; +1 Ответить
4. CheBurator 3119 25.07.20 14:35 Сейчас в теме
ну и для ускорения проведения можно в транзакции проводить по нескольку документов в одной транзакции. но это может привести к затыкам работы других пользюков, тут надо смотреть уже частности, аккуратнее
7. LeshaUMC 28.07.20 01:20 Сейчас в теме
Большое спасибо CheBurator!!! Действительно для установления ГП нужно было выбрать документ!

Решил добавлением таблицы значений:
ТабДок = СоздатьОбъект("ТаблицаЗначений");
	ТабДок.НоваяКолонка("Документ");
...
				Если Док.Провести()=0 Тогда
					Сообщить("ОБНАРУЖЕНА ОШИБКА. Документ не провелся! "+Док);   
					Прервать; 
				иначе 
					ТабДок.НоваяСтрока();
					ТабДок.Документ = Док.ТекущийДокумент();  
				КонецЕсли;
...
	Если ТабДок.КоличествоСтрок()	 > 0 тогда 
		ДокПос = ТабДок.ПолучитьЗначение(ТабДок.КоличествоСтрок(),"Документ");
	        Послед.Установить(ДокПос); 
		ПозицияНач  = Послед.ПолучитьПозицию(); 
	Иначе Сообщить("Последовательность проведения документов актуальная!");	
	КонецЕсли;
Показать

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

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