![]() |
|
Записать проведенный документ без перепроведения | ☑ | ||
---|---|---|---|---|
0
Mashinist
22.08.09
✎
17:02
|
В 7-ке все было просто. Проведен не проведен документ написал
Док.Записать() и все А как быть в 8-ке. Нужно проведенному документу пару реквизитов поменять. Реквизиты типа Комментария |
|||
1
Михаил Козлов
22.08.09
✎
17:04
|
докОбъект.Записать(РежимЗаписиДокумента.Запись);
|
|||
2
Prikum
22.08.09
✎
17:04
|
Документ.Записать(РежеимЗаписиДокумента.Запись);
|
|||
3
Mashinist
22.08.09
✎
17:07
|
Ну там вообще-то два параметра
Записать(<Режим записи>, <Режим проведения>) <Режим проведения> (необязательный) Тип: РежимПроведенияДокумента. Позволяет выбрать один из возможных режимов проведения. Значение по умолчанию: Неоперативный Т.е. как я понимаю если его не указать, то просто будет проведение неоперативное и все |
|||
4
Prikum
22.08.09
✎
17:08
|
(3) Ты смотри на первый параметр!
|
|||
5
Mashinist
22.08.09
✎
17:13
|
Смотрел
Режим записи> (необязательный) Тип: РежимЗаписиДокумента. Позволяет выбрать один из возможных режимов записи. Значение по умолчанию: Запись Ну т.е. все как в 7-ке остается... Нужно проверить |
|||
6
Mashinist
22.08.09
✎
20:26
|
Ну в общем в любом случае документ проводится.
Плохо. Теряется время за зря. |
|||
7
Prikum
22.08.09
✎
21:24
|
(6) посмотри обработку "Групповая обработка справочников и документов", она изменяет реквизиты документов без проведения!
|
|||
8
Dmitrii
гуру
22.08.09
✎
22:04
|
(6) Нет, не проводится. Проводится только при указании режима записи документа "Проведение").
|
|||
9
php5
22.08.09
✎
22:05
|
(7) Там запись происходит 'Объект.Записать()'...
Я сначала тоже так записывал, потом начали косяки всплывать, что если записывать таким способом, то документ имеет Проведен = Истина (в журналах везде птичка стоит), а движений нету... |
|||
10
Mashinist
23.08.09
✎
12:24
|
(7)
Самый простой код Объект = ЗаказНаряд.ПолучитьОбъект(); Объект.Работы.Удалить(Объект.Работы[0]); Объект.Записать(); Удаляю одну строчку в ТЧ и записываю документ. В 7-ке было бы расхождение между документом и регистром. В 8-ке нету. Перепроводится В "Групповая обработка справочников и документов" Если ЭтоДействиеПроведение Тогда Если ПолеВводаДействия Тогда Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Иначе Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЕсли; ИначеЕсли ЭтоДействиеПометкаНаУдаление Тогда Объект.УстановитьПометкуУдаления(ПолеВводаДействия); Иначе Объект.Записать(); КонецЕсли; Что по сути означает, что Объект.Записать() не проведенных не проводит, а для проведенных перепроводит неоперативно. |
|||
11
AlexSSSS
23.08.09
✎
12:27
|
(10) совсем тупой или прикидываешься?
Объект.Записать(РежимЗаписиДокумента.Запись); |
|||
12
Mashinist
23.08.09
✎
12:49
|
Может и тупой, но пока не понимаю
Объект = ЗаказНаряд.ПолучитьОбъект(); Объект.ПричинаОбращения = ст; Объект.Работы.Удалить(Объект.Работы[0]); Объект.Записать(РежимЗаписиДокумента.Запись); Эффект тот же Вообще Записать(<Режим записи>, <Режим проведения>) Имеет два параметра и у первого значение по умолчанию: Запись , а у второго Значение по умолчанию: Неоперативный Поэтому Объект.Записать(); эквивалентно Объект.Записать(РежимЗаписиДокумента.Запись,РежимПроведенияДокумента.Неоперативный); Не получается у меня программно изменить реквизиты документа и не изменить регистры. (10)Если знаешь как расскажи |
|||
13
golden-pack
23.08.09
✎
12:54
|
(12) А ты с 7кой голимой не сранивай ...
Ты наверно записываешь проведенный документ ... то есть проводки то остались, а реквизиты ты поменял |
|||
14
golden-pack
23.08.09
✎
12:54
|
(12) Весь код в студию
|
|||
15
Mashinist
23.08.09
✎
13:30
|
(13) Тема топика: Записать проведенный документ без перепроведения
Я записываю проведенный документ. Мне нужно изменить реквизиты проведенного документа. Код я уже приводил. Это просто тест. Проверял, что регистры двигаются. |
|||
16
golden-pack
23.08.09
✎
14:22
|
(15) милиард раз менял реквизиты в проведенном документе и записывал без перепроведения.
Объект.Записать(РежимЗаписиДокумента.Запись); |
|||
17
golden-pack
23.08.09
✎
14:24
|
ПриЗаписи() можно глянуть
|
|||
18
PR
23.08.09
✎
14:26
|
Мда.
Бывает порой вот кто-нить типа автора задаст простой вопрос, ему дадут простой ответ, а он нет, грит, не работает. И все, немая пауза, типа кто durak-то? :)) Автору: просто сделай то, что написано в этой ветке. Работает. СТО процентов. |
|||
19
Михаил Козлов
23.08.09
✎
17:41
|
Не проще было в отладчике встать в процедуру проведения и посмотреть, попадает ли туда?
|
|||
20
Mashinist
23.08.09
✎
21:57
|
(19) Вот только что и проверил - попадает в обработку проведения
|
|||
21
golden-pack
24.08.09
✎
10:05
|
(20) И .... нашел откуда попадает ? ПриЗаписи(), ПередЗаписью() проверь .. !!!!
|
|||
22
Михаил Козлов
24.08.09
✎
12:16
|
(20) А если написать Записать(РежимЗаписиДокумента.Запись())? Может автоматом делается проведение, если Модифицированность = ИСТИНА?
|
|||
23
Mitriy
24.08.09
✎
12:24
|
просто Записать() достаточно, зачем все пишут режим записи?
|
|||
24
Mitriy
24.08.09
✎
12:26
|
и вообще, надо было голосовалку устраивать... я за Записать()
|
|||
25
Prikum
24.08.09
✎
12:39
|
(23) Так читать удобней! ИМХО!
|
|||
26
Serg_1960
24.08.09
✎
12:50
|
Даешь голосовалку на тему: Как работает Записать() и нафига они сделали РежимЗаписиДокумента.Запись и РежимЗаписиДокумента.Проведение :))
|
|||
27
Михаил Козлов
25.08.09
✎
19:54
|
Как раз сегодня после изменения конфы понадобилось в старых документах прописать реквизит.
Универсальным подбором и обработкой объектов отобрал документы, написал произвольный алгоритм изменения реквизитов, после изменения написал Объект.Записать(РежимЗаписиДокумента.Запись), поставил точку останова в процедуре проведения - не попадаю. Документы записываются шустро (чисто визуально - без проведения). |
|||
28
Mashinist
26.08.09
✎
00:47
|
(27) очень странно это
Взял обработку с диска ИТС Поиск и замена Решил заменить одного контрагента другим Поставил точки останова в модуле документа ПередЗаписью, ПриЗаписи, ОбработкаПроведения Во все три процедуры попадает. В обработку проведения попадает с режимом Неоперативный (26) По поводу Нафига... В 7-ке есть реально два метода Записать и Провести В 8-ке метод один Потому как если давать РежимЗаписиДокумента.Проведение то явно подразумевается, что запись выполнится раньше. Т.е. если давать РежимЗаписиДокумента.Запись для не проведенного документа, то это будет только запись. А если для проведенного, то у меня по крайней мере попадает в модуль проведения в отличии от (27) Может это где настраивается... Но я пока не нашел В 7-ке можно было написать ПриЗаписиПерепроводить(1) Но это касалось только интерактивной записи и поэтому программно легко можно было сделать содержимое документа одним, а регистры другими В 8-ке мне пока это не удалось сделать. Конфигурация Альфа-Авто |
|||
29
kumena
26.08.09
✎
06:07
|
В 7-ке можно было написать ПриЗаписиПерепроводить(1)
В 8-ке мне пока это не удалось сделать. Может это где настраивается... Но я пока не нашел этот флажок ставится (или не ставится) в свойствах формы |
|||
30
ЛНТ
26.08.09
✎
06:40
|
(0) учись пользоваться отладчиком. Поставь точку останова в модуле проведения. Если попадешь на эту точку, то посмотри стек вызовов - поймешь откуда проведение запускается.
в некоторых конфах встречал в процедуре ПриЗаписи() повторный вызов Записать(), но с режимом проведения, сделано для исключения расхождения данных документа и регистров, может это твой случай. |
|||
31
Mashinist
26.08.09
✎
11:02
|
(30) учусь
Документ.ЗаказНаряд.ОбработкаПроведения(Отказ = ложь, Режим = Неоперативный) 5 393 Клиент:Администратор (2), MIC-R58:1562 Форма.Форма.вВыполнитьЗаменуЭлементов(Заменяемые = Соответствие, ТаблицаСсылок = ТаблицаЗначений, ВыполнятьВТранзакции = истина, ОтключатьКонтрольЗаписи = ложь) 164 Клиент:Администратор (2), MIC-R58:1562 Форма.Форма.КнопкаВыполнитьНажатие(Элемент = КнопкаКоманднойПанели) 529 Клиент:Администратор (2), MIC-R58:1562 видим, что гипотеза о вызове Записать() в ПриЗаписи() не подтвердилась (29)"этот флажок ставится (или не ставится) в свойствах формы" Как называется флажок в терминах 8-ки? Хотя в данном случае формы нет. |
|||
32
kumena
26.08.09
✎
14:17
|
я не знаю, может рарусу и лень делать форму документа, но это совсем маловерятно.
http://slil.ru/27929077 |
|||
33
ptiz
26.08.09
✎
14:30
|
Тяжелый случай.
|
|||
34
Mashinist
26.08.09
✎
14:40
|
(32) да. увидел. спасибо. Стоит ПриЗаписиПререпроводить
Но я так думаю, что это касается конкретной формы. Я же не через форму работаю, а через объект (33) Да... случай действительно тяжелый У меня юзеры не могут по правам неоперативно проводить документы, но с другой стороны нужно обработкой дописать в общем не существенные реквизиты (комментарий например), а получается, что нельзя без проведения (31) показывает, что в обработку проведения я вываливаюсь прямо из формы обработки В общем не получается у меня записать ПРОВЕДЕННЫЙ документ без перепроведения |
|||
35
ptiz
26.08.09
✎
15:20
|
(34) Подытожу:
При вызове метода Записать() вызываются обработчики ПередЗаписью() и ПриЗаписи(). Как в модуле объекта, так и в его подписках на событие. Вот там собака и зарыта. Найти её проще всего способом из (30). Если не находишь, то смотри отладчиком пошагово. |
|||
36
ptiz
26.08.09
✎
15:25
|
Еще один выход (если писатели этой конфы не полные чудаки):
Документ.ОбменДанными.Загрузка = Истина; Документ.Записать(); |
|||
37
Mashinist
26.08.09
✎
15:56
|
(35) Метод (30) я раскрыл в (31)
Там показан стек вызовов при работе обработки с ИТС Поиск и замена значений Ну и моя обработка так же попадает в проведение хотя я пишу Объект.Записать(); (36) Не понял идею с Документ.ОбменДанными.Загрузка = Истина; Документ.Записать(); Можно тему раскрыть? |
|||
38
ptiz
26.08.09
✎
16:35
|
(37) Код из (0)
Док.Записать(); меняешь на Док.ОбменДанными.Загрузка = Истина; Док.Записать(); Это было неочевидно после (36) ? |
|||
39
Mashinist
26.08.09
✎
23:43
|
(38) Круто
Так действительно в модуль проведения не попадает! |
|||
40
Mashinist
26.08.09
✎
23:54
|
(38) Осталось понять - при такой записи если будет база распределенная изменения уйдут по назначению в нужные узлы?
|
|||
41
Zaval
26.08.09
✎
23:55
|
(28) Действительно очень странно. Нет там перепроведения. Я тамошний метод использовал в качестве ПроизвольногоАлгоритма в УниверсальномПодборе..., все на ура проходило.
|
|||
42
Serg_1960
27.08.09
✎
00:36
|
Это преамбула :)
Автор верно заметил - снеговик отличается от клюшек. Но ещё не осознал всю глубину отличий. Незная как работает платформа - сложно "отделить" реакцию платформы от поведения конфы. Теперь по теме: Если автору не удается записать документ без перепроведения не иначе, как только используя "ОбменДанными.Загрузка = Истина" - то можно смело предположить, что "проблема" кроется в используемой конфигурации. Пояснение: Грубо говоря, "ОбменДанными.Загрузка = Истина;" предназначено, прежде всего, для конфигурации. Типовая конфа, как правило, анализирует это значение перед контролем интерактивных действий пользователя и не выполняет их во время обмена данными - считается, что данные уже были проверены в том узле, откуда они поступают. |
|||
43
Mashinist
27.08.09
✎
10:52
|
(42)
Про ОбменДанными.Загрузка = Истина; и смысл этого я уже почитал немного И в конфе (я писал это Альфа-Авто) все учтено ПриЗаписи() стоит Если ОбменДанными.Загрузка = Истина Тогда Возврат что конечно правильно Но еще при такой записи и в модуль проведения вообще не попадает Т.е. для меня на текущий момент это реальное решение поблемы Всем спасибо за обсуждение! Особенно (36) ptiz! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |