![]() |
![]() |
![]() |
|
v7: Удаление периодических реквизитов при отмене проведения | ☑ | ||
---|---|---|---|---|
0
es3000
16.04.07
✎
15:38
|
Стоит такая задача: для контрагента надо задавать некоторое периодическое значение. Если это значение для контарегнта не задано, то берется значение периодической константы.
Это все я сделал документом "ВводЗначения", в котором указывается общее для всех контрагшентов значение и в табличной части можно задать значение для каждого конкретного контрагента. По идее при отмене проведения этого документа все периодические значения должны удалиться и из справочника и у константы. А у меня этого не происходит. Или я в чем то не прав? |
|||
1
Фокусник
16.04.07
✎
15:41
|
(0) С константой не прав. Со справочником прав и ставить реквизит нужно через УстановитьРеквизитСправочника
|
|||
2
Оберон
16.04.07
✎
15:42
|
при отмене проведения удаляются только движения (проводки,операции)
значения переодических реквизитов остаются, т.е. их удаление надо прописывать ручками.. |
|||
3
Вильям
16.04.07
✎
15:49
|
(2) -1
|
|||
4
France
16.04.07
✎
15:50
|
3+ -1
|
|||
5
es3000
16.04.07
✎
15:51
|
а как удалить периодическое значение константы?
|
|||
6
France
16.04.07
✎
15:53
|
4 +
УстановитьРеквизитСправочника(<?>,,,,,,); |
|||
7
ado
16.04.07
✎
15:55
|
(5) Объект "Периодический"
|
|||
8
es3000
16.04.07
✎
16:16
|
Сделал через УстановитьРеквизитСПравочника, все равно при отмене проведения периодическое значение не удаляется :(
|
|||
9
Ёпрст
гуру
16.04.07
✎
16:30
|
(8) ОчиститьДвижения воткни в модуль.
|
|||
10
у лю 427
16.04.07
✎
16:41
|
акуе... пардон, просто дятлы...
|
|||
11
Соратник
16.04.07
✎
16:46
|
(0)При отмене проведения удаляются только те значения, которые при проведении были установлены документом через УстановитьРеквизитСправочника...РТФМ
|
|||
12
es3000
16.04.07
✎
16:51
|
(9) если я вставляю вызов "ОчиститьДвижения" в обработку отмены проведенеия , то при отмене проведения пишет: "Недопустимая операция"
(11) В том то и дело, что сейчас я периодические реквизиты справочника устанавливаю через "УстановитьРеквизитСправочника", но при отмене проведения значение этого периодического реквизита все равно остается |
|||
13
1Сергей
16.04.07
✎
16:51
|
(0)Галки "Изменяется документом" и "Ручное изменение"?
|
|||
14
es3000
16.04.07
✎
16:51
|
(13) щас проверю
|
|||
15
es3000
16.04.07
✎
16:52
|
(10) блин, умник ....
ты постоянно вставляешь какие-то замечания насчет дятлов, хотя толком ни разу не помог. Если все знаешь, то помогай, для этого форум и создан. А если хочешь умничать заведи себе отдельный форум и там дрочи. В психиатрии таких нарциссами называют Извините, товарищи |
|||
16
es3000
16.04.07
✎
16:58
|
(13) обе галки поставил, все равно то же самое
|
|||
17
1Сергей
16.04.07
✎
17:01
|
Попробуй
ОчиститьДвижения("Справочник"); |
|||
18
Ёпрст
гуру
16.04.07
✎
17:03
|
(16) У документа стоит "автоматическое удаление движений" ? ... Если нет, то ОчиститьДвижения("Справочник"); воткни в ОбработкаПроведения.
|
|||
19
AlexNew
16.04.07
✎
17:03
|
Если ты их раньше записал без УстановитьРеквизитСправочника, то они автоматом и не удалятся. Сделай новый.
|
|||
20
1Сергей
16.04.07
✎
17:07
|
Интересно, а если убрать галку Ручное изменение, они слетят все к чертовой матери?
|
|||
21
es3000
16.04.07
✎
17:10
|
(20) Я как раз убрал у реквизита галку "Редактируется вручную", ничего не слетело и теперь при отмене проведения все исчезает :)
В этом было дело Всем спасибо :) |
|||
22
1Сергей
16.04.07
✎
17:11
|
(21) Ты глянь хорошо, может всё-таки что-то слетело :)
|
|||
23
es3000
16.04.07
✎
17:21
|
А как можно не прочитать значение периодического реквизита на дату, а просто узнать установлено оно или нет?
Дело в том, что если ничего не установлено, то "Получить()" возвращает 0. Как понять то ли это 0 установлен, то ли ничего не установлено. В программе должны выполняться разные действия в зависимости от этого |
|||
24
AlexNew
16.04.07
✎
17:23
|
Объект "Периодический"
|
|||
25
zavsom
16.04.07
✎
17:25
|
СтрокаСтатуса("Выборка значений периодических констант...");
ТЗ.НоваяКолонка("Имя", "Строка"); ТЗ.НоваяКолонка("Значение"); Для Сч=1 По Метаданные.Константа() Цикл Если Метаданные.Константа(Сч).Периодический=1 Тогда ИмяК=Метаданные.Константа(Сч).Идентификатор; ТЗ.НоваяСтрока(); ТЗ.Имя=ИмяК; ТЗ.Значение=Константа.ПолучитьАтрибут(ИмяК).Получить(ДатаСвертки); КонецЕсли; КонецЦикла; |
|||
26
zavsom
16.04.07
✎
17:26
|
а теперь очистим
|
|||
27
zavsom
16.04.07
✎
17:27
|
Функция ОбработкаПериодическихКонстант(ТЗ, Режим)
// Режим=1 : Заполнение таблицы; // Режим=2 : Удаление истории и запись по таблице; Если Режим=1 Тогда // заполнение таблицы СтрокаСтатуса("Выборка значений периодических констант..."); ТЗ.НоваяКолонка("Имя", "Строка"); ТЗ.НоваяКолонка("Значение"); Для Сч=1 По Метаданные.Константа() Цикл Если Метаданные.Константа(Сч).Периодический=1 Тогда ИмяК=Метаданные.Константа(Сч).Идентификатор; ТЗ.НоваяСтрока(); ТЗ.Имя=ИмяК; ТЗ.Значение=Константа.ПолучитьАтрибут(ИмяК).Получить(ДатаСвертки); КонецЕсли; КонецЦикла; ИначеЕсли Режим=2 Тогда // запись периодических констант ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()<>0 Цикл Состояние("Обработка истории константы : "+ТЗ.Имя); // очистка истории Пер=СоздатьОбъект("Периодический"); Пер.ИспользоватьОбъект(ТЗ.Имя); ФлагВыхода=0; Пока Пер.ВыбратьЗначения(, ДатаСвертки)<>0 Цикл Пока Пер.ПолучитьЗначение()<>0 Цикл //***ШО Если ПустоеЗначение(Пер.ТекущийДокумент()) = 1 Тогда //Сообщить(Пер.ТекущийОбъект()); Пер.Удалить(); Иначе ФлагВыхода=1; КонецЕсли; //***шо КонецЦикла; Если ФлагВыхода=1 Тогда Сообщить("Вот и выход"); Прервать; КонецЕсли; КонецЦикла; // запись текущего значения Если ПустоеЗначение(ТЗ.Значение)=0 Тогда Пер.Значение=ТЗ.Значение; Пер.ДатаЗнач=ДатаСвертки; Пер.Записать(); КонецЕсли; КонецЦикла; КонецЕсли; Возврат 0; КонецФункции |
|||
28
zavsom
16.04.07
✎
17:31
|
все очень просто - стандартная обработка свертки базы в конфигурации "АЗК+Нефтебаза"
|
|||
29
es3000
16.04.07
✎
17:38
|
спасибо еще раз
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |