Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 10:41

Процедура "ОбработкаПроведения"

Автор demon3, 22 июн 2016, 11:30

0 Пользователей и 1 гость просматривают эту тему.

demon3

Здравствуйте. Такой вопрос: В обработке проведения документа есть кусок кода,который документ другого типа. Необходимо поставить проверку ,что если документ второй создался при проведении первого, тогда проверить заполнение реквизитов второго документа. И если не все реквизиты заполнены, тогда не проводить первый документ. Проверку на заполнение реквизитов написал, но если отменяем проведение первого документа при не заполненных реквизитах второго, то он и отменяет создание второго документа. Необходимо ,чтобыы даже если первый документ не проводился,то второй все равно создавался! Подскажите,как реализовать данную возможность?
Помог ответом, скажи спасибо

Rasty

если он не проводится значит он сохраняется, значит в событие ПриЗаписи/ПослеЗаписи/ПереЗаписью написать код по созданию документа и при проведении проверять создался документ или нет
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

LexaK

д-а-а, все привыкли использовать параметр Отказ, и даже не могут придумать как его обойти.
в вашем случае просто не используйте его при проверке заполнения реквизитов другого документа

вашего кода нет, поэтому придется на пальцах объяснять

у вас в коде где-то стоит (вами написанная проверка)
что-то вроде

Если ВыполнитьПроверкуЗаполенности(...) = Ложь Тогда
    Отказ = Истина;
    ...
    //возможно здесь есть Возврат
КоенцЕсли;

а нужна такая конструкция
только это в самом начале обработки проведения надо разместить, до кода формирования проводок

Если ВыполнитьПроверкуЗаполенности(...) = Ложь Тогда
    //Отказ = Истина; //отказ не трогаем, должен быть = Ложь !!!
    //возможно что-то сообщить пользователю
    Сообщить("Недостаточно данных для заполнения документа: " + ВашДругойДокумент);
    Возврат; //просто выходим, без формирования проводок
КоенцЕсли;

это все приблизительно, только сама идея, возможны какие-то допилы по месту программы.

если помогло нажмите: Спасибо!

demon3

Цитата: LexaK от 22 июн 2016, 12:54
д-а-а, все привыкли использовать параметр Отказ, и даже не могут придумать как его обойти.
в вашем случае просто не используйте его при проверке заполнения реквизитов другого документа

вашего кода нет, поэтому придется на пальцах объяснять

у вас в коде где-то стоит (вами написанная проверка)
что-то вроде

Если ВыполнитьПроверкуЗаполенности(...) = Ложь Тогда
    Отказ = Истина;
    ...
    //возможно здесь есть Возврат
КоенцЕсли;

а нужна такая конструкция
только это в самом начале обработки проведения надо разместить, до кода формирования проводок

Если ВыполнитьПроверкуЗаполенности(...) = Ложь Тогда
    //Отказ = Истина; //отказ не трогаем, должен быть = Ложь !!!
    //возможно что-то сообщить пользователю
    Сообщить("Недостаточно данных для заполнения документа: " + ВашДругойДокумент);
    Возврат; //просто выходим, без формирования проводок
КоенцЕсли;

это все приблизительно, только сама идея, возможны какие-то допилы по месту программы.

Этот вариант не пойдет.так как документ все равно проводится даже после "возврата" в обработке проведения!
Помог ответом, скажи спасибо

LexaK

э-э-э, как все запущено!

1.не путайте пометку проведения с проводками документа, (вообще можете эту пометку сбросить Проведен = Ложь; //это как раз из области допила)
2.если у вас документ был уже проведен и по нему были уже проводки, то по этой схеме, при возврате, все так и останется, ТОЛЬКО перепроведения не случится!
(здесь тоже есть варианты допила, например перед выходом "распровести" документ)
3.еще можно кучу каких вариантов предположить.

И самое главное надо учитывать всякие возможные НАВОРОТЫ вроде различных подписок и т.д. где эту ситуацию так-же надо учесть.

в общем, если подойти с головой и отладчиком, все можно решить.
если помогло нажмите: Спасибо!

demon3

Цитата: LexaK от 22 июн 2016, 14:25
э-э-э, как все запущено!

1.не путайте пометку проведения с проводками документа, (вообще можете эту пометку сбросить Проведен = Ложь; //это как раз из области допила)
2.если у вас документ был уже проведен и по нему были уже проводки, то по этой схеме, при возврате, все так и останется, ТОЛЬКО перепроведения не случится!
(здесь тоже есть варианты допила, например перед выходом "распровести" документ)
3.еще можно кучу каких вариантов предположить.

И самое главное надо учитывать всякие возможные НАВОРОТЫ вроде различных подписок и т.д. где эту ситуацию так-же надо учесть.

в общем, если подойти с головой и отладчиком, все можно решить.

Понял вашу мысль. Попробую проводки посмотреть после этого действия
Помог ответом, скажи спасибо

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск