|
v7: Документ.Провести() вызывает запись | ☑ | ||
---|---|---|---|---|
0
---Fix---
28.09.20
✎
16:41
|
Есть кусок кода, выполняемый во внешней обработке:
Док = СоздатьОбъект("Документ.ДоговорТЭ"); ТекущийДоговор = элТЗДоговора.ПолучитьЗначение(элТЗДоговора.НомерСтроки, "Договор"); Док.НайтиДокумент(ТекущийДоговор); Если Док.УчетПоНормативу = Перечисление.Булево.Да Тогда Если Док.Проведен() = 1 Тогда Док.СделатьНеПроведенным(); Док.УчетПоНормативу = Перечисление.Булево.Нет; КонецЕсли; Док.Провести(); КонецЕсли; Документ успешно записывает изменения, что мне кстати и нужно, но покоя не могу найти т.к. в ИТС написано четко: ". В отличие от режима проведения документа, редактируемого в форме, при проведении документа с помощью переменной созданной функцией "СоздатьОбъект" не выполняется автоматически предварительная запись документа. Фактически это означает, что после любого изменения документа перед выполнением метода "Провести" следует вызвать метод "Записать", чтобы до проведения были записаны измененные данные документа.". Из сторонних компонент только TurboBL. Стоят галочки на: Контроль уникальности, Разрешить проведение документа, Автоматическое удаление движений, Автоматическая нумерация строк. Почему же документ записывает изменения без моего указания? |
|||
1
mikecool
28.09.20
✎
16:47
|
(0) о написанном в ИТС - первый раз вижу, но помню, что проведение вызывает запись )
|
|||
2
Franchiser
гуру
28.09.20
✎
16:48
|
(0) Не верь ИТС
|
|||
3
Franchiser
гуру
28.09.20
✎
16:51
|
(0) на файловой пробовал?
|
|||
4
---Fix---
28.09.20
✎
16:52
|
Вот отсюда нашел:
https://its.1c.ru/db/metod77/content/2147484561/hdoc Но нигде в документации я не нашел что, проведение вызывает запись. "Описание встроенного языка" и "конфигурирование и администрирование" упорно молчат об этом. (3) файловая база |
|||
5
mikecool
28.09.20
✎
16:53
|
хотя... емнип всегда писал Записать() Провести()
|
|||
6
---Fix---
28.09.20
✎
16:55
|
В примерах в Описании встроенного языка на методе Провести():
Записать(); Провести(); Поэтому я слегка офигел, всегда писал Записать() перед проведением |
|||
7
mikecool
28.09.20
✎
17:02
|
(6) ты ускоришь базу в 2 раза )))
|
|||
8
ChMikle
28.09.20
✎
17:02
|
(6) Записать значения реквизитов , а потом провести если получится :). В противном случае данные не будут сохраняться если провести() не отработает ...
|
|||
9
big
28.09.20
✎
19:42
|
А как же тогда "работает" изменение реквизитов в модуле документа, непосредственно при проведении? ;)
|
|||
10
Ёпрст
28.09.20
✎
19:50
|
(0) выкинь из этого кода
Док.СделатьНеПроведенным(); и если Док.УчетПоНормативу = Перечисление.Булево.Нет; никак не влияет на проведение, то просто Док.Записать Если влияет, то Провести и всё и не надо ничего распроводить |
|||
11
Cthulhu
29.09.20
✎
01:17
|
(9): а ты попробуй прервать проведение (исключением) после кода установки "других" значений реквизитов - и потом посмотри - у этого документа реквизиты изменились на новые при неудавшемся проведении?.. ;)
|
|||
12
---Fix---
29.09.20
✎
08:31
|
(10) и правда не влияет, прывык по шалону делать, отвыкать надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |