1с не работает призаписиперепроводить

Обновлено: 04.07.2024

Ну там вообще-то два параметра Записать(<Режим записи>, <Режим проведения>) <Режим проведения> (необязательный) Тип: РежимПроведенияДокумента. Позволяет выбрать один из возможных режимов проведения. Значение по умолчанию: Неоперативный Т.е. как я понимаю если его не указать, то просто будет проведение неоперативное и все

Смотрел Режим записи> (необязательный) Тип: РежимЗаписиДокумента. Позволяет выбрать один из возможных режимов записи. Значение по умолчанию: Запись Ну т.е. все как в 7-ке остается. Нужно проверить

Ну в общем в любом случае документ проводится. Плохо. Теряется время за зря.

посмотри обработку "Групповая обработка справочников и документов", она изменяет реквизиты документов без проведения!

Нет, не проводится. Проводится только при указании режима записи документа "Проведение").

Может и тупой, но пока не понимаю Эффект тот же Вообще Записать(<Режим записи>, <Режим проведения>) Имеет два параметра и у первого значение по умолчанию: Запись , а у второго Значение по умолчанию: Неоперативный Поэтому Объект.Записать; эквивалентно Объект.Записать(РежимЗаписиДокумента.Запись,РежимПроведенияДокумента.Неоперативный); Не получается у меня программно изменить реквизиты документа и не изменить регистры. Если знаешь как расскажи

А ты с 7кой голимой не сранивай . Ты наверно записываешь проведенный документ . то есть проводки то остались, а реквизиты ты поменял

Тема топика: Записать проведенный документ без перепроведения Я записываю проведенный документ. Мне нужно изменить реквизиты проведенного документа. Код я уже приводил. Это просто тест. Проверял, что регистры двигаются.

милиард раз менял реквизиты в проведенном документе и записывал без перепроведения.

Мда. Бывает порой вот кто-нить типа автора задаст простой вопрос, ему дадут простой ответ, а он нет, грит, не работает. И все, немая пауза, типа кто durak-то? :)) Автору: просто сделай то, что написано в этой ветке. Работает. СТО процентов.

Не проще было в отладчике встать в процедуру проведения и посмотреть, попадает ли туда?

Вот только что и проверил - попадает в обработку проведения

И . нашел откуда попадает ? ПриЗаписи, ПередЗаписью проверь .. .

А если написать Записать(РежимЗаписиДокумента.Запись)? Может автоматом делается проведение, если Модифицированность = ИСТИНА?

просто Записать достаточно, зачем все пишут режим записи?

и вообще, надо было голосовалку устраивать. я за Записать

Даешь голосовалку на тему: Как работает Записать и нафига они сделали РежимЗаписиДокумента.Запись и РежимЗаписиДокумента.Проведение :))

Как раз сегодня после изменения конфы понадобилось в старых документах прописать реквизит. Универсальным подбором и обработкой объектов отобрал документы, написал произвольный алгоритм изменения реквизитов, после изменения написал Объект.Записать(РежимЗаписиДокумента.Запись), поставил точку останова в процедуре проведения - не попадаю. Документы записываются шустро (чисто визуально - без проведения).

учись пользоваться отладчиком. Поставь точку останова в модуле проведения. Если попадешь на эту точку, то посмотри стек вызовов - поймешь откуда проведение запускается. в некоторых конфах встречал в процедуре ПриЗаписи повторный вызов Записать, но с режимом проведения, сделано для исключения расхождения данных документа и регистров, может это твой случай.

я не знаю, может рарусу и лень делать форму документа, но это совсем маловерятно.

да. увидел. спасибо. Стоит ПриЗаписиПререпроводить Но я так думаю, что это касается конкретной формы. Я же не через форму работаю, а через объект Да. случай действительно тяжелый У меня юзеры не могут по правам неоперативно проводить документы, но с другой стороны нужно обработкой дописать в общем не существенные реквизиты (комментарий например), а получается, что нельзя без проведения показывает, что в обработку проведения я вываливаюсь прямо из формы обработки В общем не получается у меня записать ПРОВЕДЕННЫЙ документ без перепроведения

Еще один выход (если писатели этой конфы не полные чудаки):

Метод я раскрыл в Там показан стек вызовов при работе обработки с ИТС Поиск и замена значений Ну и моя обработка так же попадает в проведение хотя я пишу Объект.Записать; Не понял идею с Документ.ОбменДанными.Загрузка = Истина; Можно тему раскрыть?

Круто Так действительно в модуль проведения не попадает!

Осталось понять - при такой записи если будет база распределенная изменения уйдут по назначению в нужные узлы?

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

Это преамбула :) Автор верно заметил - снеговик отличается от клюшек. Но ещё не осознал всю глубину отличий. Незная как работает платформа - сложно "отделить" реакцию платформы от поведения конфы. Теперь по теме: Если автору не удается записать документ без перепроведения не иначе, как только используя "ОбменДанными.Загрузка = Истина" - то можно смело предположить, что "проблема" кроется в используемой конфигурации. Пояснение: Грубо говоря, "ОбменДанными.Загрузка = Истина;" предназначено, прежде всего, для конфигурации. Типовая конфа, как правило, анализирует это значение перед контролем интерактивных действий пользователя и не выполняет их во время обмена данными - считается, что данные уже были проверены в том узле, откуда они поступают.

Про ОбменДанными.Загрузка = Истина; и смысл этого я уже почитал немного И в конфе (я писал это Альфа-Авто) все учтено ПриЗаписи стоит Если ОбменДанными.Загрузка = Истина Тогда Возврат что конечно правильно Но еще при такой записи и в модуль проведения вообще не попадает Т.е. для меня на текущий момент это реальное решение поблемы Всем спасибо за обсуждение! Особенно ptiz!

(14) еще раз пишу для непонятливых:
Во внешней обработке:
В модуле объекта ДОКУМЕНТА:

(11) при обмене устанавливается автоматом, но никто не мешает вставить установку флага в программу перед записью.

если писали не криворучки, то в подписке первым делом должно стоять отключение по этому флагу всех действий.

(11) и что? По сути это такое же доп. Свойство, но в отличие от от них, на него уже есть реакция в объектах типовых
(16) Получается без вмешательства в конфу не получится. эх а так хотелось
Сдается мне, что там даже при обмене данными формы вылетают
Получится, если типовая и выставить обменданными.загрузка в истину в модуле обработки перед вызовом метода записать() объекта
(21) а что там за форма. ты процедуру покажи. Может форму эту мона обойти
(24) я довольно часто применяю этот способ для обхода типового кода.
+ (29) все этот метод используют постоянно потому что он всем известен и работает

(27) фига се, проверил сейчас, действительно истина.

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

(33) Фига себе, пятница, почти полночь и ты полез в конфигуратор 1с проверить какую то фигню!
(33) мы не знаем. Объективных предпосылок для того чтобы так думать нет. Более того, например типовая обработка выгрузказагрузкаданныххмл82.епф, которая используется всеми для адресного восстановления объектов и записей регистров из бэкапов, дает выставить это свойство специально, чтобы не выполнялись проверки при записи при загрузке восстанавливаемого объекта
перед
Объект.Записать(РежимЗаписиДокумента.Проведение)
(36) а может вы лукавите и раньше (в другой платформе или релизе) ОбменДанными.Загрузка был доступен только для чтения?
(40) Нет. Более того, мне кажется что это свойство выставлялось всегда исключительно только программнр
(41) не, в при обмене через планы обмена, система его устанавливает в ИСТИНА

(38) в обработчике перед записью, перед открытием вашей формы, должен быть код анализа, как в (16)

(41) нет, в случае обмена с использованием плана обмена оно выставляется движком

(39) тема себя исчерпала, у вас есть все предпосылки чтобы решить проблему.
(47) а если распределенная база, то свойство ОбменДанными тоже доступно не только для чтения?
(47) что может значить эта ошибка:
Действие не может выполняться в режиме загрузки данных
?
(49) у тебя в БД есть план обмена с галкой "распределенная информационная база"?
(51) обработка, случайно, не запускает обмен по этому плану обмена?
(50) те планы обменами, которые для этого документа отмечены без установленного значения Распределенная ИБ.
(52) Короче тут, такая история я не программист 1с, я в поддержке сижу знаю чуть больше других юзеров. и вот наши программисты внесли в конфу некторые изменения, после которых документ перестал создаваться через эту обработку из-за того, что они вызывают модально некоторую форму. я просто хочу 1с-ку изучить вот и решил попытаться обработку изменить, не трогая конфу.
(54) покажи код, которым ты изменяешь документ в обработке

(49) > Действие не может выполняться в режиме загрузки данных

Говорит о том, что что-то написано такое, что не поддерживается Когда свойство ОбменДанными.Загрузка установлено в значение Истина

+(57) Скорее всего это в конфигурации написано.

А проги, у которых ты учишься, натуральные копрокодеры. Ни один уважающий себя прог не станет модально открывать форму из процедуры ПриЗаписи() модуля объекта.

Таких увольнять сразу надо, если они с серьезными вещами работают.

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

Если есть, то оно до открытия формы расположено?

(59) если при выполнении этого кода появляется модальное окно - то гнать этих недоделанных прогов студентов до самого заднего задищенво.

короче пишешь докладную и ссылку на эту ветку.

(59) зачем ты приводишь код в котором нет ошибки? Тебя ведь просили привести код при или перед записи, потому что именно там написано то .авно, которое портит тебе жизнь
(64) прошу прощения, но я не могу этот код скопипастить сюда.
(64) думаю, что у него следующее:
при установленном свойстве ОбменДанными=Истина не может открыться модальное окно той копрокодерской формы и вываливается ошибка "Действие не может выполняться в режиме загрузки данных "
(48) что?
А ты можешь привести пример хоть одного свойства которое вдруг перестает быть доступным для чтения в зависимости от такой эфемерной сущности как план обмена, его наличия и наличия хотя бы одного узла в таких планах обмена, и хотя бы приблизительную причину почему такое могли сделать разработчики?

(68) мне все покоя мысль не дает, откуда я взял, что это свойство только для чтения :)

(66) ты так говоришь, как будто это мы вынудили тебя создать топик на форуме в котором ты у нас спрашиваешь как решить твою проблему.

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

(66) ты на вопрос ответь, что я тебе задавал.
В той процедуре, где форма открывается, есть строка

Иногда возникает необходимость внести незначительные изменения в уже проведенный документ. "Незначительные" в данном контексте означает такие изменения, которые не влияют на движения регистров (и вообще на любые процедуры, выполняемые в процессе проведения документа). Самым простым примером может служить изменение поля "Комментарий".

В статье описан технический прием, позволяющий обойти обозначенную проблему.

Для решения, очевидно, нужно использовать методы и Пробуем сделать по-простому: на элемент формы "Комментарий" вешаем функцию в которой написано следующее:

ПриЗаписиПерепроводить(0);
Записать();
ПриЗаписиПерепроводить(1);

Если НужноПерепроводить=0 Тогда
ПриЗаписиПерепроводить(0);
Записать();
ПриЗаписиПерепроводить(1);
КонецЕсли;

К сожалению, "просто" не всегда означает "правильно". Такая схема не работает, поскольку при изменении любого реквизита движок V7 сразу же ставит флажок модифицированности. То есть в нашей процедуре метод Модифицированность() вернет единицу в любом случае.

Но и этого можно избежать, правда, принеся в жертву наглядность. Поле для редактирования реквизита заменяем на текстовое поле, которое изображает текущее состояние реквизита (в поле "формула" нужно занести идентификатор реквизита, в нашем случае "Комментарий"). И рядом добавляем кнопку, на которую вешаем нашу процедуру.

Но нам еще нужно будет организовать изменение реквизита. Окончательный результат:

НовыйКомментарий=СокрЛП(Комментарий);
ВвестиСтроку(НовыйКомментарий,"Введите комментарий",400,1);
Если СокрЛП(Комментарий)=СокрЛП(НовыйКомментарий) Тогда
Возврат;
КонецЕсли;
Комментарий=СокрЛП(НовыйКомментарий);

Если НужноПерепроводить=0 Тогда
ПриЗаписиПерепроводить(0);
Записать();
ПриЗаписиПерепроводить(1);
КонецЕсли;

Таким же образом можно разделаться с реквизитами любого типа: процедура будет такой же, только блок выбора значения для реквизита будет немного различаться (а если подойти творчески, то можно написать универсальную процедуру, которая сама определяет тип и выдаёт нужный диалог).

  1. Уже упоминавшаяся потеря привычной наглядности. Частично ее можно избежать, заменив текст на поле реквизита, недоступное для редактирования. Особенно хорошо это работает для флажков, чисел и агрегатных типов данных.
  2. Если таких "неважных" реквизитов в документе несколько, и пользователю требуется изменить их все, то на сервер "обрушится" несколько последовательных сохранений одного и того же документа.

Здравствуйте! Совсем зелен в 1с, поэтому прошу помощи. Есть документ Служебная записка, который необходимо редактировать после проведения. При записи изменений перепроводить его не надо. Никак не получается избавиться от диалога "Провести документ?" при закрытии формы. Галка "Изменение документов без перепроведения" стоит, СписокДействийФормы = "Записать Закрыть" и все это не помогает. Буду рад любой помощи!

дададад.. потом получится что в регистре 25 штук, в документе 20. или клиент Петров, а в реальности (какой?) - Сидоров.

там круче будет - в служебной записке расписался за премирование, а там бац и уже уволить по несоответствию ) а че - документ проведен подписи стоят)

ПриЗаписиПерепроводить(1-Проведен) В зависимости от того, проведен документ или нет, поставить запрет на редактирование важных для проведения реквизитов. Типа пусть редактируют на здоровье всякие комментарии, не отражающиеся в регистрах.

Идея именно такая. Реализовать жалкое подобие документооборота через один вид документов. Сейчас попробую метод ПриЗаписиПерепроводить

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

Документооборот в первую очередь должен быть удобным, а не заумным

К сожалению, ПриЗаписиПерепроводить не помог. Закинул его в процедуру ПриЗаписи модуля формы документа, но 1с по прежнему предлагает перепровести документ. Еще есть варианты ?

И вообще, делать в рабочей базе "подобие документооборота" через документ - не самое лучшее решение.

Всем СПАСИБО за советы! Проблема таилась в СтрокаДействийФормы. Вынес ее изменение в отдельную процедуру и все заработало. Я прекрасно понимаю что вся эта затея сплошной изврат, но руководство ставит задачу, а я ее выполняю.

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

Зачем записывать служебную записку без перепроведения

Тут документооборот очень условный. Служебаня записка проводиться для того, чтобы Ввести на основании документ Перемещение и никаких регистров она не двигает. Далее в этот уже проведенный другим сотрудником вносятся данные только в одну колонку в табличной части, кроме этой колонки ничего редактировать нельзя.

Читайте также: