|
v7: У непроведенного документа есть движения | ☑ | ||
---|---|---|---|---|
0
Diter
19.12.13
✎
15:34
|
Ситуация непонятная и я в ступоре.
Схема в общем то обычная и распространенная. Есть некий список накладных непроведенных. В коде идет перебор списка и накладная проводится. В виду того что при проведении накладная должна ещё и печататься то проведение происходит через открытие формы модально с параметром. в накладной в ПриОткрытии если параметр "проведение" то стартует процедура "Проведение()" которая делает две вещи - проводит документ (Провести()) и если удачно провели - печатает. До недавнего времени все было чётко. Поставил в эту процедуру проверку на наличие непогашенного долга по клиенту. Проверка обычная - регистры взаиморасчетов рассчитываются на момент ДО документа и определяется сумма долга. Если сумма превышает допустимый порог - возвращается флажок который запрещает проведение. Естественно эта проверка стоит ДО строки "Провести()". Вроде ничего крамольного. Но за неделю уже дважды была такая ситуация - по проведенному документу долг покупателя в два раза больше чем сумма накладной. Отменяешь проведение документа - долг остаётся в сумме накладной. Помогает только пересчет итогов через ТИИ. из всей массы накладных (больше 1000 в день за неделю порядка 7000) таких накладных было всего ТРИ. ничего общего у них не замечено. Что может быть? |
|||
1
Diter
19.12.13
✎
15:37
|
Перебор списка НЕ в транзакции.
|
|||
2
Пробивающий
19.12.13
✎
15:37
|
База скуль, дбф?
|
|||
3
Diter
19.12.13
✎
15:38
|
пользователь ТОЛЬКО один (думал вначале что с двух компов зашли и проводили вместе одни и теже документы - сработало ожидание захвата таблиц при проведении) - нет не то
|
|||
4
Diter
19.12.13
✎
15:38
|
скуль
|
|||
5
Diter
19.12.13
✎
15:39
|
схема эта используется ещё на 7 базах у клиента. отличие ТОЛЬКО в проверке долга. на остальных базах такого не замечалось. в проверке только одна строка работы с регистрами - расчет на момент ДО документа
|
|||
6
Ёпрст
19.12.13
✎
15:39
|
А в движениях дока то чего ?..нет задвоенных записей ?
Ежели нет - файло итогов битое. Персчет итогов и привет.. |
|||
7
Diter
19.12.13
✎
15:40
|
(6) нет задвоенности. да и у непроведенного вообще нет движений (не показывает 1С). база скуль как может быть битый файл? таблица битая?
|
|||
8
dk
19.12.13
✎
15:40
|
УРБД?
|
|||
9
Ёпрст
19.12.13
✎
15:41
|
(7) ну пересчитай итоги(не монопольно)..
|
|||
10
Diter
19.12.13
✎
15:41
|
косячат только взаиморасчеты. ни остатки ни партии ни ещё три дополнительных регистра себя так не ведут
|
|||
11
Ёпрст
19.12.13
✎
15:41
|
поделкой.
|
|||
12
Diter
19.12.13
✎
15:41
|
(9) а смысл? я не решение ищу (решение есть) а причину
|
|||
13
Diter
19.12.13
✎
15:45
|
код процедуры проведения в форме документа
Процедура Проведение(Закрыть=1,СразуПечатать=0) ПриЗаписи(); Записать(); Если Проведен()=0 Тогда Копия=0; Иначе Копия=1; КонецЕсли; Если Проведен()=0 Тогда Если Константа.ВключитьПредупрежденияПоКлиентам=Да Тогда Если глПроверитьДолгПоКлиенту(Контекст,Контрагент)=0 Тогда Блокировка=1; Записать(); Возврат; Иначе Блокировка=0; Записать(); КонецЕсли; КонецЕсли; КонецЕсли; Если Провести()=1 Тогда СервисПечати(Копия,СразуПечатать); КонецЕсли; Если Закрыть=1 Тогда Форма.Закрыть() КонецЕсли; КонецПроцедуры // Проведение() |
|||
14
МихаилМ
19.12.13
✎
16:08
|
у бух компоненты был какой-то глюк при выключении проводок
|
|||
15
Ёпрст
19.12.13
✎
16:10
|
>>>
по проведенному документу долг покупателя в два раза больше чем сумма накладной а это как смотришь ? |
|||
16
Diter
19.12.13
✎
22:27
|
(15) как угодно. от типовых отчетов до своих самоделок и даже итс-овским "конструктор запросов по регистрам"
|
|||
17
Diter
19.12.13
✎
22:27
|
(14) регистры. какая бух.компонента?
|
|||
18
Злопчинский
19.12.13
✎
22:34
|
а нафига модально? если все делается в ПриОткрытии - можно и без модально - отработай весь код нужный и поставь СтатусВозврата(0) в Приоткрытии - вернешься и начнет выполнятся следующий за открытием формы оператор. может поможет (хотя сомневаюсь)
|
|||
19
Diter
19.12.13
✎
23:03
|
(18) если не модально открывать документы то следующий не станет дожидаться пока проведется предыдущий
|
|||
20
КонецЦикла
19.12.13
✎
23:21
|
Зачем завязывать события печати и проведения?
Ведь бумага может застрять, принтер вырубиться и проч. Не проще ли: 1. Запретить проведение документа при сумме долга > х 2, Запретить печать не проведенных документов |
|||
21
Эльниньо
19.12.13
✎
23:23
|
(19) Станет, если слегка схитрить.
Пусть ждёт СтатусВозврата() = 123456789 |
|||
22
Diter
19.12.13
✎
23:40
|
(20) печать в этом случаи не при делах. а по поводу бумаги - стоят три профессиональных принтера (дуры по метр с кепкой высотой) с тремя лотками по две пачки бумаги и памятью встроенной на 100 листов печати. сетевые монстры. фирма в сутки выдаёт на гора порядка 5000-7000 накладных в трёх экземплярах.
(21) это как? вот кусок из того самого реестра проведения Процедура Выполнить() Если Вопрос("Провести отмеченные накладные?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли; ТекПринтер=СписокПринтеров.ПолучитьЗначение(СписокПринтеров.ТекущаяСтрока()); Док=СоздатьОбъект("Документ.РасходнаяНакладная"); Док_=СоздатьОбъект("Документ.РасходнаяНакладнаяКеги"); СписокПараметров=СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение("ПРОВЕДЕНИЕ","Режим"); СписокПараметров.ДобавитьЗначение(ТекПринтер,"Принтер"); Накладные.ВыбратьСтроки(); Пока Накладные.ПолучитьСтроку()<>0 Цикл Если Накладные.Флажок=2 Тогда ОткрытьФормуМодально(Накладные.Документ,СписокПараметров); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
23
КонецЦикла
20.12.13
✎
00:10
|
(22) Ит-сотруднег должен предусмотреть ВСЕ (по возможности)
Принтеры такие и всякие разные юзал. На супермегасовременных комплексах окончательное решение также за человеком, чтобы в нужный момент отличить самолет от стаи птиц, например. |
|||
24
КонецЦикла
20.12.13
✎
00:12
|
Если Док.Провести() = 1 Тогда
ПечатьДокумента(Док); КонецЕсли; |
|||
25
Diter
20.12.13
✎
00:28
|
(24) так а у меня как? см 13 Вадька
|
|||
26
КонецЦикла
20.12.13
✎
00:45
|
Куйивознает как там у тебя
У меня форма не открывается :) А печатать тоже можно одной обработкой (см. как в ТиС) и извне и из формы документа если хочется штатно. |
|||
27
Злопчинский
20.12.13
✎
00:52
|
(19) пока не закончится процедура ПриОткрытии() - ничто у тебя никуда дальше не пойдет. В процедуре ПриОткрытии() можно кучу всего написать, в т.ч. и проведение. Проверь, должно проканать.
Возможно, что и не проканает, но я сомлеваюсь.. должно проканать... |
|||
28
Diter
20.12.13
✎
08:57
|
(27) вот блин. у меня так и есть
1. в обработке код из 22 открывает РН 2. в РН в ПриОткрытии по параметру "проведение" стартует процедура Проведение после которой стоит СтатусВозврата(0) и Возврат 3. процедура Проведение (см 13) проверяет на долг, проводит, если провелось - печатает. |
|||
29
Ыщъ
20.12.13
✎
12:18
|
(28) Процедура Проведение() вернёт СтатусВозврата(1). Так?
|
|||
30
ЧеловекДуши
20.12.13
✎
13:34
|
(0) На базе какой конфы была написана ваша Нетленко?
Если на базе ТиС, то все нормально смотри обороты, как что и с чем закрывало регистр :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |