Имя: Пароль:
1C
1С v8
1с 8.2 УПП: устанавливать время в доках 23:58:00 при неоперативном проведении
,
0 Kleo
 
07.07.14
08:35
Здравствуйте!

Подскажите, пожалуйста, необходимо устанавливать время в документах 23:58:00, если этот документ создается задним числом, неоперативно, если дата документа - последний день месяца.

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

Но как поставить условие, что неоперативное проведение и последний день месяца? Так, чтобы все было корректно
1 Бешеная Нога
 
07.07.14
08:57
ДокументОбъект.<Имя документа>.ПередЗаписью (DocumentObject.<Имя документа>.BeforeWrite)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПередЗаписью (BeforeWrite)
Синтаксис:

ПередЗаписью(<Отказ>, <РежимЗаписи>, <РежимПроведения>)
Параметры:

<Отказ>

Тип: Булево.
Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись документа выполнена не будет.
Значение по умолчанию: Ложь
<РежимЗаписи>

Тип: РежимЗаписиДокумента.
В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
<РежимПроведения>

Тип: РежимПроведенияДокумента.
В данный параметр передается текущий режим проведения.
Изменение значения параметра позволяет изменить режим проведения.
Описание:

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.
2 Kamas
 
07.07.14
09:02
Примерно так
если  дата =<конецмесяца(Источник.Дата)  и дата>= началоДня(конецмесяца(Источник.Дата)) и РежимПроведения= РежимПроведенияДокумента.Неоперативный тогда
3 Kamas
 
07.07.14
09:06
(2) либо  условие можно заменить на  День(Источник.Дата)= День(конецмесяца(Источник.Дата))и РежимПроведения= РежимПроведенияДокумента.Неоперативный
4 Kleo
 
07.07.14
12:38
сделала подписку на события, обработчик событий в общем модуле:


Процедура АкУстановкаВремени (Источник, Отказ, РежимПроведения) Экспорт
    ДатаДок = Источник.Дата;
    
    Если ДатаДок <= КонецДня(ТекущаяДата()) Тогда
    
        Если КонецДня(ДатаДок) = КонецМесяца(КонецДня(ДатаДок)) и РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда
            Источник.Дата = Дата(Формат(источник.Дата, "ДФ=dd.MM.yyyy") +" 23:58:00");
            Источник.Записать();
        КонецЕсли;    
        
    
    КонецЕсли;
    
КонецПроцедуры    



но есть другой вопрос: мне нужно, чтобы это выполнялось для всех документов, кроме регламентных. а регламентные документы - это 4 журнала документов. как сделать отбор по вхождению в тот или иной журнал документов?
5 Kleo
 
18.07.14
11:02
Все сделано и прописано проведение в ОПРЕДЕЛЕННОЕ время для доков в хронологической последовательности для последнего дня месяца - но теперь при проведении доков при помощи обработки "Проведение по партиям" вываливаются ошибки:

Управленческий учет. документ Требование-накладная №422535235 от 30.06.2014 .....
Не списано по партиям 1 шт товара Наименование товара
...
...
...


и так далее

причем если просто проводить документ, то ничего  - никаких ошибок не выдает.


ничего страшного? или не нужно было дописывать принудительное время проведения? в принципе обработка проведения по партиям документ не проводит, она перезаписывает движения по партиям. все оставить так? что делать?
6 mikecool
 
18.07.14
11:04
(4) тебе же сказали - делай в передзаписью
причем - хочешь при программной записи - тогда делай в модуле объекта
но тебе скорее всего надо выстраивать документы в пределах дня - приходы, потом перемещения, потом расходы
7 Kleo
 
18.07.14
11:15
(6) документы в пределах дня выстроены.

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

у меня сделана подписка на событие - Событие "Обработка проведения" и код в (4) в общем модуле.

имеется ввиду, что поменять Обработку проведения - Перед записью ? не помню почему, но не выбрала, почему-то это вариант. сейчас гляну
8 Kleo
 
18.07.14
12:17
Изменила. сделала Перед записью - все равно при проведении по партиям выдает ошибки
9 shuhard
 
18.07.14
12:20
(8) значит дело было не в бобине (с)
10 mikecool
 
18.07.14
12:20
(8) проверяй - может у тебя там тупо не хватает товара
11 LORD
 
18.07.14
12:44
(0) то что хотите, это не правильно, так нельзя делать
12 Kleo
 
18.07.14
13:10
(10) по всем документам? все везде хватает. если проводить тот же документ руками - то ошибок не выдает
13 Kleo
 
18.07.14
13:10
(11) почему?
14 Kleo
 
18.07.14
13:31
Переделала на Перед записью - теперь при попытке вообще провести или сделать непроведенным  - программа вылетает, выдает ошибку памяти дампа и так несколько раз. хорошо, что на копии сделала. вернула обратно на Обработка Проведения  - все встало нормально
15 Kleo
 
18.07.14
13:47
Эта ошибка при Проведении по партиям, которая сообщает, что не списано по партиям столько-то товара. она критична? на что влияет? что по партиям не выполнилось движение? а если хронология соблюдена и все ок? то можно игнорировать эту ошибку. и главное ошибка есть не по всем документам, а только по Требованиям-накладным и нескольким реализациям. хотя реализации много за последний день месяца
16 mikecool
 
18.07.14
13:48
(12) тогда надо понять - почему у тебя разные данные при ручном и программном проведении
17 LORD
 
18.07.14
14:13
(13) потому что это не рауз, а партионный учет
18 Kleo
 
21.07.14
05:00
вы сами попробуйте прописать хотя бы для одного документа такую подписку на события - и посмотрите, что получится?  

(17) я понимаю, что это не РАУЗ. на сколько я понимаю, Проведение по партиям изменяет движения по регистрам, но сам док не проводит. и что тогда ему мешает? каким образом повлияли мои изменения?
19 Kleo
 
22.07.14
09:23
Помогло проведение документов за последний день месяца, а затем запускается Проведение по партиям. и нет ошибок