Имя: Пароль:
1C
1C 7.7
v7: Пропадают движения в регистре при повтором проведении
, ,
0 Арчи
 
24.04.12
12:53
Приветствую всех!
Недавно создал в ТиСе новый регистр остатков. В проведении документа Реализация делаю по нему движение обычным способом:
Регистр.История.Карт = МойКарт;
Регистр.Колво = 1;
Регистр.История.ВыполнитьДвижениеПриход;
После первого проведения, всё нормально, в отчёте данные видны. Но если провести после этого реализацию ещё раз, то данные исчезают. Если после этого снять реализацию с проводки и провести, то данные в моём регистре снова появляются. Если провести повторно, то данные исчезают. Не пойму, что не так. Свои регистры до этого не создавал, может какие-то нюансы есть...
Собственно вопрос, почему движения при повторном проведении исчезают?
1 Арчи
 
24.04.12
12:54
Во второй строчке Регистр.История.Колво = 1;
2 chingiz
 
24.04.12
12:57
Всю обработку проведения сюда.
3 chingiz
 
24.04.12
12:58
+(2) черт v7 ;[
4 Он
 
24.04.12
13:02
(2)+1
5 Mikeware
 
24.04.12
13:05
Соотношение радиусов, видимо, такое..
6 andrewks
 
24.04.12
13:15
гы-гы-гы, я догадываюсь, в чём причина. но, тем не менее, (2) +1
7 Арчи
 
24.04.12
13:15
Если ДокОснование.Вид()="ЗаявкаПокупателя" Тогда
Если ДокОснование.ДокОснование.Вид()="ЗаказНаряд" Тогда
 ДокЗаказНаряд = СоздатьОбъект("Документ.ЗаказНаряд");
 ДокЗаказНаряд.НайтиДокумент(ДокОснование.ДокОснование.ТекущийДокумент());    
 ДокЗаказНаряд.ВыбратьСтроки();
  Пока ДокЗаказНаряд.ПолучитьСтроку() = 1 Цикл
   Если (ПустоеЗначение(ДокЗаказНаряд.ДокСчет)=1) и         (ДокЗаказНаряд.СтатусКартриджа=Перечисление.СтатусКартриджа.Доставить) Тогда
   ДокЗаказНаряд.ДокСчет = ДокОснование.ТекущийДокумент();
   Регистр.ИсторияПоКартирджам.Картридж = ДокЗаказНаряд.Картридж.ТекущийЭлемент();
   Регистр.ИсторияПоКартирджам.ДокументРеализации = ТекущийДокумент();
   Регистр.ИсторияПоКартирджам.Колво = 1;
   Регистр.ИсторияПоКартирджам.ДвижениеПриходВыполнить();
   КонецЕсли;
  КонецЦикла;
           
ДокЗаказНаряд.Записать();
           
КонецЕсли;
КонецЕсли;
8 viktor_vv
 
24.04.12
13:16
ОчиститьДвижения() небось.
9 Godofsin
 
24.04.12
13:17
.провести()
10 viktor_vv
 
24.04.12
13:18
А, не. Вот здесь.

Если (ПустоеЗначение(ДокЗаказНаряд.ДокСчет)=1)

А при првоедение ДокЗаказНаряд.ДокСчет записывается значение. При чнятие с проведения очищается.
11 Арчи
 
24.04.12
13:18
Всё это делается в ОбработкаПроведения() в документе Реализация.
12 NS
 
24.04.12
13:19
(0) В отчете понятно, а что после повторного проведения в движениях документа?
13 andrewks
 
24.04.12
13:19
за такое в модуле дока в 37-м расстреливали
14 Он
 
24.04.12
13:19
Галка "Автоматическое удаление движений" стоит?
15 Voronve
 
24.04.12
13:20
(10) Уверен что при снятии с проведения очищается ?
16 Он
 
24.04.12
13:20
(13) При Сталине такого не было.
17 viktor_vv
 
24.04.12
13:20
При повторном проведении у тебя

(ПустоеЗначение(ДокЗаказНаряд.ДокСчет) совсем не 1 равно скорее всего.
18 NS
 
24.04.12
13:21
(17) Не скорей всего, а точно.
19 andrewks
 
24.04.12
13:22
(16) чего не было? головотяпства-то? сомневаюсь
20 viktor_vv
 
24.04.12
13:22
(15) Должно очищаться, судя по  "Если после этого снять реализацию с проводки и провести, то данные в моём регистре снова появляются.". Не уверен только в каком событии очищается.
21 Арчи
 
24.04.12
13:24
Если закоментировать строку с условием, то всё равно движения исчезают.
22 andrewks
 
24.04.12
13:26
во-первых, нет проверки, найден ли документ. во-вторых, нельзя в модуле дока менять реквизиты документов
23 SnarkHunter
 
24.04.12
13:26
Что такое "картирдж"?
24 viktor_vv
 
24.04.12
13:26
(21) Ну ты вот, прямо на ходу, рубишь телпатичкие способности :).
25 SnarkHunter
 
24.04.12
13:27
>> во-вторых, нельзя в модуле дока менять реквизиты документов

Давно?
26 Он
 
24.04.12
13:27
(21) Отладчик в зубы.
Точки останова:

Если ДокОснование.ДокОснование.Вид()="ЗаказНаряд" Тогда
 ДокЗаказНаряд = СоздатьОбъект("Документ.ЗаказНаряд");
27 viktor_vv
 
24.04.12
13:27
* телепатические.
28 Арчи
 
24.04.12
13:28
viktor_vv, спасибо!
В Реализации в обработке проведения вызывается процедура ПроведениеПоРегистрам, которая затерает старые движения, в том числе и мои.
29 andrewks
 
24.04.12
13:29
(25) а это кому как. мне, например, изначально было нельзя. но если на правила качественного кодинга наплевать, можно всё
30 SnarkHunter
 
24.04.12
13:35
(29)Правила - это не догма, а всего лишь средство...
31 NS
 
24.04.12
13:41
(29) ИТРП полностью написана на записи в служебные документы.
Если документ невозможно открыть (блокировать), или если блокировка нормально отрабатывается - то почему бы и не записать в него при проведении?
32 andrewks
 
24.04.12
13:51
(30) вот тут ты чертовски прав. если охота потом разгребать ситуации по типу, как в (0) - я ж не запрещаю, жгите

можно и весь код в модуль уложить без использования процедур и функций, и строить алгоритм проведения дока на состоянии реквизитов элементов справочников и других документов, да и много чего ещё можно
33 SnarkHunter
 
24.04.12
14:05
(32)При желании можно любую здравую мысль довести до абсурда... Можно искуственно ограничивать себя, загоняя в прокрустово ложе... А можно разумно подходить к процессу, соблюдая баланс жёстких правил и здравого смысла...
34 andrewks
 
24.04.12
14:13
(33) дьявол, как всегда, кроется в деталях. если профессиональный гонщик входит в поворот на скорости 150 км/час, это можно расценить как высший пилотаж, а если так делает новичок со стажем вождения 1 мес - только как головотяпство