новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Восстановление последовательности в УТ 10

    • #1
    • 12.10.2015 13:27
    0
    Нужна обработка восстановления последовательности. Остановка по ошибке проведения документа. Граница устанавливается на дату документа или на момент документа. Цена договорная.  Подробнее>>
    • #2
    • 15.10.2015 16:08
    0
    Тема пока актуальна.
    Добавлю еще немного требований ))) и денег 1500 руб
    При не монопольном восстановлении.
    Если в базе пользователь провел документ после момента последовательности, обработка должна среагировать, или прекратить восстанавливать, или начать восстанавливать с новой измененного момента, ну что не было бесконечного цикла нужно идеи(ограничить до какой момента восстанавливать).
    • #3
    • 15.10.2015 16:09
    0
    Вот такой код я пока накодил, хочется более красивый и без изменения конфигурации.

    Процедура КнопкаВыполнитьНажатие(Кнопка)

    ОбработкаПрерыванияПользователя();
    Попытка
    УстановитьМонопольныйРежим(Истина);

    Константы.ОшибкаПоследовательности.Установить(Ложь);
    ТекГраница=Последовательности.ПартионныйУчет.ПолучитьГраницу();
    ТекМомент = Строка(Последовательности.ПартионныйУчет.ПолучитьГраницу());

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПартионныйУчетГраницы.Регистратор,
    | ПартионныйУчетГраницы.МоментВремени КАК МоментВремени
    |ИЗ
    | Последовательность.ПартионныйУчет КАК ПартионныйУчетГраницы
    |ГДЕ
    | ПартионныйУчетГраницы.МоментВремени >= &ТекГраница
    |
    |СГРУППИРОВАТЬ ПО
    | ПартионныйУчетГраницы.МоментВремени,
    | ПартионныйУчетГраницы.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    | МоментВремени";
    Запрос.УстановитьПараметр("ТекГраница", ТекГраница);
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбработкаПрерыванияПользователя();
    Объект=ВыборкаДетальныеЗаписи.Регистратор.ПолучитьОбъект();
    Если не Объект.Ссылка.Проведен Тогда
    Сообщить(Объект);
    Продолжить;
    КонецЕсли;
    Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

    Если Константы.ОшибкаПоследовательности.Получить() Тогда
    УстановитьМонопольныйРежим(Ложь);
    Прервать;
    КонецЕсли;
    Последовательности.ПартионныйУчет.УстановитьГраницу(Объект.Ссылка.МоментВремени());
    ВывТекГраница=Строка(Последовательности.ПартионныйУчет.ПолучитьГраницу());
    КонецЦикла;

    Исключение
    Сообщить("Не удалось установить монопольный режим");
    КонецПопытки;
    УстановитьМонопольныйРежим(Ложь);
    КонецПроцедуры
    • #4
    • 15.10.2015 16:25
    0
    хороший получился код )))
    • #5
    • 15.10.2015 16:27
    0
    Попытка 2


    Процедура КнопкаВыполнитьНажатие(Кнопка)

    ОбработкаПрерыванияПользователя();
    Попытка
    УстановитьМонопольныйРежим(Истина);

    Константы.ОшибкаПоследовательности.Установить(Ложь);
    ТекГраница=Последовательности.ПартионныйУчет.ПолучитьГраницу();
    ТекМомент = Строка(Последовательности.ПартионныйУчет.ПолучитьГраницу());

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПартионныйУчетГраницы.Регистратор,
    | ПартионныйУчетГраницы.МоментВремени КАК МоментВремени
    |ИЗ
    | Последовательность.ПартионныйУчет КАК ПартионныйУчетГраницы
    |ГДЕ
    | ПартионныйУчетГраницы.МоментВремени >= &ТекГраница
    |
    |СГРУППИРОВАТЬ ПО
    | ПартионныйУчетГраницы.МоментВремени,
    | ПартионныйУчетГраницы.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    | МоментВремени";
    Запрос.УстановитьПараметр("ТекГраница", ТекГраница);
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбработкаПрерыванияПользователя();
    Объект=ВыборкаДетальныеЗаписи.Регистратор.ПолучитьОбъект();
    Если не Объект.Ссылка.Проведен Тогда
    Сообщить(Объект);
    Продолжить;
    КонецЕсли;
    Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

    Если Константы.ОшибкаПоследовательности.Получить() Тогда
    УстановитьМонопольныйРежим(Ложь);
    Прервать;
    КонецЕсли;
    Последовательности.ПартионныйУчет.УстановитьГраницу(Объект.Ссылка.МоментВремени());
    ВывТекГраница=Строка(Последовательности.ПартионныйУчет.ПолучитьГраницу());
    КонецЦикла;

    Исключение
    Сообщить("Не удалось установить монопольный режим");
    КонецПопытки;
    УстановитьМонопольныйРежим(Ложь);
    КонецПроцедуры
    • #6
    • 15.10.2015 16:28
    0
    не получилось
    Можно удалить свое кривое сообщение?
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться