Имя: Пароль:
1C
1C 7.7
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) На базе какой конфы была написана ваша Нетленко?
Если на базе ТиС, то все нормально смотри обороты, как что и с чем закрывало регистр :)
AdBlock убивает бесплатный контент. 1Сергей