Записать проведенный документ без перепроведения #427307


#0 by Mashinist
В 7-ке все было просто. Проведен не проведен документ написал Док.Записать и все А как быть в 8-ке. Нужно проведенному документу пару реквизитов поменять. Реквизиты типа Комментария
#1 by Михаил Козлов
докОбъект.Записать(РежимЗаписиДокумента.Запись);
#2 by Prikum
Документ.Записать(РежеимЗаписиДокумента.Запись);
#3 by Mashinist
Ну там вообще-то два параметра Записать(<Режим записи>, <Режим проведения>) <Режим проведения> (необязательный) Тип: РежимПроведенияДокумента. Позволяет выбрать один из возможных режимов проведения. Значение по умолчанию: Неоперативный Т.е. как я понимаю если его не указать, то просто будет проведение неоперативное и все
#4 by Prikum
Ты смотри на первый параметр!
#5 by Mashinist
Смотрел Режим записи> (необязательный) Тип: РежимЗаписиДокумента. Позволяет выбрать один из возможных режимов записи. Значение по умолчанию: Запись Ну т.е. все как в 7-ке остается... Нужно проверить
#6 by Mashinist
Ну в общем в любом случае документ проводится. Плохо. Теряется время за зря.
#7 by Prikum
посмотри обработку "Групповая обработка справочников и документов", она изменяет реквизиты документов без проведения!
#8 by Dmitrii
Нет, не проводится. Проводится только при указании режима записи документа "Проведение").
#9 by php5
Там запись происходит 'Объект.Записать'... Я сначала тоже так записывал, потом начали косяки всплывать, что если записывать таким способом, то документ имеет Проведен = Истина (в журналах везде птичка стоит), а движений нету...
#10 by Mashinist
Самый простой код Удаляю одну строчку в ТЧ и записываю документ. В 7-ке было бы расхождение между документом и регистром. В 8-ке нету. Перепроводится В "Групповая обработка справочников и документов" Что по сути означает, что Объект.Записать не проведенных не проводит, а для проведенных перепроводит неоперативно.
#11 by AlexSSSS
совсем тупой или прикидываешься?
#12 by Mashinist
Может и тупой, но пока не понимаю Эффект тот же Вообще Записать(<Режим записи>, <Режим проведения>) Имеет два параметра и у первого значение по умолчанию: Запись , а у второго Значение по умолчанию: Неоперативный Поэтому Объект.Записать; эквивалентно Объект.Записать(РежимЗаписиДокумента.Запись,РежимПроведенияДокумента.Неоперативный); Не получается у меня программно изменить реквизиты документа и не изменить регистры. Если знаешь как расскажи
#13 by golden-pack
А ты с 7кой голимой не сранивай ... Ты наверно записываешь проведенный документ ... то есть проводки то остались, а реквизиты ты поменял
#14 by golden-pack
Весь код в студию
#15 by Mashinist
Тема топика: Записать проведенный документ без перепроведения Я записываю проведенный документ. Мне нужно изменить реквизиты проведенного документа. Код я уже приводил. Это просто тест. Проверял, что регистры двигаются.
#16 by golden-pack
милиард раз менял реквизиты в проведенном документе и записывал без перепроведения.
#17 by golden-pack
ПриЗаписи можно глянуть
#18 by PR
Мда. Бывает порой вот кто-нить типа автора задаст простой вопрос, ему дадут простой ответ, а он нет, грит, не работает. И все, немая пауза, типа кто durak-то? :)) Автору: просто сделай то, что написано в этой ветке. Работает. СТО процентов.
#19 by Михаил Козлов
Не проще было в отладчике встать в процедуру проведения и посмотреть, попадает ли туда?
#20 by Mashinist
Вот только что и проверил - попадает в обработку проведения
#21 by golden-pack
И .... нашел откуда попадает ? ПриЗаписи, ПередЗаписью проверь .. !!!!
#22 by Михаил Козлов
А если написать Записать(РежимЗаписиДокумента.Запись)? Может автоматом делается проведение, если Модифицированность = ИСТИНА?
#23 by Mitriy
просто Записать достаточно, зачем все пишут режим записи?
#24 by Mitriy
и вообще, надо было голосовалку устраивать... я за Записать
#25 by Prikum
Так читать удобней! ИМХО!
#26 by Serg_1960
Даешь голосовалку на тему: Как работает Записать и нафига они сделали РежимЗаписиДокумента.Запись и РежимЗаписиДокумента.Проведение :))
#27 by Михаил Козлов
Как раз сегодня после изменения конфы понадобилось в старых документах прописать реквизит. Универсальным подбором и обработкой объектов отобрал документы, написал произвольный алгоритм изменения реквизитов, после изменения написал Объект.Записать(РежимЗаписиДокумента.Запись), поставил точку останова в процедуре проведения - не попадаю. Документы записываются шустро (чисто визуально - без проведения).
#28 by Mashinist
очень странно это Взял обработку с диска ИТС Поиск и замена Решил заменить одного контрагента другим Поставил точки останова в модуле документа ПередЗаписью, ПриЗаписи, ОбработкаПроведения Во все три процедуры попадает. В обработку проведения попадает с режимом Неоперативный По поводу Нафига... В 7-ке есть реально два метода Записать и Провести В 8-ке метод один Потому как если давать РежимЗаписиДокумента.Проведение то явно подразумевается, что запись выполнится раньше. Т.е. если давать РежимЗаписиДокумента.Запись для не проведенного документа, то это будет только запись. А если для проведенного, то у меня по крайней мере попадает в модуль проведения в отличии от Может это где настраивается... Но я пока не нашел В 7-ке можно было написать ПриЗаписиПерепроводить Но это касалось только интерактивной записи и поэтому программно легко можно было сделать содержимое документа одним, а регистры другими В 8-ке мне пока это не удалось сделать. Конфигурация Альфа-Авто
#29 by kumena
В 7-ке можно было написать ПриЗаписиПерепроводить В 8-ке мне пока это не удалось сделать. Может это где настраивается... Но я пока не нашел этот флажок ставится (или не ставится) в свойствах формы
#30 by ЛНТ
учись пользоваться отладчиком. Поставь точку останова в модуле проведения. Если попадешь на эту точку, то посмотри стек вызовов - поймешь откуда проведение запускается. в некоторых конфах встречал в процедуре ПриЗаписи повторный вызов Записать, но с режимом проведения, сделано для исключения расхождения данных документа и регистров, может это твой случай.
#31 by Mashinist
учусь видим, что гипотеза о вызове Записать в ПриЗаписи не подтвердилась "этот флажок ставится (или не ставится) в свойствах формы" Как называется флажок в терминах 8-ки? Хотя в данном случае формы нет.
#32 by kumena
я не знаю, может рарусу и лень делать форму документа, но это совсем маловерятно.
#33 by ptiz
Тяжелый случай.
#34 by Mashinist
да. увидел. спасибо. Стоит ПриЗаписиПререпроводить Но я так думаю, что это касается конкретной формы. Я же не через форму работаю, а через объект Да... случай действительно тяжелый У меня юзеры не могут по правам неоперативно проводить документы, но с другой стороны нужно обработкой дописать в общем не существенные реквизиты (комментарий например), а получается, что нельзя без проведения показывает, что в обработку проведения я вываливаюсь прямо из формы обработки В общем не получается у меня записать ПРОВЕДЕННЫЙ документ без перепроведения
#35 by ptiz
Подытожу: При вызове метода Записать вызываются обработчики ПередЗаписью и ПриЗаписи. Как в модуле объекта, так и в его подписках на событие. Вот там собака и зарыта. Найти её проще всего способом из . Если не находишь, то смотри отладчиком пошагово.
#36 by ptiz
Еще один выход (если писатели этой конфы не полные чудаки):
#37 by Mashinist
Метод я раскрыл в Там показан стек вызовов при работе обработки с ИТС Поиск и замена значений Ну и моя обработка так же попадает в проведение хотя я пишу Объект.Записать; Не понял идею с Документ.ОбменДанными.Загрузка = Истина; Можно тему раскрыть?
#38 by ptiz
Код из Это было неочевидно после ?
#39 by Mashinist
Круто Так действительно в модуль проведения не попадает!
#40 by Mashinist
Осталось понять - при такой записи если будет база распределенная изменения уйдут по назначению в нужные узлы?
#41 by Zaval
Действительно очень странно. Нет там перепроведения. Я тамошний метод использовал в качестве ПроизвольногоАлгоритма в УниверсальномПодборе..., все на ура проходило.
#42 by Serg_1960
Это преамбула :) Автор верно заметил - снеговик отличается от клюшек. Но ещё не осознал всю глубину отличий. Незная как работает платформа - сложно "отделить" реакцию платформы от поведения конфы. Теперь по теме: Если автору не удается записать документ без перепроведения не иначе, как только используя "ОбменДанными.Загрузка = Истина" - то можно смело предположить, что "проблема" кроется в используемой конфигурации. Пояснение: Грубо говоря, "ОбменДанными.Загрузка = Истина;" предназначено, прежде всего, для конфигурации. Типовая конфа, как правило, анализирует это значение перед контролем интерактивных действий пользователя и не выполняет их во время обмена данными - считается, что данные уже были проверены в том узле, откуда они поступают.
#43 by Mashinist
Про ОбменДанными.Загрузка = Истина; и смысл этого я уже почитал немного И в конфе (я писал это Альфа-Авто) все учтено ПриЗаписи стоит Если ОбменДанными.Загрузка = Истина Тогда Возврат что конечно правильно Но еще при такой записи и в модуль проведения вообще не попадает Т.е. для меня на текущий момент это реальное решение поблемы Всем спасибо за обсуждение! Особенно ptiz!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С