Имя: Пароль:
1C
1C 7.7
v7: Проведение документа: новый или перепроведение?
0 Масянька
 
06.01.17
09:43
День добрый!
Как при проведении док-та определить - новый или перепроводится уже существующий?
Спасибо.
1 vcv
 
06.01.17
09:47
Проверить Проведён() в модуле проведения?
2 Amra
 
06.01.17
09:48
В ПередЗаписью в ДополнительныеСвойства кидай ЭтоНовый
(1) "Старый" документ мог быть и не проведен
3 Масянька
 
06.01.17
09:49
(1) Существующий док-т -> отмена проведения -> проведение. И?
(2) А где дополнительный свойства?
4 Остап Сулейманович
 
06.01.17
09:50
(0) В самой ОбработкаПроведения() документ уже записан. Поэтому - в лоб никак не определить.
Можно передать параметр из формы.
Например :

Если Провести(?(Выбран()=0, 1, 0)) = 1 Тогда
    Предупреждение("Провели");
КонецЕсли;

В модуле :
Процедура ОбработкаПроведения(ПроводимНовый = 0)
...
КонецПроцедуры
5 Amra
 
06.01.17
09:51
(3) Восьмерка же?
Если ЗначениеЗаполнено(Ссылка) тогда Объект.ДополнительныеСвойства.Вставить("ЭтоНовый");
конецесли;
6 Масянька
 
06.01.17
09:52
(5) Чего? Секцию в упор не видим?
7 Amra
 
06.01.17
09:52
(4) Не путай человека
8 Масянька
 
06.01.17
09:52
(4) Точно в лоб никак?
9 Amra
 
06.01.17
09:53
(6) Ну сплю я еще)
10 Масянька
 
06.01.17
09:54
(4) А если сначала записать, а потом провести?
11 vcv
 
06.01.17
09:54
Лучше бы начать с описания задачи человеческим языком.
Если нужно отлавливать, что документ ранее был проведен и его еще раз проводят, то, в общем случае, без дополнительного реквизита не обойдёшься. Или дополнительной таблички с нужными данными в базе.
12 Масянька
 
06.01.17
09:56
(11) Человечий язык и 1С - несовместимы.
13 Остап Сулейманович
 
06.01.17
09:58
(8) 100 пудов. Проведение начинается с записи. И только потом вызывается обработчик Обработка проведения.

Нужен флаг, который будет выставляться непосредственно перед проведением. В форме таким флагом может быть результат функции Выбран(). Можно использовать специальный реквизит самого документа, который выставлять в "1" при первом проведении. ...
14 vcv
 
06.01.17
10:00
(12) Зато совместимы человеческий язык и потребности учета/документооборота. В (0) сформулирована не задача, а ваша попытка её решения. Попытка, возможно, не очень удачная.
15 Остап Сулейманович
 
06.01.17
10:00
(10) "сначала записать, а потом провести" - документ уже не будет новым. Он уже будет иметь позицию. Как и все остальные. С точки зрения платформы он будет неотличим от остальных непроведенных документов.
Если нужно отловить факт первого проведения - нужно использовать реквизит самого документа.
16 Масянька
 
06.01.17
10:01
(13) Блин... Хотела обойтись малой кровью... Не судьба...
Спасибо.
17 vcv
 
06.01.17
10:03
(15) Ну можно не реквизит. Можно отдельную табличку или даже отдельные файлы. Так как документов, которые хочется отловить, не должно быть много, можно для каждого документа писать текстовый файл-журнал. С информацией, кто и когда его делал непроведенным, спросить и запомнить, зачем перепроводили и так далее.
18 vcv
 
06.01.17
10:04
+(17) Опять таки всё зависит от задачи.
19 Это_mike
 
06.01.17
10:18
(16) малой кровью - юзай перехватчик. У объекта добавляешь флаг, вперехвате ввода нового и ввода на основании его взводишь, после проведения - сбрасываешь.
20 vde69
 
06.01.17
10:21
так пойдет?

если ЭтотОбъект.Проведен и не ЭтотОбъект.Ссылка.Проведен Тогда
....
21 Это_mike
 
06.01.17
10:29
(20) выдыхай,бобер, выдыхай....©
22 Это_mike
 
06.01.17
10:40
(0) идею поняла? Помощь нужна? Если да, то спрашивай, а то я лыжить собрался, до вечера не вернусь.
23 Масянька
 
06.01.17
10:56
(22) Иди, отдыхай. Уже делаю.