|
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 мес - только как головотяпство
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |