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

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

Автор 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

Поиск