Имя: Пароль:
1C
1С v8
v8: Мистика ? Проведение регистр сведений
0 artem_biz
 
27.08.12
10:52
При первом провидение нет записей в регистре "СтатусКарточкиПрограммыЛояльности" при втором они появляются при третьем опять нет ??? Код :

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   
   // ОСНОВНЫЕ РЕГИСТРЫ
   
   
       Если  КоличествоБонусовНачислено <> 0 Тогда
           // Приход
           ДвижениРег = Движения.БонусыПрограммыЛояльности;
           Движение = ДвижениРег.Добавить();
           Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
           Движение.Период = Дата;
           Движение.КарточкаПрограммыЛояльности = КарточкаПрограммыЛояльности;
           Движение.СуммаПроцентов = СуммаПроцентовНачислено;
           Движение.КоличествоБонусов = КоличествоБонусовНачислено;
           ДвижениРег.Записать();
           
       КонецЕсли;
       
       Если  КоличествоБонусовСписано <> 0 Тогда
           // Расход
           ДвижениРег = Движения.БонусыПрограммыЛояльности;
           Движение = ДвижениРег.Добавить();
           Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
           Движение.Период = Дата;
           Движение.КарточкаПрограммыЛояльности = КарточкаПрограммыЛояльности;
           Движение.СуммаПроцентов = СуммаПроцентовСписано;
           Движение.КоличествоБонусов = КоличествоБонусовСписано;
           ДвижениРег.Записать();
           
       КонецЕсли;
       
       СтатусКарточки = ПрограммаЛояльности.ВернутьСтатусПоКарточке(Дата,КарточкаПрограммыЛояльности);
       СтатусПоНачисленнымПрцентам = ПрограммаЛояльности.ВернутьСтатусПоСуммеПроцентов(Дата,КарточкаПрограммыЛояльности,СуммаПроцентовНачислено - СуммаПроцентовСписано);
       
       Если СтатусКарточки <> СтатусПоНачисленнымПрцентам Тогда
           
           ДвижениеСтатус = Движения.СтатусКарточкиПрограммыЛояльности.Добавить();
           ДвижениеСтатус.Период = Дата;
           ДвижениеСтатус.КарточкаПрограммыЛояльности = КарточкаПрограммыЛояльности;
           ДвижениеСтатус.СтатусПрограммыЛояльности = СтатусПоНачисленнымПрцентам;
           
       КонецЕсли;

   
   
КонецПроцедуры
1 andrewks
 
27.08.12
10:52
провЕдение
2 Godofsin
 
27.08.12
10:53
(1)+1+1+1...
3 artem_biz
 
27.08.12
10:54
Условие "Если СтатусКарточки <> СтатусПоНачисленнымПрцентам Тогда" всегда истина
4 ssh2006
 
27.08.12
10:54
(3) врядли
5 shamannk
 
27.08.12
10:54
отладчиг что говорит?
6 artem_biz
 
27.08.12
10:56
говорит что в  ДвижениеСтатус = Движения.СтатусКарточкиПрограммыЛояльности.Добавить();
             ДвижениеСтатус.Период = Дата;
             ДвижениеСтатус.КарточкаПрограммыЛояльности = КарточкаПрограммыЛояльности;
             ДвижениеСтатус.СтатусПрограммыЛояльности = СтатусПоНачисленнымПрцентам;
заходит всегда !!!
7 Kashemir
 
27.08.12
11:00
Проверь признак автоматической очистки регистра при проведении / либо наличие явной очистки при его отсутствии
8 ptiz
 
27.08.12
11:01
(6) "Не верю"
9 artem_biz
 
27.08.12
11:01
уже проверил Удалять движения : Удалять автоматически !!!
10 Kashemir
 
27.08.12
11:02
Также проверь подписки обработчиков как документа так и регистра. Может где-то явно чистится либо перезаписывается через .Записать(истина)
11 SUA
 
27.08.12
11:04
Мистика. Как движения проверяются?
12 artem_biz
 
27.08.12
11:07
Визуально в регистре
13 artem_biz
 
27.08.12
11:23
СтатусКарточки я получаю из регистра "СтатусКарточкиПрограммыЛояльности" возможно в єтом проблема потому как в отладчике СтатусКарточки.ВерсияДанных = Ошибка чтения значения
14 ptiz
 
27.08.12
11:26
Похоже, ты делаешь запись в регистр, и тут же проверяешь наличие этой записи (и вот здесь зарыт косяк).
15 artem_biz
 
27.08.12
11:37
Вот таким образом решил проблему

Если СтатусКарточки <> СтатусПоНачисленнымПрцентам Тогда
           ДвижениеСтатус = Движения.СтатусКарточкиПрограммыЛояльности;
           Движение =  ДвижениеСтатус.Добавить();
           Движение.Период = Дата;
           Движение.КарточкаПрограммыЛояльности = КарточкаПрограммыЛояльности;
           Движение.СтатусПрограммыЛояльности = СтатусПоНачисленнымПрцентам;
           ДвижениеСтатус.Записать();
       КонецЕсли;
16 artem_biz
 
27.08.12
11:37
Всем спасибо !!!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн