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

Как сделать чтобы документ не проводился при определнном условии? Подскажите.

Автор vurdalak, 23 окт 2012, 14:49

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

vurdalak

У меня есть условие, как сделать чтобы документ "ЗаказПоставщикам" не проводился при этом условии.
У меня есть набросы кода пока:
Товары = Объект.Товары;
СоглПост= Объект.Соглашение;
Условие = НайтиПроцСрокаПолИсп(СоглПост);
Для каждого СтрокаТабл Из Товары Цикл
СрокГодности = НайтиСрокГодности(СтрокаТабл.Серия);
ОстСрокГод = НайтиОстСрокГод(СтрокаТабл.Серия);
Если (ОстСрокГод / СрокГодности) * 100 <= Условие Тогда
ОтменитьПроведение();
КонецЕсли;

&НаСервере
Функция НайтиСрокГодности(СерияТовара) 
   
    Перем СерияДляПоиска, СсылкаНайденнойСерии;
    СерияДляПоиска = Справочники.Серии;
   СсылкаНайденнойСерии = СерияДляПоиска.НайтиПоНаименованию(СерияТовара);
    Если СсылкаНайденнойСерии = СерияДляПоиска.ПустаяСсылка() Тогда
        Возврат "Серии не найдено";
   Иначе
        Возврат СсылкаНайденнойСерии.СрокГодности;
    КонецЕсли;
   
КонецФункции 
&НаСервере
Функция НайтиОстСрокГод(СерияТовара) 
   
    Перем СерияДляПоиска, СсылкаНайденнойСерии;
    СерияДляПоиска = Справочники.Серии;
   СсылкаНайденнойСерии = СерияДляПоиска.НайтиПоНаименованию(СерияТовара);
    Если СсылкаНайденнойСерии = СерияДляПоиска.ПустаяСсылка() Тогда
        Возврат "Серии не найдено";
   Иначе
        Возврат СсылкаНайденнойСерии.ОстСрокГод;
    КонецЕсли;
   
КонецФункции   

&НаСервере
Функция НайтиПроцСрокаПолИсп(СоглПост) 
   
    Перем СоглДляПоиска, СсылкаНайденногоУсл;
    СоглДляПоиска = Справочники.СоглашенияСПоставщиками;
   СсылкаНайденногоУсл = СоглДляПоиска.НайтиПоНаименованию(СоглПост);
    Если СсылкаНайденногоУсл = СоглДляПоиска.ПустаяСсылка() Тогда
        Возврат "Серии не найдено";
   Иначе
        Возврат СсылкаНайденногоУсл.ПроцСрокаПолИсп;
    КонецЕсли;
   
КонецФункции

&НаСервере
Процедура ОтменитьПроведение()
ЭтотОбъект =ДанныеФормыВзначение(Объект,Тип("ДокументОбъект.ЗаказПоставщику"));
ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ЗначениеВданныеФормы(ЭтотОбъект,Объект);
КонецПроцедуры



Но так у меня не получилось.

cska-fanat-kz

что за директивы?
это модуль формы?
ОбработкаПроведения() располагается в модуле объекта, который выполняется исключительно на сервере.
А вот у нее есть параметр Отказ, которому при ОПРЕДЕЛЕННОМ УСЛОВИИ можно установить значение Истина...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vurdalak

&НаКлиенте
Товары = Объект.Товары;
СоглПост= Объект.Соглашение;
Условие = НайтиПроцСрокаПолИсп(СоглПост);
Для каждого СтрокаТабл Из Товары Цикл
    СрокГодности = НайтиСрокГодности(СтрокаТабл.Серия);
    ОстСрокГод = НайтиОстСрокГод(СтрокаТабл.Серия);
    Если (ОстСрокГод / СрокГодности) * 100 <= Условие Тогда
        ОтменитьПроведение();
        КонецЕсли;

Директива &НаКлиенте , а функции для доставания данных из справочников директива &НаСервере.
Да это модуль формы. А как можно сделать обмен данными между модулем объекта и модулем формы в таком случае?

cska-fanat-kz

1. модуль объекта "видит" реквизиты объекта... мало?
2. в любом другом случае... см. п.1
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск