ОбъектМетаданных: Последовательность.ПеремещениеГраницыПриПроведении

Свойства · MoveBoundaryOnPosting

Тип: ПеремещениеГраницыПриПроведении. Если это свойство установлено в значение Перемещать, то документ, зарегистрированный в этой последовательности, при своем проведении будет пытаться переместить границу этой последовательности. Если это свойство установлено в значение НеПеремещать, то документ не будет перемещать границу этой последовательности при своем проведении.

Полное описание, параметры и ограничения

ОбъектМетаданных: Последовательность.ПеремещениеГраницыПриПроведении (MetadataObject: Sequence.MoveBoundaryOnPosting)

ОбъектМетаданных: Последовательность (MetadataObject: Sequence)

ПеремещениеГраницыПриПроведении (MoveBoundaryOnPosting)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: ПеремещениеГраницыПриПроведении.
Если это свойство установлено в значение Перемещать, то документ, зарегистрированный в этой последовательности, при своем проведении будет пытаться переместить границу этой последовательности.
Если это свойство установлено в значение НеПеремещать, то документ не будет перемещать границу этой последовательности при своем проведении.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Не путать настройку перемещения границы с командой восстановления

У исходной последовательности DontMove, автоматические блокировки и нет измерений. Читаем эти независимые свойства без изменения текущей границы.

Где и как запускать

Полный серверный модуль соответствующей учебной копии КА2 или УТ 10.3. Никаких операций перепроведения или изменения настроек.

Подготовка

  1. Последовательность ПартионныйУчет взята из C:\claude\UT10_3\XML_UT_10_3\Sequences\ПартионныйУчет.xml. Используйте отдельную учебную копию именно этой УТ 10.3 на установленной платформе 8.5.1.1343, не рабочую базу.

  2. Для первых двух уроков о режимах конфигурации используйте отдельную копию КА2 Progress. Для последующих пяти — копию указанной УТ 10.3. Не смешивайте имена и настройки разных конфигураций.

  3. В серверном общем модуле УчебныеЗадачи разместите полный модуль одного урока и вызовите ВыполнитьПример() из своей серверной команды. В обычной конфигурации можно вызвать серверную процедуру из собственной учебной обработки.

  4. Только чтение схемы и собственные значения в памяти: нет проведения, восстановления последовательности, изменения границ, назначения номеров или переключения совместимости.

Процедура ВыполнитьПример() Экспорт
    Последовательность = Метаданные.Последовательности.Найти("ПартионныйУчет");
    Если Последовательность = Неопределено Тогда
        ВызватьИсключение "В учебной конфигурации отсутствует Последовательности.ПартионныйУчет";
    КонецЕсли;
    Варианты = Метаданные.СвойстваОбъектов;
    Сообщить(Последовательность.ПеремещениеГраницыПриПроведении = Варианты.ПеремещениеГраницыПриПроведении.НеПеремещать);
    Если Последовательность.ПеремещениеГраницыПриПроведении = Варианты.ПеремещениеГраницыПриПроведении.Перемещать Тогда
        Сообщить("Зарегистрированный документ при проведении будет пытаться переместить границу");
    Иначе
        Сообщить("По этой настройке документ при проведении не перемещает границу");
    КонецЕсли;
    Сообщить(Последовательность.РежимУправленияБлокировкойДанных = Варианты.РежимУправленияБлокировкойДанныхПоУмолчанию.Автоматический);
    Сообщить(Последовательность.Измерения.Количество() = 0);
    Сообщить("Дополнительных индексов схемы: " + Строка(Последовательность.ДополнительныеИндексы.Количество()));
    Сообщить("Действительная граница последовательности не читалась и не устанавливалась");
КонецПроцедуры

Разбор по шагам

  1. НеПеремещать взято из MoveBoundaryOnPosting=DontMove. Перемещать означало бы попытку документа передвинуть границу при проведении, а не отдельную команду полного восстановления.

  2. РежимУправленияБлокировкойДанных=Автоматический взят из DataLockControlMode=Automatic. Он не является списком текущих блокировок.

  3. В XML нет дочерних измерений, поэтому контролируем 0. Не читаем Измерения[0] у пустой коллекции.

  4. ДополнительныеИндексы с 8.3.26 — коллекция описаний индексов. На установленной платформе 8.5 выводим фактическое количество, не создавая индекс СУБД.

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

Как проверить результат

  1. Три контрольные Истина в исходной учебной копии и фактическое число дополнительных индексов.

  2. Настройки блокировки и текущая граница не изменены.

Ожидаемый результат

Получена карта политики последовательности без опасного смешения с восстановлением учёта.

На что обратить внимание

  1. Флаг НеПеремещать не доказывает, что граница правильная или что учёт требует восстановления.

  2. Метаданные дополнительных индексов не подтверждают состояние физических индексов СУБД.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Получить свой набор из нового документа и не спутать принадлежность с будущей ссылкой

Перед настройкой обработчика проверить собственную метаданную связь документа и последовательности, установить будущий идентификатор и снабдить связанный набор служебной пометкой, сохранив фактического регистратора и строки неизменными. Это подготовка собственного черновика, а не getter неизвестного объекта.

Где и как запускать

Полный серверный общий модуль УчебныеНаборыПоследовательности85 собственной новой конфигурации УчебныеПоследовательности85. Платформа 8.5.1.1343, тонкий/толстый управляемый клиент с серверным вызовом. Только собственные объекты памяти; 1С здесь не запускалась.

Подготовка

  1. Создайте новую отдельную пустую базу 8.5.1.1343, не копию рабочей УТ/КА2. Имя конфигурации УчебныеПоследовательности85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Расширений, подписок и обработчиков записи нет.

  2. В Документы создайте единственный документ УчебнаяРегистрация85: проведение запрещено, реквизитов и табличных частей нет, движения регистров не назначены, модули объекта и менеджера пусты. В уроке создаётся один собственный объект этого документа только в памяти; он не записывается.

  3. В Последовательности создайте единственную УчебнаяОчередь85. В составе Документы выберите только свой УчебнаяРегистрация85. Измерений, зависимых регистров в составе Движения и дополнительных индексов нет. ПеремещениеГраницыПриПроведении=НеПеремещать. Модуль набора пуст. Структура записей поэтому содержит только Период и Регистратор.

  4. Не создавайте в стенде справочников и регистров. Для учебного пользователя разрешите собственные метаданные, общую форму и команды. Обновите только эту новую конфигурацию. Проверка имени и состава схемы выполняется до создания набора; она не доказывает отсутствия записей базы и не делает рабочую базу безопасной.

  5. В Общие → Общие модули создайте УчебныеНаборыПоследовательности85: Сервер=Истина, ВызовСервера=Истина, Глобальный=Ложь, клиентские флаги выключены. Полный основной модуль одного выбранного урока вставьте на верхнем уровне целиком. Все помощники предоставлены ниже в том же модуле.

  6. В Общие → Общие формы создайте управляемую форму УчебныйЗапускПоследовательности85. Добавьте команду ВыполнитьУрок с действием ВыполнитьУрок, ИзменяетСохраняемыеДанные=Ложь и кнопку Выполнить урок. Полный модуль формы:
    &НаКлиенте
    Процедура ВыполнитьУрок(Команда)
    ВыполнитьУрокНаСервере();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ВыполнитьУрокНаСервере()
    УчебныеНаборыПоследовательности85.ВыполнитьПример();
    КонецПроцедуры

  7. В Общие → Общие команды создайте ОткрытьНаборПоследовательности85 без параметра и включите в свой учебный раздел. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйЗапускПоследовательности85");
    КонецПроцедуры
    Откройте свою форму этой командой и выполните её кнопку. Два вспомогательных модуля не вставляйте в основной серверный модуль.

  8. Одна плановая ссылка создаётся ПолучитьСсылку на собственный новый UUID. Непустая ссылка не означает существующий документ; реквизиты ссылок не читаются. Это идентификаторы собственных незаписанных черновых строк, не готовые записи для сохранения в базу.

  9. Здесь нет Прочитать, Записать, проведения, восстановления или изменения границы. Добавить/Загрузить/Удалить/Очистить действуют только на принадлежащий уроку экземпляр набора в памяти. Этот пример нельзя превращать в исправление последовательности добавлением Записать.

  10. Статически проверены исходный код и установленная справка. Компиляция и выполнение в 1С здесь не проверялись; ожидаемые результаты далее нужно подтвердить самостоятельным запуском только в подготовленной новой учебной базе.

  11. Для этого урока не используйте модуль ОбработкаПроверкиЗаполнения из другого примера: модуль набора своей последовательности остаётся пустым. Набор здесь получаем через ПринадлежностьПоследовательностям собственного нового документа, а не от неизвестного параметра. Никаких строк в этот связанный набор не добавляем.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Последовательности.Количество() <> 1 Или Метаданные.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "В своём стенде нужны ровно одна последовательность и один вид документа";
    КонецЕсли;
    МетаОчереди = Метаданные.Последовательности.Найти("УчебнаяОчередь85");
    МетаДокумента = Метаданные.Документы.Найти("УчебнаяРегистрация85");
    Если МетаОчереди = Неопределено Или МетаДокумента = Неопределено Тогда
        ВызватьИсключение "Не подготовлена собственная схема урока";
    КонецЕсли;
    Если МетаОчереди.Измерения.Количество() <> 0 Или МетаОчереди.Движения.Количество() <> 0
        Или МетаОчереди.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "Нужна собственная очередь без измерений и зависимых регистров";
    КонецЕсли;
    Участвует = Ложь;
    Для Каждого МетаУчастника Из МетаОчереди.Документы Цикл
        Участвует = МетаУчастника = МетаДокумента;
    КонецЦикла;
    Если Не Участвует Тогда
        ВызватьИсключение "Единственный участник должен быть своим УчебнаяРегистрация85";
    КонецЕсли;
    Если МетаОчереди.ПеремещениеГраницыПриПроведении <> Метаданные.СвойстваОбъектов.ПеремещениеГраницыПриПроведении.НеПеремещать Тогда
        ВызватьИсключение "Проверьте подготовку политики границы собственной очереди";
    КонецЕсли;
    Документ = Документы.УчебнаяРегистрация85.СоздатьДокумент();
    Если ТипЗнч(Документ) <> Тип("ДокументОбъект.УчебнаяРегистрация85") Или Не Документ.ЭтоНовый() Тогда
        ВызватьИсключение "Нужен собственный новый незаписанный документ";
    КонецЕсли;
    ПлановаяСсылка = Документы.УчебнаяРегистрация85.ПолучитьСсылку(Новый УникальныйИдентификатор);
    Если ТипЗнч(ПлановаяСсылка) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Или ПлановаяСсылка.Пустая() Тогда
        ВызватьИсключение "Нужна собственная непустая плановая ссылка";
    КонецЕсли;
    Документ.УстановитьСсылкуНового(ПлановаяСсылка);
    Если Документ.ПолучитьСсылкуНового() <> ПлановаяСсылка Или Не Документ.ЭтоНовый() Тогда
        ВызватьИсключение "Плановая ссылка не установлена или документ перестал быть новым";
    КонецЕсли;
    Принадлежность = Документ.ПринадлежностьПоследовательностям;
    Если ТипЗнч(Принадлежность) <> Тип("ФиксированнаяКоллекция") Тогда
        ВызватьИсключение "Ожидалась коллекция наборов собственного документа";
    КонецЕсли;
    Набор = Принадлежность.УчебнаяОчередь85;
    Если ТипЗнч(Набор) <> Тип("ПоследовательностьНаборЗаписей.УчебнаяОчередь85")
        Или Набор.Метаданные() <> МетаОчереди Тогда
        ВызватьИсключение "Из своего документа получен набор другой последовательности";
    КонецЕсли;
    СвязанныйРегистратор = Набор.Регистратор;
    Если ТипЗнч(СвязанныйРегистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Неверный тип фактического связанного регистратора";
    КонецЕсли;
    ИсходноеКоличество = Набор.Количество();
    Набор.ДополнительныеСвойства.Вставить("УчебноеНазначение85", "Контроль принадлежности нового документа");
    Если Не Набор.ДополнительныеСвойства.Свойство("УчебноеНазначение85", Назначение)
        Или Назначение <> "Контроль принадлежности нового документа" Тогда
        ВызватьИсключение "Не сохранена собственная служебная пометка экземпляра";
    КонецЕсли;
    Если Набор.Регистратор <> СвязанныйРегистратор Или Набор.Количество() <> ИсходноеКоличество
        Или Набор.Метаданные() <> МетаОчереди Или Документ.ПолучитьСсылкуНового() <> ПлановаяСсылка
        Или Не Документ.ЭтоНовый() Тогда
        ВызватьИсключение "Служебная пометка изменила документ, связь или строки набора";
    КонецЕсли;
    Сообщить(Назначение);
    Сообщить("Плановая ссылка: " + Строка(ПлановаяСсылка.УникальныйИдентификатор()));
    Сообщить("Фактический регистратор набора: " + Строка(СвязанныйРегистратор.УникальныйИдентификатор()));
    Сообщить("Исходное и конечное количество строк: " + Строка(ИсходноеКоличество));
    Сообщить("Документ остаётся новым; плановая ссылка не объявляется записанным документом");
КонецПроцедуры

Разбор по шагам

  1. Сначала проверьте единственный свой документ и единственную последовательность без измерений и движений. Только после этого создаётся ДокументОбъект.УчебнаяРегистрация85.

  2. СоздатьДокумент создаёт свой объект в памяти. ЭтоНовый должен дать Истина. Вызова Записать нет; этот объект не становится строкой базы.

  3. ПолучитьСсылку формирует свою непустую ссылку нового UUID. УстановитьСсылкуНового задаёт план для будущей записи, а ПолучитьСсылкуНового проверяет точное равенство этому плану. Проверка уникальности при записи здесь не выполняется.

  4. ПринадлежностьПоследовательностям возвращает ФиксированнаяКоллекция. Имя её свойства УчебнаяОчередь85 задаётся своей настройкой Документы последовательности. Проверьте конкретный тип набора и его Метаданные, а не сходство имени или представления.

  5. Прочитайте фактический Регистратор набора и реальное число строк до изменений. Native не обещает, что назначенный план сразу стал регистратором связанного набора; урок не требует их равенства и выводит оба UUID отдельно. Исходное количество также наблюдается, а не выдумывается.

  6. В ДополнительныеСвойства поместите конкретное назначение экземпляра и прочитайте его через Свойство. Это содержимое возвращённой Структура, а не присваивание нового readonly-свойства.

  7. Повторно проверьте регистратора, количество строк, метаданную связь, будущую ссылку и ЭтоНовый. Все значения должны остаться исходными; поменялась только собственная служебная пометка.

  8. Сообщения выводят точную пометку, реальный UUID будущей ссылки, реальный UUID регистратора и фактическое число строк. Не заменяйте наблюдаемые значения константами и не записывайте документ ради совпадения идентификаторов.

Как проверить результат

  1. После штатного запуска назначение равно «Контроль принадлежности нового документа», будущая ссылка точно равна ПлановаяСсылка, ЭтоНовый=Истина. Регистратор имеет тип ДокументСсылка.УчебнаяРегистрация85 и совпадает со своим исходным значением; число строк совпадает с исходным наблюдением.

  2. Для отрицательной проверки в новой учебной базе уберите свой документ из состава последовательности. Проверка Участвует должна остановить урок до СоздатьДокумент; это тест подготовки, не повод ослабить проверку.

  3. Сопоставьте два напечатанных UUID. Их совпадение или различие наблюдается фактически и не подменяется выводом о существовании документа. Сравнение будущей ссылки проверяется только через ПолучитьСсылкуНового.

Ожидаемый результат

Один собственный незаписанный документ с проверенной плановой ссылкой и его собственный набор УчебнаяОчередь85 со служебной пометкой. Исходные регистратор и количество строк сохранены; конкретный UUID и начальное число строк выводятся из реального экземпляра, их default-поведение не приписывается native.

На что обратить внимание

  1. Readonly-свойства Отбор, Регистратор и ОбменДанными нельзя заменить присваиванием. У возвращённого Отбор меняются его элементы, у ПараметрыОбменаДанными — разрешённый флаг Загрузка.

  2. Отбор набора последовательности допустим только на равенство. Это условие будущего чтения или записи, а не команда удаления неподходящих строк уже заполненного экземпляра памяти.

  3. Плановая непустая ссылка из ПолучитьСсылку не подтверждает существование документа. УстановитьСсылкуНового задаёт ссылку для будущей записи; ПолучитьСсылкуНового возвращает именно этот план, а не доказательство записи.

  4. Регистратор набора — связь экземпляра с документом; Регистратор отдельной строки — поле этой строки. Не переносите автоматически значение одного свойства в другое и не меняйте readonly-регистратор набора.

  5. Загрузка=Истина сокращает проверки при записи/удалении данных. Это не разрешение пропускать бизнес-проверки в рабочей базе и не проверка корректности импортируемой информации.

  6. В уроках нет записи, чтения базы, обмена сообщениями, проведения, восстановления и переноса границ. Локальные строки и временный флаг нельзя объявлять результатом обмена или исправлением последовательности.

  7. Флаг восстанавливается по реально прочитанному исходному значению, а не безусловно в Ложь. Ветвь исключения не превращается в успешный результат: после восстановления ошибка передаётся вызывающему коду.

  8. Статические проверки не исполняют платформу. Код и ожидаемые результаты требуется отдельно подтвердить в собственной новой базе 8.5.1.1343; 1С здесь не запускалась.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.