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