Имя: Пароль:
1C
1С v8
Просьба разобраться в передаче параметра.
,
0 kap-v-kstu
 
05.08.13
09:27
Задание:
Доработать Процедуру ПроверитьТабличнуюЧастьНаДублиРБП() - Добавить в нее необязательный параметр Отказ = Ложь, и его же передавать в ОбщегоНазначения.СообщитьОбОшибке()  .Эта проедура находится в модуле документа.
Процедура ПроверитьТабличнуюЧастьНаДублиРБП(Отказ = Ложь) Экспорт
    
    ТаблицаНМА = НематериальныеАктивы.Выгрузить();
    ТаблицаРБП = ТаблицаНМА.Скопировать();
    ТаблицаРБП.Свернуть("РасходБудущихПериодов");
    
    Заголовок = "По одному и тому же РБП есть несколько оборотов в Дт счета.";
    Для каждого СтрокаРБП из ТаблицаРБП Цикл
        
        СтруктураОтбора = Новый Структура;
        СтруктураОтбора.Вставить("РасходБудущихПериодов", СтрокаРБП.РасходБудущихПериодов);
        
        НайденныеСтрокиПоРБП = ТаблицаНМА.НайтиСтроки(СтруктураОтбора);
        
        Если НайденныеСтрокиПоРБП.Количество()>1 Тогда
            СтрокаСообщения = "РБП " + "<" + "[" + СтрокаРБП.РасходБудущихПериодов.Код + "]" + СтрокаРБП.РасходБудущихПериодов + ">" + " встречается в нескольких строках №: ";
            
            Для каждого ЭлементМассива из НайденныеСтрокиПоРБП Цикл
                СтрокаСообщения = СтрокаСообщения + ЭлементМассива.НомерСтроки + "; " ;
            КонецЦикла;

            ОбщегоНазначения.СообщитьОбОшибке(СтрокаСообщения, Отказ = Ложь, Заголовок);
            Отказ = Истина;
        КонецЕсли;    
            
    КонецЦикла;
        
КонецПроцедуры
1 kap-v-kstu
 
05.08.13
09:27
в форме документа В КоманднаяПанельНМАЗаполнитьНематериальныеАктивы() добавить вызов ПроверитьТабличнуюЧастьНаДублиРБП() и в случае ошибки - отменять выполнение процедуры
2 Cube
 
05.08.13
09:28
ТЗ понятно. Сколько платишь?
3 kap-v-kstu
 
05.08.13
09:28
Процедура КоманднаяПанельНМАЗаполнитьНематериальныеАктивы(Кнопка)
Если ...
    ПроверитьТабличнуюЧастьНаДублиРБП();
    Возврат;
КонецЕсли
.....
КонецПроцедуры
4 Ёпрст
 
05.08.13
09:29
аминь
5 kap-v-kstu
 
05.08.13
09:29
Как пердать в условие Если.... параметр Отказ = Истина??
6 Godofsin
 
05.08.13
09:30
(4) правильно говорить "раминь!"
7 kap-v-kstu
 
05.08.13
09:32
с функцией легко сделать. у меня по заданию именно с процедурой
8 Cyberhawk
 
05.08.13
09:34
Отказ = Истина;            ОбщегоНазначения.СообщитьОбОшибке(СтрокаСообщения, Отказ, Заголовок);
9 Сти
 
05.08.13
09:49
(1) Параметры в 1С по умолчанию передаются по ссылке. То есть, меняя переменную параметра внутри процедуры, при возврате из нее переданная переменная будет иметь значение, определенное в процедуре.


ОтказВПроцедуре = Ложь; // обозвал так, чтобы как-то отличалось от параметра Отказ внутри процедуры, хотя это абсолютно неважно
ПроверитьТабличнуюЧастьНаДублиРБП(ОтказВПроцедуре);
Если ОтказВПроцедуре Тогда
// тут обработка отказа
Иначе
// а тут все нормально
КонецЕсли;
10 kap-v-kstu
 
05.08.13
10:05
Сти, Огормное спасибо!!!!!!!!!!!!!!!!!!!1Получилось)