|
Очистить запись регистра накоплений | ☑ | ||
---|---|---|---|---|
0
b7music
26.03.15
✎
12:03
|
Всем привет!
Подскажите, пожалуйста. Есть документ заказ-наряд. У него 3 статуса заказа В Работе Выполнен Отменен В документ добавлен реквизит "ЧистаяПрибыль". Указывается в каждом документе индивидуально. После проведения документа, независимо от статуса заказа, данные падают в регистр накопления "ЧистаяПРибыль". Необходимо чтобы при статусе "Отменен" данные в регистр не попадали, а если есть существующие, то удалялись. Пробую сделать через подписку на событие Процедура ПодпискаЧистаяПрибыльПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт Если (Источник.СостояниеЗаказа = Перечисления.СтатусыЗаказов.ВРаботе) И (Источник.Закрыт = Истина) Тогда Источник.Движения.ЧистаяПрибыль.Очистить(); Источник.Движения.ЧистаяПрибыль.Записывать = Истина; КонецЕсли; КонецПроцедуры Но не работает :( В модуле объекта указано движение // регистр ЧистаяПрибыль Движения.ЧистаяПрибыль.Записывать = Истина; Движение = Движения.ЧистаяПрибыль.Добавить(); Движение.Период = Дата; Движение.Склад = СтруктурнаяЕдиницаРезерв; Движение.Сумма = СуммаДокумента; Движение.ЧистаяПрибыль = ЧистаяПрибыль; Подскажите |
|||
1
kosts
26.03.15
✎
12:06
|
(0) Очищать специально не надо. Т.к. при каждом проведении движения так и так очищаются. Надо при статусе отменен не допустить записи в регистр. Ну конечно что этот регистр является движением, а не отдельным.
|
|||
2
b7music
26.03.15
✎
12:09
|
Подробнее
"регистр является движением, а не отдельным." |
|||
3
anatoly
26.03.15
✎
12:10
|
писать в РН через попдиску - это вредительство.
если только в РС - вести логи изменений. (2) документ является регистратором этого регистра? |
|||
4
sFAQer
26.03.15
✎
12:10
|
(0) Подписка нужна на событие ОбработкаПроведения а не перед записью, в перед записью у тебя ещё не сформированы движения...
|
|||
5
b7music
26.03.15
✎
12:11
|
Да, документ является регистратором. Регистр сам делал.
|
|||
6
sFAQer
26.03.15
✎
12:11
|
(3) Подписка не пишет, а очищает движения у дока, перечитай (0)
|
|||
7
kosts
26.03.15
✎
12:12
|
(5) В процедуре обработка проведения поставь условие если
Движения.ЧистаяПрибыль.Записывать = Истина; Если Не отменен Тогда Движение = Движения.ЧистаяПрибыль.Добавить(); Движение.Период = Дата; Движение.Склад = СтруктурнаяЕдиницаРезерв; Движение.Сумма = СуммаДокумента; Движение.ЧистаяПрибыль = ЧистаяПрибыль; КонецЕсли; |
|||
8
D_E_S_131
26.03.15
✎
12:12
|
(1) "Т.к. при каждом проведении движения так и так очищаются." — а для чего тогда сделано свойство "Удаление движений" у документа?
|
|||
9
Nuobu
26.03.15
✎
12:18
|
(8) Если выставить галочку "Не удалять автоматически", то движения, без кнопки "Удаление движений" останутся. Более того, при определённых обстоятельствах, могут появиться новые)).
(0) Можно насильно очистить Движения.ЧистаяПрибыль.Очистить(). Это чтоб наверочку. |
|||
10
b7music
26.03.15
✎
12:25
|
(7)
Работает, но суть в том, что как такового "Отменен" нету. Статус = "В работе" СостояниеЗаказа = СостояниеВРаботе; Объект.Закрыт = Ложь; Статус = "Выполнен" Тогда Объект.СостояниеЗаказа = СостояниеВыполнен; Объект.Закрыт = Истина; Статус = "Отменен" Тогда Объект.СостояниеЗаказа = СостояниеВРаботе; Объект.Закрыт = Истина; Пробую Движения.ЧистаяПрибыль.Записывать = Истина; Если Не СостояниеЗаказа.СтатусЗаказа = Перечисления.СтатусыЗаказов.ВРаботе и Закрыт = Истина Тогда Движение = Движения.ЧистаяПрибыль.Добавить(); Движение.Период = Дата; Движение.Склад = СтруктурнаяЕдиницаРезерв; Движение.Сумма = СуммаДокумента; Движение.ЧистаяПрибыль = ЧистаяПрибыль; КонецЕсли; Так он теперь и при статусе Вработе делает тож самое что и в статусе отменен. |
|||
11
kosts
26.03.15
✎
12:29
|
(10) Создай новую функцию СоздаватьДвижения() и в ней уже накручивай логику отменен он там или не отменен, в работе или закрыт. К первоначальному вопросу уже не относиться.
Если СоздаватьДвижения() Тогда Движение = Движения.ЧистаяПрибыль.Добавить(); Движение.Период = Дата; КонецЕсли; |
|||
12
b7music
26.03.15
✎
15:11
|
Что-то не допру :(
|
|||
13
anatoly
26.03.15
✎
15:14
|
(6) ну очистка как бы тоже запись. в любом случае в подписке такое делать - зло. особенно если регистр подчиненный.
|
|||
14
kosts
26.03.15
✎
15:18
|
(12) Не нужно удалять, надо всего лишь не создавать
|
|||
15
b7music
26.03.15
✎
15:39
|
Сделал
Функция СоздаватьДвижения() Если Перечисления.СтатусыЗаказов.ВРаботе И Закрыт = Истина Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции Теперь ругается {Документ.ЗаказПокупателя.МодульОбъекта(1539)}: Преобразование значения к типу Булево не может быть выполнено Если Перечисления.СтатусыЗаказов.ВРаботе И Закрыт = Истина Тогда |
|||
16
Mankubus
26.03.15
✎
15:42
|
(15) Перечисления.СтатусыЗаказов.ВРаботе И Перечисления.СтатусыЗаказов.Закрыт
|
|||
17
b7music
26.03.15
✎
15:51
|
Все равно таже самая ошибка. В Перечеслениях нет Закрыт. http://i59.fastpic.ru/big/2015/0326/d8/c07a9af94cbf7e18faa56026c109b7d8.jpg
|
|||
18
b7music
26.03.15
✎
17:34
|
Уже весь моск взорвал.
Если делаю так: Если ЭтотОбъект.СостояниеЗаказа = "ВРаботе" И ЭтотОбъект.Закрыт = Истина Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; То он почему то возвращает истину, хотя должен ложь. http://i57.fastpic.ru/big/2015/0326/aa/347518e03e3b648bd51f1ac8e61b44aa.jpg http://i67.fastpic.ru/big/2015/0326/38/20ae852707c5d5f21e585937bea4d138.jpg ЧЯДН? |
|||
19
ДенисЧ
26.03.15
✎
17:37
|
(18) У тебя ссылка на справочник никогда не будет равна строке
|
|||
20
b7music
26.03.15
✎
17:40
|
Через перечисления не пашет, через справочник тоже, так как же быть?
|
|||
21
kosts
27.03.15
✎
07:42
|
(20) В каком смысле не пашет?...
Если СтатусЗаказа = Перечисления.СтатусыЗаказов.ВРаботе Тогда |
|||
22
b7music
27.03.15
✎
07:58
|
Емае! Сделал так
Если ЭтотОбъект.СостояниеЗаказа.СтатусЗаказа = Перечисления.СтатусыЗаказов.ВРаботе И ЭтотОбъект.Закрыт = Истина Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; Все заработало! Большое всем спасибо! |
|||
23
kosts
27.03.15
✎
08:00
|
(22) а как же " Необходимо чтобы при статусе "Отменен" данные в регистр не попадали", а тут получается при работе не попадут
|
|||
24
b7music
27.03.15
✎
08:24
|
При работе попадут. Если состояние ЗН в работе, то тогда Закрыт = Ложь. (10)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |