|   |   | 
| 
 | Вопрос на засыпку: Может ли документ быть не записанным в обработке проведения | ☑ | ||
|---|---|---|---|---|
| 0
    
        mzelensky 26.03.14✎ 13:06 | 
        Доброго всем. Вопрос. как и сказано в теме, на засыпку...хоть на собеседованиях задавай.. 
 Итак, ковыряюсь в УТ 10.3 (естественно модифицированной) и вижу в ОБРАБОТКЕ ПРОВЕДЕНИЯ документе РТиУ следующий код: Если ЭтоНовый() Тогда //Объект еще ни разу не проводился ...БЛА-БЛА-БЛА Иначе //Если Реализация или Поступление уже созданы Тогда Если Не Отказ Тогда НовыйОбъект = Ложь; ЭтотОбъект.Записать(); КонецЕсли; КонецЕсли; Иначе ...БЛА-БЛА-БЛА КонецЕсли; А теперь внимание вопрос - Может ли документ быть НОВЫМ (т.е. НЕ ЗАПИСАННЫМ) в ОБРАБОТКЕ ПРОВЕДЕНИЯ ??? | |||
| 1
    
        H A D G E H O G s 26.03.14✎ 13:08 | 
        (0) Взять и проверить.     | |||
| 2
    
        mzelensky 26.03.14✎ 13:09 | 
        (1) Я проверял - у меня не получается, чтобы он был новым.
 Может как-то не так проверяю? | |||
| 3
    
        H A D G E H O G s 26.03.14✎ 13:09 | 
        НОВЫМ (ЭтоНовый()) и (НЕ ЗАПИСАННЫЙ) - это могут быть разные сущности.
 Ты должен это проверить. | |||
| 4
    
        Господин ПЖ 26.03.14✎ 13:10 | 
        ЭтоНовый() разве ловится ниже ПередЗаписью() ?
 упоротые... | |||
| 5
    
        Maxus43 26.03.14✎ 13:10 | 
        а теперь внимание ответ!
 Не может он быть не записанным в обработке проведения | |||
| 6
    
        Maxus43 26.03.14✎ 13:11 | 
        вопрос со смыслом темы не связан вобще     | |||
| 7
    
        PuhUfa 26.03.14✎ 13:13 | 
        ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
 ОбработкаПроведения (Posting) Описание: Возникает при проведении документа. Основное назначение процедуры-обработчика данного события - генерация движений по документу. Выполняется в транзакции записи. | |||
| 8
    
        GROOVY 26.03.14✎ 13:13 | 
        Чисто теоретически в обработке проведения документ может быть не записан, если обработку проведения вызвали программно, а не событийно. Но это изврат.
 Если нужно в обработке проведения проверить проводится ли документ или перепроводится, то подобную штуку можно провернуть с помощью "ДополнительныеСвойства" в которые перед записью помещать признак проведенности (или нового) документа, а в обработке проведения уже проверять что там. | |||
| 9
    
        DexterMorgan 26.03.14✎ 13:15 | 
        (8) Опередил) конечно доп свойства     | |||
| 10
    
        mzelensky 26.03.14✎ 13:15 | 
        (3) меня конкретно вот это интересует:
 Если ЭтоНовый() Тогда | |||
| 11
    
        mzelensky 26.03.14✎ 13:16 | 
        (4) Самы ты упоротый. Открой отладчик и проверь!     | |||
| 12
    
        vmv 26.03.14✎ 13:16 | 
        а если новому документу ссылка назначена посредством ПолучитьСсылкуНового(), то он ведь может быть и не записан, но уже "иметь" ссылку.
 может в этом сакральный смысл (0) | |||
| 13
    
        DexterMorgan 26.03.14✎ 13:17 | 
        (12) Все гораздо банальнее)     | |||
| 14
    
        mzelensky 26.03.14✎ 13:18 | 
        (8) Т.е., теоретически, если я программно создаю документ, а потом аишу
 Док.Записать(РежимЗаписиДокумента.Проведение); то обработка проведения вызовится без записи? | |||
| 15
    
        mzelensky 26.03.14✎ 13:19 | 
        (12) Ссылка тут не причем.
 Меня интересует свойство ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) ЭтоНовый (IsNew) Синтаксис: ЭтоНовый() Возвращаемое значение: Тип: Булево. Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан. Описание: Определяет, записан ли документ в базу данных. И может ли оно отрабатывать в ЛОЖЬ в обработке проведения. | |||
| 16
    
        PuhUfa 26.03.14✎ 13:20 | 
        (14) и тогда ты должен будешь получить проведенный документ которого нет в базе -)) Прям как с сусликом -)     | |||
| 17
    
        Maxus43 26.03.14✎ 13:21 | 
        >>И может ли оно отрабатывать в ЛОЖЬ в обработке проведения
 не должен, это просто проверить | |||
| 18
    
        mzelensky 26.03.14✎ 13:21 | 
        (16) Чет мне кажется бред.     | |||
| 19
    
        vmv 26.03.14✎ 13:22 | 
        (15) если найдеться мозг, который напомнит мне ЧТО влияет на результат ЭтоНовый(), то буду благодарен     | |||
| 20
    
        GROOVY 26.03.14✎ 13:24 | 
        (14) Нет. Это вызовет событие записи и проведения.
 (15) Может, я писал выше. | |||
| 21
    
        Defender aka LINN 26.03.14✎ 13:24 | 
        (19) Записан ли документ в базу     | |||
| 22
    
        GROOVY 26.03.14✎ 13:24 | 
        (19) ДокументОбъект.<Имя документа>.ЭтоНовый (DocumentObject.<Имя документа>.IsNew)
 ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) ЭтоНовый (IsNew) Синтаксис: ЭтоНовый() Возвращаемое значение: Тип: Булево. Истина - изменяется еще ни разу не записанный документ; Ложь - документ уже записан. Описание: Определяет, записан ли документ в базу данных. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Пример: Если РасходнаяНакладная.ЭтоНовый() Тогда РасходнаяНакладная.Записать(); КонецЕсли; | |||
| 23
    
        mzelensky 26.03.14✎ 13:26 | 
        (20) Т.е. это возможно если:
 Создать документ, а потом просто вызвать процедуру "ОбработкаПроведения()" (предварительно сделав ее Экспортной) ? так? | |||
| 24
    
        Maxus43 26.03.14✎ 13:26 | 
        (22) если следовать букве СП - в обработке проведения документ записан, отсюда и ЭтоНовый() должен быть Ложь.
 Хотя показывает видимо Истина (что правильно, неправильно что в СП написано) :) | |||
| 25
    
        StanleyMarsh 26.03.14✎ 13:27 | 
        (0) Вирусный вопрос))     | |||
| 26
    
        mzelensky 26.03.14✎ 13:28 | 
        (21)(22) я думаю он имел ввиду как система определяет записан объект в базу или нет.
 Например создан новый объект и ему нахрапом присвоена ссылка какого-то объекта (ну допустим). Тогда получается, что ссылка у объекта есть, но в базу он фактически еще не записан. | |||
| 27
    
        Maxus43 26.03.14✎ 13:29 | 
        (26) платформа не создаёт ссылку новому документу, это можно сделать только программно     | |||
| 28
    
        GROOVY 26.03.14✎ 13:29 | 
        (23) Да, а если вызывать ее из модуля объекта, то и экспортной делать не надо.     | |||
| 29
    
        mzelensky 26.03.14✎ 13:30 | 
        (27) Что значит не создает? А Гуид кто формирует?     | |||
| 30
    
        Maxus43 26.03.14✎ 13:34 | 
        (29) он при записи формируется, а не при создании документа     | |||
| 31
    
        StanleyMarsh 26.03.14✎ 13:34 | 
        Если интересно ответ такой: запись и проведение происходят в рамках 1 транзакции. ЭтоНовый() даст ложь (для нового документа),но если в обработке проведения стоит отказ, то транзакция отменится и как бы записанный документ перестанет быть записанным))     | |||
| 32
    
        GROOVY 26.03.14✎ 13:34 | 
        (26) Это возможно, особенно при переносе данных, к примеру КД или РБД.     | |||
| 33
    
        GROOVY 26.03.14✎ 13:35 | 
        (31) В том случае если транзакция проведения вложена в транзакцию записи.     | |||
| 34
    
        StanleyMarsh 26.03.14✎ 13:37 | 
        (33) очевидно, что если документ был записан то ЭтоНовый() всегда даст ложь. В вопросе (0) этот случай (33) только и подразумевается.     | |||
| 35
    
        mzelensky 26.03.14✎ 13:38 | 
        (30)ну так в том и фишка. Что платформа сама еще ГУИД не сфоррмировала, а ты его уже присвоил объекту (сам).
 Вот в этом случае, пока ты еше не записал этот объект, платформа будет думатЬ .что объект новый или уже нет (т.к. гуид по факту ей присвоен) | |||
| 36
    
        MaxS 26.03.14✎ 13:40 | 
        Если РежимЗаписиДокумента.Проведение, то логично предположить, что документ может быть новым в момент проведения. И если при проведении произойдёт отказ, то произойдёт откат транзакции записи.     | |||
| 37
    
        Maxus43 26.03.14✎ 13:40 | 
        (35) Новый - Не новый от гуида не зависит... Корое первый раз записываешь = ЭтоНовый() Иначе ЛОЖЬ     | |||
| 38
    
        vmv 26.03.14✎ 13:49 | 
        тут нужно мнение создателя метода "это новый" с описанием внутренней условной логики - все остальное только фантазии.
 А само описание метода в СП ущербно, конеш, и аппелирует опять же к фантазиям в расчете на то, что "тупым и жадным" достаточно отписки. | |||
| 39
    
        Defender aka LINN 26.03.14✎ 20:18 | 
        рукалицо...     | |||
| 40
    
        Леша1с 27.03.14✎ 09:06 | 
        что за беспредел....
 если ОбработкаПроведения "попала" как-либо программно, а не через ок-провести, то ЭтоНовый может быть Истина (не записан объект). И какое отношение получение ссылки (выдача каких-либо ссылок из пула) имеет к тождествености к записи объекта? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |