Снимаются выписки с проведения закрытого периода

1. KiLLius 26.11.12 15:50 Сейчас в теме
Добрый день, люди добрые.
Столкнулся с проблемой, что у нас в базе 1С бухгалтерия (538 релиз) снимается с проведения документ Выписка. Причём в закрытом периоде, и очень далеко от текущей даты. Например сегодня 26.11.12, а выписка снимается в декабре 2011 или вот как сейчас 26.06.11. Грешу на клиент банк, ибо обмен идёт через обработку "ПредприятиеКлиент" и именно там есть строки
	Если  Объект.ПометкаУдаления()=1 Тогда
			Объект.СнятьПометкуУдаления();
		ИначеЕсли Объект.Проведен()=1 Тогда
			Объект.СделатьНеПроведенным();
		КонецЕсли;

Но даже если и в этих строках кроется ошибка. Как исправить ситуацию? Бухи меня готовы на части разобрать, что у них документ за 2 квартал снялся с проведения. Можно ли мне программно его снова провести? Что бы сальдо выровнялось?
Ах да, ещё 1 нюанс, документ изменяется, например в нем было 5 записей, а стало 2.

Этот случай не первый у нас. Сперва я грешил на бухов. Но сейчас понимаю, что то тут не то.
Буду премного благодарен за помощь. Очень на вас надеюсь.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. andrewks 1375 26.11.12 16:49 Сейчас в теме
(1) KiLLius, для отладки можно изменить код так, например:

    Если  Объект.ПометкаУдаления()=1 Тогда
            Объект.СнятьПометкуУдаления();
        ИначеЕсли Объект.Проведен()=1 Тогда
            //Объект.СделатьНеПроведенным();
            Сообщить("Попытка распровести документ "+Объект.ТекущийДокумент(),"!");
        КонецЕсли;

Показать


так сразу будет ясно, в этом ли участке кода проблема, и думать дальше
10. KiLLius 26.11.12 16:51 Сейчас в теме
(7) andrewks, и это я тоже сделал. Но вдруг не в этом причина. И в этом вообще не клиент банк виноват.
11. andrewks 1375 26.11.12 16:53 Сейчас в теме
(10) KiLLius, т.е. Вы не отследили точно, что это после использования обработки клиент-банка возникает, просто подозрения?
15. dusha0020 1117 26.11.12 19:04 Сейчас в теме
(1) KiLLius, Проследить были ли ручные правки документа можно из журнала регистрации и тогда точно сказать, что это делалось обработкой.
Любопытно, что у Вас изменилось количество строк в Выписке. Это значит что обработка (если это она) еще и записывает изменения.
Ну, что Вам мешает написать сторожа в процедуре ОбработкаУдаленияПроведения()? Она ведь срабатывает как при интерактивной так и ручной отмене проведения.
16. KiLLius 26.11.12 19:20 Сейчас в теме
(15) dusha0020, мой косяк. Забыл сказать, что в журнале регистраций ничего нет. Именно поэтому я уверен, что изменения идут обработкой.
И да, документ откатывается к какому то состоянию, которое где то зафиксировано. И тут я подумал, что может косяк с файлами клиент банка.
Не поставил сторожа, по причине недавнего возникновения проблемы. Хочется узнать причину, а уж потом находить решение.
17. dusha0020 1117 27.11.12 15:22 Сейчас в теме
(16) KiLLius, Причину не знаю. А вот в стороже при записи в лог кроме пользователя и времени отмены проведения можно добавить список заголовков всех открытых в момент записи изменения окон 1С. Тогда станет понятнее из какой обработки или документа / отчета / журнала и т.п. было отменено проведение. Ну по крайней мере сузится круг подозреваемых. Заодно можете проверять открыто ли окно журнала выписок в момент отмены проведения - если да то запуск был интерактивным и писать его в лог не нужно:)
18. KiLLius 27.11.12 15:28 Сейчас в теме
(17) dusha0020, я наверное буду выглядеть глупо, но я с журналом регистраций вообще не работал толком. Только просматривал. Я не смогу такие вещи туда записать, чисто упрусь в недостаток знаний. Штудировать литературу вообще пока времени нет, озадачили другими вещами. Если у Вас есть готовый фрагмент кода, не могли бы Вы со мной поделиться. Если конечно не затруднит.
20. dusha0020 1117 27.11.12 18:08 Сейчас в теме
(18) KiLLius, В модуле выписке в процедуре ПриОтменеПроведенияДокумента() написать что-то такое:

комм = "Отмена проведения " + ТекущийДокумент()+" была сделана " + Строка(ТекущаяДата())+" в " + Строка(ТекущееВремя())+ " пользователем " + ИмяПользователя() + " с компа " + ИмяКомпьютера());
ЗаписьЖурналаРегистрации(комм,"Контроль выписок","Отмена проведения",ТекущийДокумент(),2);


Если со списком заголовков открытых окон хотите поразвлекаться то вот функция его получения:
Функция ОткрытыеОкна()
	Окна = "";
	Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.language = "javascript";
    Скрипт.AddCode("Текст=Array(1024).join(' ');
    |function getWindowText(Хендл){Враппер.GetWindowTextW(Хендл,Текст,1024);return(Текст)}
    |function getWindowClass(Хендл){Враппер.GetClassNameW(Хендл,Текст,1024);return(Текст)}");
    Враппер = СоздатьОбъект("DynamicWrapper");
    Враппер.Register("user32.dll",        "FindWindowExA",            "i=llsl",    "f=s", "r=l");
    Враппер.Register("user32.dll",        "FindWindowW",                "i=ll",        "f=s", "r=l");
    Враппер.Register("user32.dll",        "GetWindow",                "i=ll",        "f=s", "r=l");
    Враппер.Register("user32.dll",        "GetParent",                "i=l",        "f=s", "r=l");
    Враппер.Register("kernel32.dll",    "GetCurrentThreadId",        "f=s",        "r=l"        );
    Враппер.Register("User32.dll",        "GetWindowThreadProcessId",    "i=ll",        "f=s", "r=l");
    Враппер.Register("User32.dll",        "GetWindowTextW",            "i=hwl",    "f=s", "r=l");
    Враппер.Register("User32.dll",        "GetClassNameW",            "i=hwl",    "f=s", "r=l");
    Скрипт.AddObject("Враппер",Враппер);
    Хендл = Враппер.FindWindowW(0, 0);
    Пока Хендл <> 0 Цикл
        Если Враппер.GetParent(Хендл)=0 Тогда
            Нить=Враппер.GetWindowThreadProcessId(Хендл, 0);
            Если Нить=Враппер.GetCurrentThreadId() Тогда
                Прервать;
            КонецЕсли;
        КонецЕсли;
        Хендл = Враппер.GetWindow(Хендл, 2);
    КонецЦикла;
    Хендл=Враппер.FindWindowExA(Хендл,0,"MDIClient",0);
    ТаблицаОкон = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаОкон.НоваяКолонка("Хендл");
    ТаблицаОкон.НоваяКолонка("Заголовок");
    ТаблицаОкон.НоваяКолонка("Класс");
    Хендл = Враппер.GetWindow(Хендл,5);
    Пока Хендл <> 0 Цикл
        ЗаголовокОкна = СокрЛП(Скрипт.CodeObject.getWindowText(Хендл));
        КлассОкна = СокрЛП(Скрипт.CodeObject.getWindowClass(Хендл));
        ТаблицаОкон.НоваяСтрока();
        ТаблицаОкон.Хендл = Хендл;
        ТаблицаОкон.Заголовок = ЗаголовокОкна;
        ТаблицаОкон.Класс = КлассОкна;
        Хендл = Враппер.GetWindow(Хендл, 2);
    КонецЦикла;
    ТаблицаОкон.ВыбратьСтроки();
	Пока ТаблицаОкон.ПолучитьСтроку() = 1 Цикл
		Окна = Окна +  ТаблицаОкон.Заголовок + ?(ТаблицаОкон.НомерСтроки = 1,",","");
	КонецЦикла;
	Возврат Окна;
КонецФункции
Показать

Добавьте ее возврат в коммент записи и будете знать какие окна в 1С были открыты в момент когда отменялось проведение.
P.S. Копирайт функции нахождения заголовков открытых окон не мой. Нашел когда-то на мисте, но уже не помню где. В любом случае спасибо автору.
2. Guyer 21 26.11.12 15:53 Сейчас в теме
Попробовать снять/устанвоить галочку применять дату ЗР под полными правами. Бухи же наверняка имеют полные права.
3. KiLLius 26.11.12 16:05 Сейчас в теме
(2) Guyer, А что это за галочка и где она находится. Прошу прощение за глупый вопрос.
4. Guyer 21 26.11.12 16:10 Сейчас в теме
Ну там же в константах, рядом с датой галочка применять для полных прав.
Либо можете изменить права на то что документ можно создавать, но нельзя изменять!
5. KiLLius 26.11.12 16:32 Сейчас в теме

Видимо я туже, чем о себе думал. Вы точно не путаете, в 1С 7.7 есть такая галочка?
6. andrewks 1375 26.11.12 16:46 Сейчас в теме
(5) KiLLius, программному коду наплевать на всякие даты запрета редактирования
8. KiLLius 26.11.12 16:50 Сейчас в теме
(6) andrewks, вот и я об этом думаю. Но вопрос в первом посте стоял не о коде. Неужели никто с таким не сталкивался?

PS. Видимо зря я привел в пример фрагмент кода. Не в ту степь нить рассуждений.
9. andrewks 1375 26.11.12 16:51 Сейчас в теме
(8) KiLLius, обработка клиент-банка используется точно типовая? (не помешает сравнить с типовым релизом, чтобы удостовериться)
12. KiLLius 26.11.12 16:53 Сейчас в теме
(9) andrewks, Да типовая, только что сравнил.
(11) andrewks, именно так. Есть подозрения и всё. Фактов точных нет,если бы я был уверен, я бы просто закомментил строки и забыл как страшный сон.
13. andrewks 1375 26.11.12 16:54 Сейчас в теме
ещё неплохо было бы сравнить эту обработку с обработкой из последнего 549-го релиза (вдруг там что-то исправляли)
14. KiLLius 26.11.12 16:56 Сейчас в теме
(13) andrewks, ну это уже завтра. Сейчас рабочий день кончается. Домой пора.
19. KillHunter 8 27.11.12 16:04 Сейчас в теме
только журнал регистрации тебе в помощь, казачек шпиён видать у вас завелся!
21. CheBurator 2712 27.11.12 19:56 Сейчас в теме
Спасибо за функцию открытых окон.
Возможно, аналогичная функция есть в формексе...
22. EvgenAEY 2 28.11.12 21:01 Сейчас в теме
Импорт из банк-клиента случаем не делаете? У нас была ситуация что "старые" выписки менялись по сумме, т.к. по ошибке выгрузили с банка прошлый период
23. KiLLius 29.11.12 07:44 Сейчас в теме
(22) EvgenAEY, рад что я не одинок. А вам думаю не плохо первый пост до конца прочитать. И в итоге чем у вас всё кончилось? как узнали что банк клиент виноват? Кого наказали?
24. EvgenAEY 2 29.11.12 15:14 Сейчас в теме
(23) KiLLius, Действительно до конца не прочитал, нашли по суммам сравнивая с архивом, но документы не были "сняты с проведения" просто строки поменялись (удалились), никого не наказывали. Решили проблему следующим образом: убрал путь в импорте документов (в обработке загрузкивыгрузки платежек), а выписки по банку бухгалтера вручную разносили, видимо им так проще было
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот