Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись связанных объектов при проведении док-та
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kserg2012
"Управление производственным предприятием для Украины", редакция 1.2.6.7 (обычные формы)
работает на платформе 8.3.15.1778

Добрый день
Нужен совет в понимании какой подход выбрать для решения задачи - запись связанных с документом объектов.

Имеется самописный документ, при "ручном" проведении которого необходимо вместе с движением док-та внести изменения
в два связанных объекта - это 2 разных справочника.

Проведение осуществляется в ручном режиме Пользователем
(т.е. вызов из формы документа, при групповом проведении данный алгоритм не используется)

Требование: движения док-та и запись этих справочников должны быть синхронизированы,
т.е. если при записи объекта-справочника возникает ошибка (например справочник заблокирован),
то вся операция проведения док-та "отменятеся" и пользователю выдается описание ошибки.

Напрашивается решение - использование блока НачатьТранзакцию-ЗафиксироватьТранзакцию
но мне не понятно как это будет работать в процедуре ОбработкаПроведения

Подскажите пожалуйста, как лучше поступить в данном случае?
Vofka
ОбработкаПроведения вызывается внутри транзакции, т.е. вам ее явно открывать там не надо.
Изменение справочников при проведении документа - идея не самая хорошая. Потенциально может быть не очень просто держать это все в синхронизированном состоянии.
kserg2012
Vofka @ Сегодня, 11:42 необходимо зарегистрироваться для просмотра ссылки ,
согласен, вот почему и хотелось бы услышать мнение бывалых wink.gif

на моем примере - вижу, что "иногда" пользователи вносят ошибочно док-т, и за этим следует его распроведение и удаление
и если это документ так сказать относительно "свежий", то по факту надо и связанные объекты-справочники откатывать

Цитата(Vofka @ 30.11.22, 11:42) необходимо зарегистрироваться для просмотра ссылки
Изменение справочников при проведении документа - идея не самая хорошая


основной проблемой я вижу тот момент, что СправочникОбъект может заблокирован в момент проведения другим пользователем
а что если такой подход при проведении?

    Попытка
        СправочникОбъект().Заблокировать();
    Исключение
           Отказ = Истина;
           Сообщить("Ошибка при записи справочника, возможно он заблокирован");
           Возврат;
    КонецПопытки;

         СправочникОбъект.Разблокировать();
         СправочникОбъект.Записать();
Vofka
Цитата(kserg2012 @ 30.11.22, 12:05) необходимо зарегистрироваться для просмотра ссылки
и если это документ так сказать относительно "свежий", то по факту надо и связанные объекты-справочники откатывать

Это только один из нескольких моментов, которые могут быть. Все конечно можно порешать и сделать так, чтобы оно плюс/минус нормально работало, но я бы попробовал что-то придумать, чтобы не ввязываться с изменением справочника. Хотя я и сам такое делал. Но сейчас я бы такое делал имея очень веские причины на то.

Цитата(kserg2012 @ 30.11.22, 12:05) необходимо зарегистрироваться для просмотра ссылки
основной проблемой я вижу тот момент, что СправочникОбъект может заблокирован в момент проведения другим пользователем

В этом случае по идее документ не проведется и выдаст ошибку. По-моему это нормальный вариант. Ненормально тут только может то, что вы ожидаете, что справочник может быть заблокирован. Он же вроде не блокируется, если просто открываетс форма (или блокируется)? Т.е. в вашем варианте, как я понял, нормально, что справочник будет меняться из документа и ещё откуда-то. Если так, то это хороший индикатор того, что вы что-то не так проектируете.
kserg2012
Цитата(Vofka @ 30.11.22, 13:39) необходимо зарегистрироваться для просмотра ссылки
что вы ожидаете, что справочник может быть заблокирован

да, есть над чем подумать
но этот справочник - ДоговорыКонтрагентов - можно сказать один из ключевых справочников в этой управленческой базе
и вполне допускаю, что одновременно другой пользователь откроет его для просмотра или редактирования
Vofka
А зачем вы его меняете при проведении документа? Если надо что-то "прицепить" к элементу справочника при проведении документа, я бы сделал периодический, подчиненный регистратору РегистрСведений с измерением МойСправочник и писал бы туда что надо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.