|
Пропадают записи из регистра накопления при сохранении документа | ☑ | ||
---|---|---|---|---|
0
Double_Medved
28.01.13
✎
18:13
|
Подскажите плиз, столкнулся с такой штукой: УТ11, дописанная. Дописано что в ЧекеККМ при проведении создаются дополнительные записи в регистр накопления "КартыЛояльности". Все работает нормально, но потом, если документ открыть и нажать "Сохранить" то запись пропадает! Подскажите плиз, что там такое может удалять записи, учитывая что этого регистра в типовой вообще нет!
|
|||
1
Бешеная Нога
28.01.13
✎
18:14
|
зная предыдущие темы автора - эта ветка на 100500 постов
|
|||
2
Kreont
28.01.13
✎
18:14
|
ну показывай код, тот что делал для добавления записей в РН
|
|||
3
Галахад
гуру
28.01.13
✎
18:16
|
Открыть и сохранить "непроведенный" чек?
|
|||
4
Aprobator
28.01.13
✎
18:17
|
при перепроведении все пропадает и отладчик не знает где?
|
|||
5
Double_Medved
28.01.13
✎
18:19
|
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения); Документы.ЧекККМ.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства); ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект); ЗапасыСервер.ОтразитьСвободныеОстатки(ДополнительныеСвойства, Движения, Отказ); ЗапасыСервер.ОтразитьТоварыНаСкладах(ДополнительныеСвойства, Движения, Отказ); ДенежныеСредстваСервер.ОтразитьДенежныеСредстваВКассахККМ(ДополнительныеСвойства, Движения, Отказ); ДенежныеСредстваСервер.ОтразитьРасчетыПоЭквайрингу(ДополнительныеСвойства, Движения, Отказ); СкладыСервер.ОтразитьДвиженияСерийТоваров(ДополнительныеСвойства, Движения, Отказ); СформироватьСписокРегистровДляКонтроля(); ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект); ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ); ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства); //Начало //Прочитаем значение Скидки по КартеЛояльности из Регистра сведений КартыЛояльностиСведения СкидкаПоКарте = 0; Если ЗначениеЗаполнено(КартаЛояльности) Тогда Если Акция = Ложь Тогда НаборЗаписей = РегистрыСведений.КартыЛояльностиСведения.СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); Для Каждого Запись из НаборЗаписей Цикл Если Запись.КартаЛояльности.Наименование = КартаЛояльности.Наименование Тогда СкидкаПоКарте = Запись.ПроцентСкидки; КонецЕсли; КонецЦикла; //Пересчитаем строки документа согласно скидке по карте Для Каждого ТекСтрокаТовары Из Товары Цикл ТекСтрокаТовары.ПроцентАвтоматическойСкидки = СкидкаПоКарте; ТекСтрокаТовары.СуммаАвтоматическойСкидки = Окр(ТекСтрокаТовары.Цена*(СкидкаПоКарте/100))*ТекСтрокаТовары.Количество; ТекСтрокаТовары.Сумма = Окр(ТекСтрокаТовары.Цена*(1-(СкидкаПоКарте/100)))*ТекСтрокаТовары.Количество; КонецЦикла; КонецЕсли; КонецЕсли; // Пересчитаем согласно максимальной скидки на товар - //Если максимальная скидка меньше предоставляемой по карте - //То применим вместо скидки по карте максимальную скидку Если ЗначениеЗаполнено(КартаЛояльности) Тогда Если Акция = Ложь Тогда Для Каждого ТекСтрокаТовары Из Товары Цикл н = ТекСтрокаТовары.Номенклатура.Родитель; Если (н.ЭтоГруппа = Истина) и (н.МаксимальнаяСкидка < ТекСтрокаТовары.ПроцентАвтоматическойСкидки) Тогда ТекСтрокаТовары.ПроцентАвтоматическойСкидки = н.МаксимальнаяСкидка; ТекСтрокаТовары.СуммаАвтоматическойСкидки = Окр(ТекСтрокаТовары.Цена*(н.МаксимальнаяСкидка/100))*ТекСтрокаТовары.Количество; ТекСтрокаТовары.Сумма = Окр(ТекСтрокаТовары.Цена*(1-(н.МаксимальнаяСкидка/100)))*ТекСтрокаТовары.Количество; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; //конец КонецПроцедуры |
|||
6
Double_Medved
28.01.13
✎
18:20
|
Просто при сохранении он что делает? Перепроводит ведь? Может там что-то типа "Очистить движения" или вроде того?
|
|||
7
Aprobator
28.01.13
✎
18:22
|
(5) фига се - при обработке проведения документа содержимое его ТЧ меняется? Нехило.
|
|||
8
Kreont
28.01.13
✎
18:23
|
(5) код ниче не пишет в РН, только читает :)
|
|||
9
Aprobator
28.01.13
✎
18:26
|
еще как пишет.
|
|||
10
Double_Medved
28.01.13
✎
18:26
|
Ой блин сорри это не то... Давно писал, перепутал.
&НаСервере Процедура РасчетДвиженийПоКарте() Если ЗначениеЗаполнено(Объект.КартаЛояльности) Тогда //Запишем в Регистр накопления КартыЛояльностиНакопление данные из каждой строки таблицы Товары НаборЗаписей = РегистрыНакопления.КартыЛояльностиНакопление.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка); Для Каждого ТекСтрокаТовары из Объект.Товары Цикл НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура = ТекСтрокаТовары.Номенклатура; НоваяЗапись.Карта = Объект.КартаЛояльности; НоваяЗапись.СуммаБезСкидки = ТекСтрокаТовары.Сумма; НоваяЗапись.СуммаСкидки = ТекСтрокаТовары.СуммаАвтоматическойСкидки; НоваяЗапись.Цена = ТекСтрокаТовары.Цена; НоваяЗапись.Период = Объект.Дата; НоваяЗапись.Количество = ТекСтрокаТовары.Количество; НоваяЗапись.ПроцентСкидки = ТекСтрокаТовары.ПроцентАвтоматическойСкидки; КонецЦикла; НаборЗаписей.Записать(); //Запишем в Регистр Сведений КартыЛояльностиСведения Данные о накоплении и скидке по карте //согласно справочнику пороговые суммы скидки по карте СуммаНакоплПоКарте = 0; СкидПоКарте = 0; НаборЗаписей = РегистрыСведений.КартыЛояльностиСведения.СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); Для Каждого Запись из НаборЗаписей Цикл Если Запись.КартаЛояльности.Наименование = Объект.КартаЛояльности.Наименование Тогда СуммаНакоплПоКарте = Запись.СуммаНакопления; СкидПоКарте = Запись.ПроцентСкидки; КонецЕсли; КонецЦикла; СуммаНакоплПоКарте = СуммаНакоплПоКарте + Объект.СуммаДокумента; //У дежурной карты процент скидки не будет меняться Если Объект.КартаЛояльности.ДежурнаяКарта = Ложь Тогда ВыборкаПороговыхСумм = Справочники.ПороговыеСуммыСкидкиПоКарте.Выбрать(); Пока ВыборкаПороговыхСумм.Следующий() = 1 Цикл Если (СуммаНакоплПоКарте>=ВыборкаПороговыхСумм.НачальнаяСуммаНакопления) и (СуммаНакоплПоКарте<=ВыборкаПороговыхСумм.КонечнаяСуммаНакопления) Тогда СкидПоКарте = ВыборкаПороговыхСумм.ПроцентСкидки; КонецЕсли; КонецЦикла; КонецЕсли; МенеджерЗаписи = РегистрыСведений.КартыЛояльностиСведения.СоздатьМенеджерЗаписи(); МенеджерЗаписи.КартаЛояльности = Объект.КартаЛояльности.Ссылка; МенеджерЗаписи.ПроцентСкидки = СкидПоКарте; МенеджерЗаписи.СуммаНакопления = СуммаНакоплПокарте; Попытка МенеджерЗаписи.Записать(); Исключение Сообщить(Описаниеошибки()); КонецПопытки; КонецЕсли; КонецПроцедуры |
|||
11
Aprobator
28.01.13
✎
18:27
|
впрочем могу ошибаться, ибо состав процедур и функций общих модулей не вижу.
|
|||
12
Kreont
28.01.13
✎
18:32
|
да, тут без отладчика не разберешь :) столько условий и переходов.
Но вот Попытка в таких местах лучше не использовать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |