|
Как очистить движение при перепроведении | ☑ | ||
---|---|---|---|---|
0
Klesk
08.12.12
✎
08:10
|
УТ 11. ПКО. Автоматическое удаление движений не стоит.
Хочу сделать запись в регистр, если сначала по реализации (расчетный документ) был сделан приход по регистру и есть остаток: Запрос="ВЫБРАТЬ | &Период КАК Период, | &Период КАК ДатаРегистратора, | &Период КАК ДатаПлатежа, | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения, | ДенежныеСредстваУПодотчетныхЛицОстатки.Организация, | ДенежныеСредстваУПодотчетныхЛицОстатки.ПодотчетноеЛицо, | ДенежныеСредстваУПодотчетныхЛицОстатки.Валюта, | ДенежныеСредстваУПодотчетныхЛицОстатки.РасчетныйДокумент, | ВЫБОР | КОГДА ДенежныеСредстваУПодотчетныхЛицОстатки.СуммаОстаток > ПриходныйКассовыйОрдер.СуммаДокумента | ТОГДА ПриходныйКассовыйОрдер.СуммаДокумента | ИНАЧЕ ДенежныеСредстваУПодотчетныхЛицОстатки.СуммаОстаток | КОНЕЦ КАК СУММА |ИЗ | РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.Остатки КАК ДенежныеСредстваУПодотчетныхЛицОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер | ПО ДенежныеСредстваУПодотчетныхЛицОстатки.ПодотчетноеЛицо = ПриходныйКассовыйОрдер.ДокументОснование.Водитель | И ДенежныеСредстваУПодотчетныхЛицОстатки.РасчетныйДокумент = ПриходныйКассовыйОрдер.ДокументОснование | И ДенежныеСредстваУПодотчетныхЛицОстатки.Валюта = ПриходныйКассовыйОрдер.Валюта | И ДенежныеСредстваУПодотчетныхЛицОстатки.Организация = ПриходныйКассовыйОрдер.Организация |ГДЕ | ПриходныйКассовыйОрдер.Ссылка = &Ссылка | И ПриходныйКассовыйОрдер.Ссылка.СписыватьДолгЗаВодителем = ИСТИНА"; проблема в следующем, если отменить проведение реализации, то при перепроведении ПКО, он находит запись свою, и оставляет её. Подозреваю, что надо сюда что то добавить, но не знаю что: Процедура ПодготовитьНаборыЗаписейКРегистрацииДвижений(Объект) Экспорт Для Каждого НаборЗаписей Из Объект.Движения Цикл Если НаборЗаписей.Количество() > 0 Тогда НаборЗаписей.Очистить(); КонецЕсли; КонецЦикла; |
|||
1
Ns33
08.12.12
✎
10:21
|
+ НаборЗаписей.Записать();
|
|||
2
Klesk
08.12.12
✎
10:38
|
для всех записей НаборЗаписей.Количество() = 0
т.е. она не поадает в НаборЗаписей.Очистить(); |
|||
3
Ns33
08.12.12
✎
11:16
|
(2) Ну те же их не прочитал (НаборЗаписей.Прочитать()), поэтому все наборы при создании пустые, а Записать() - записывает пустой набор, т.е. перезаписывает существующие в базе.
|
|||
4
Klesk
08.12.12
✎
11:20
|
(3) я все боюсь переписывать, не зря наверно в типовой они не переписываются, хочу только свой
|
|||
5
Armando
08.12.12
✎
11:34
|
я не понял в чем проблема
ты добавил свой регистр и двигаешь его? а он не двигается? или что? и вот еще глаза режет: "И ПриходныйКассовыйОрдер.Ссылка.СписыватьДолгЗаВодителем = ИСТИНА" |
|||
6
Рэйв
08.12.12
✎
11:37
|
Движения.ИмяРегистра.Очистить()
|
|||
7
Рэйв
08.12.12
✎
11:37
|
В обработке проведения
|
|||
8
Рэйв
08.12.12
✎
11:38
|
Вы как первый раз замужем чесслово!:-)
|
|||
9
Klesk
08.12.12
✎
18:30
|
а что означает
НаборЗаписей.Количество() и почему оно равно нулю, хотя движения есть. |
|||
10
Тьма
08.12.12
✎
18:35
|
(9)см (3)
|
|||
11
Klesk
08.12.12
✎
18:39
|
(10) это не я, это в типовой
|
|||
12
Klesk
08.12.12
✎
18:43
|
В УТ 11 при неоперативном проведении, видимо совсем не чистятся движения, не могу найти пример как это сделать, видимо изначально, что то криво у меня в запросе
|
|||
13
Рэйв
08.12.12
✎
18:44
|
Это наверное так посовременному...
|
|||
14
Рэйв
08.12.12
✎
18:44
|
Рука-лицо
|
|||
15
Рэйв
08.12.12
✎
18:45
|
%:-)))
|
|||
16
Klesk
08.12.12
✎
18:55
|
ВЫБРАТЬ
&Период КАК Период, &Период КАК ДатаРегистратора, &Период КАК ДатаПлатежа, ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Организация, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.ПодотчетноеЛицо, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Валюта, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.РасчетныйДокумент, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.СуммаКонечныйОстаток, ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Регистратор ИЗ РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.ОстаткиИОбороты(, , Регистратор, , ) КАК ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ПО ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.ПодотчетноеЛицо = ПриходныйКассовыйОрдер.ДокументОснование.Водитель И ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.РасчетныйДокумент = ПриходныйКассовыйОрдер.ДокументОснование И ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Валюта = ПриходныйКассовыйОрдер.Валюта И ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Организация = ПриходныйКассовыйОрдер.Организация ГДЕ ПриходныйКассовыйОрдер.Ссылка = &Ссылка И ПриходныйКассовыйОрдер.Ссылка.СписыватьДолгЗаВодителем = ИСТИНА И ДенежныеСредстваУПодотчетныхЛицОстаткиИОбороты.Регистратор <> &Ссылка |
|||
17
Klesk
08.12.12
✎
18:57
|
так наверно дольше, зато не надо перелапачивать общий модуль ПроведениеСервер
если кто то подскажет как по типовому в типовой УТ11 чистятся движения без автомачиского удаления движений, буду признателен. |
|||
18
Klesk
08.12.12
✎
19:42
|
кажется догнал
ДвиженияПоПодотчетникам=ДокументСсылка.ПолучитьОбъект().Движения.Найти("ДенежныеСредстваУПодотчетныхЛиц"); Если ДвиженияПоПодотчетникам<>Неопределено Тогда ДвиженияПоПодотчетникам.Очистить(); КонецЕсли; Так правильно? |
|||
19
Klesk
08.12.12
✎
21:25
|
Так правильней?
|
|||
20
hhhh
08.12.12
✎
23:02
|
(18) объект получать необязательно. можно быстрее, без получения объекта.
Набор = РегистрыНакопления.ДенежныеСредстваУПодотчетныхЛиц.СоздатьНаборЗаписей(); Набор.Отбор.регистратор.Установить(ДокументСсылка); Набор.очистить(); Набор.Записать(); |
|||
21
Klesk
08.12.12
✎
23:22
|
(20) спасибо
|
|||
22
zak555
09.12.12
✎
13:29
|
(20) зачем очистить, если у записать есть "параметр" перезаписи
|
|||
23
Klesk
10.12.12
✎
06:00
|
А если такой вариант:
"ВЫБРАТЬ &Период КАК Период, &Период КАК ДатаРегистратора, &Период КАК ДатаПлатежа, ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения, ДенежныеСредстваУПодотчетныхЛицОстатки.Организация КАК Организация, ДенежныеСредстваУПодотчетныхЛицОстатки.ПодотчетноеЛицо КАК ПодотчетноеЛицо, ДенежныеСредстваУПодотчетныхЛицОстатки.Валюта КАК Валюта, ДенежныеСредстваУПодотчетныхЛицОстатки.РасчетныйДокумент КАК РасчетныйДокумент, ВЫБОР КОГДА ДенежныеСредстваУПодотчетныхЛицОстатки.СуммаОстаток > ПриходныйКассовыйОрдер.СуммаДокумента ТОГДА ПриходныйКассовыйОрдер.СуммаДокумента ИНАЧЕ ДенежныеСредстваУПодотчетныхЛицОстатки.СуммаОстаток КОНЕЦ КАК Сумма, ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеДолгаИсполнителя) КАК ХозяйственнаяОперация, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.СписаниеДолгаИсполнителя) КАК СтатьяДвиженияДенежныхСредств, ПриходныйКассовыйОрдер.ДокументОснование.ЗаказКлиента КАК Заказ ИЗ РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.Остатки(&МоментВремениИсключая, ) КАК ДенежныеСредстваУПодотчетныхЛицОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер ПО ДенежныеСредстваУПодотчетныхЛицОстатки.ПодотчетноеЛицо = ПриходныйКассовыйОрдер.ДокументОснование.Водитель И ДенежныеСредстваУПодотчетныхЛицОстатки.РасчетныйДокумент = ПриходныйКассовыйОрдер.ДокументОснование И ДенежныеСредстваУПодотчетныхЛицОстатки.Валюта = ПриходныйКассовыйОрдер.Валюта И ДенежныеСредстваУПодотчетныхЛицОстатки.Организация = ПриходныйКассовыйОрдер.Организация ГДЕ ПриходныйКассовыйОрдер.Ссылка = &Ссылка И ПриходныйКассовыйОрдер.Ссылка.СписыватьДолгЗаВодителем = ИСТИНА" Запрос.УстановитьПараметр("МоментВремениИсключая", Новый Граница( Реквизиты.Период, ВидГраницы.Исключая)); Т.е. брать остаток на момент времени документа, исключая документ Чето у меня логика не работает, так по идее быстрее всего, но правильно это? |
|||
24
Alex_MA
10.12.12
✎
08:11
|
(0)
Перем мУдалятьДвижения Экспорт; Процедура ОбработкаПроведения(Отказ, РежимПроведения) Если мУдалятьДвижения Тогда ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Истина, РежимПроведения); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |