Имя: Пароль:
1C
1C 7.7
v7: Обработка с выводом в таблицу
0 SKOP
 
09.08.12
11:27
Есть обработка каторая должна проверать льготу на детей есть им ли 18 лет если нету то должна закидывать в таблицу.проверку написал  только возникла проблема с закидыванием фамилий в таблицу


Код

Процедура ПриОткрытии()  
   Д=ДобавитьМесяц(РабочаяДата(),-216);
КонецПроцедуры
//*******************************************
Процедура Выполнить()      
   Если Вопрос("<Налоговые льготы> будет заполнены новыми данными по всем сотрудникам. Данное действие является не обратимым.  Чтобы продолжить нажмите <Да>, чтобы отменить нажмите <Нет>",4)=7 тогда
       Возврат;
   КонецЕсли;
   Сп=СоздатьОбъект("СписокЗначений");
   СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
   СпрСостСемьи=СоздатьОбъект("Справочник.СоставСемьи");
   СпрНалЛьготы=СоздатьОбъект("Справочник.НалоговыеЛьготы");
   Таб=СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   СпрТипЛьготы=СоздатьОбъект("Справочник.ЛьготыПоПодоходномуНалогу");
   СпрТипЛьготы.НайтиПоНаименованию("На детей",0,1);  
   ТипЛьготыНаДет=СпрТипЛьготы.ТекущийЭлемент();
   СпрСотр.ВыбратьЭлементы();
   Стр="";
   Пока СпрСотр.ПолучитьЭлемент()=1 цикл  
       Если СпрСотр.ЭтоГруппа()=0 тогда  
           СпрНалЛьготы.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());  
           СпрНалЛьготы.ВыбратьЭлементы();  
           Пока СпрНалЛьготы.ПолучитьЭлемент()=1 цикл
               Если СпрНалЛьготы.ТипЛьготы=ТипЛьготыНаДет тогда
                   СпрНалЛьготы.Удалить();
               КонецЕсли;
           КонецЦикла;    
           СпрСостСемьи.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());
           СпрСостСемьи.ВыбратьЭлементы();
           Сп.УдалитьВсе();
           Пока СпрСостСемьи.ПолучитьЭлемент()=1 Цикл
               Если ((СпрСостСемьи.Родство=Перечисление.СтепениРодства.Сын)или
               (СпрСостСемьи.Родство=Перечисление.СтепениРодства.Дочь))и
               (СпрСостСемьи.ДеньРождения>Д)тогда
               ////    Сп.ДобавитьЗначение(СпрСостСемьи.ТекущийЭлемент());
               
               
               КонецЕсли;
           КонецЦикла;  
           
       
       КонецЕсли;
   КонецЦикла;
   Сообщить("льготы на детей удалены");
   Сообщить(Стр);
   Сообщить("Выполнено");
КонецПроцедуры
1 SKOP
 
09.08.12
11:34
gizmoz если можешь дополни код
2 Simod
 
09.08.12
11:47
Я конечно понимаю, что новичок и все такое, но вопрос то можно грамотно, с использованием знаков препинания, сформулировать?
3 1Сергей
 
09.08.12
11:47
не вижу в чем проблема
4 SKOP
 
09.08.12
11:57
Нужно в таблицу вывести Наименование
Процедура ПриОткрытии()  
   Д=ДобавитьМесяц(РабочаяДата(),-216);
КонецПроцедуры
//*******************************************
Процедура Выполнить()      
   Если Вопрос("<Налоговые льготы> будет заполнены новыми данными по всем сотрудникам. Данное действие является не обратимым.  Чтобы продолжить нажмите <Да>, чтобы отменить нажмите <Нет>",4)=7 тогда
       Возврат;
   КонецЕсли;
   Сп=СоздатьОбъект("СписокЗначений");
   СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
   СпрСостСемьи=СоздатьОбъект("Справочник.СоставСемьи");
   СпрНалЛьготы=СоздатьОбъект("Справочник.НалоговыеЛьготы");
   Таб=СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   СпрТипЛьготы=СоздатьОбъект("Справочник.ЛьготыПоПодоходномуНалогу");
   СпрТипЛьготы.НайтиПоНаименованию("На детей",0,1);  
   ТипЛьготыНаДет=СпрТипЛьготы.ТекущийЭлемент();
   СпрСотр.ВыбратьЭлементы();
   Стр="";
   Пока СпрСотр.ПолучитьЭлемент()=1 цикл  
       Если СпрСотр.ЭтоГруппа()=0 тогда  
           СпрНалЛьготы.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());  
           СпрНалЛьготы.ВыбратьЭлементы();  
           Пока СпрНалЛьготы.ПолучитьЭлемент()=1 цикл
               Если СпрНалЛьготы.ТипЛьготы=ТипЛьготыНаДет тогда
                   СпрНалЛьготы.Удалить();
               КонецЕсли;
           КонецЦикла;    
           СпрСостСемьи.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());
           СпрСостСемьи.ВыбратьЭлементы();
           Сп.УдалитьВсе();
           Пока СпрСостСемьи.ПолучитьЭлемент()=1 Цикл
               Если ((СпрСостСемьи.Родство=Перечисление.СтепениРодства.Сын)или
               (СпрСостСемьи.Родство=Перечисление.СтепениРодства.Дочь))и
               (СпрСостСемьи.ДеньРождения>Д)тогда
               ////    Сп.ДобавитьЗначение(СпрСостСемьи.ТекущийЭлемент());
               
               
               КонецЕсли;
           КонецЦикла;
           Наименование=????????????????????????вывести фамилию
               Таб.ВывестиСекцию("Шапка");
               Таб.ВывестисекциЮ("Строка");
               
       
       КонецЕсли;
   КонецЦикла;
   Сообщить("льготы на детей удалены");
   Сообщить(Стр);
   Сообщить("Выполнено");
КонецПроцедуры
5 zladenuw
 
09.08.12
11:59
ну так в макете поставь выражение на поле где наименование
6 SKOP
 
09.08.12
12:00
напишите примером
7 SKOP
 
09.08.12
12:01
в коде
8 zladenuw
 
09.08.12
12:01
рад бы. но это в макете выставляешь.
9 zladenuw
 
09.08.12
12:04
у тебя должна быть переменная и выражение в макете. иметь одинаковое имя. тогда тебе достаточно будет Таб.ВывестисекциЮ("Строка"); а вообще смотри в типовых.
10 SKOP
 
09.08.12
12:07
Пока СпрСостСемьи.ПолучитьЭлемент()=1 Цикл
               Если ((СпрСостСемьи.Родство=Перечисление.СтепениРодства.Сын)или
               (СпрСостСемьи.Родство=Перечисление.СтепениРодства.Дочь))и
               (СпрСостСемьи.ДеньРождения>Д)тогда
               ////    Сп.ДобавитьЗначение(СпрСостСемьи.ТекущийЭлемент());
как к этому коду привязатся наименование
У меня вопрос мне нужно чтоб в таблицу выбелисть только те кому до 18 лет
11 Simod
 
09.08.12
12:09
Открой любой отчет из типовой конфигурации и посмотри как там сделано.

Я так понимаю, что фамилия должна быть в "СпрСотр".
12 zladenuw
 
09.08.12
12:10
Пока СпрСотр.ПолучитьЭлемент()=1 цикл  
       Если СпрСотр.ЭтоГруппа()=0 тогда  
           СпрНалЛьготы.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());  
           СпрНалЛьготы.ВыбратьЭлементы();  
           Пока СпрНалЛьготы.ПолучитьЭлемент()=1 цикл
               Если СпрНалЛьготы.ТипЛьготы=ТипЛьготыНаДет тогда
                   СпрНалЛьготы.Удалить();
               КонецЕсли;
           КонецЦикла;    
           СпрСостСемьи.ИспользоватьВладельца(СпрСотр.ТекущийЭлемент());
           СпрСостСемьи.ВыбратьЭлементы();
           Сп.УдалитьВсе();

            Таб.ВывестиСекцию("Шапка");
             
           Пока СпрСостСемьи.ПолучитьЭлемент()=1 Цикл
               Если ((СпрСостСемьи.Родство=Перечисление.СтепениРодства.Сын)или
               (СпрСостСемьи.Родство=Перечисление.СтепениРодства.Дочь))и
               (СпрСостСемьи.ДеньРождения>Д)тогда
               ////    Сп.ДобавитьЗначение(СпрСостСемьи.ТекущийЭлемент());
               Наименование=????????????????????????вывести фамилию
               Таб.ВывестисекциЮ("Строка");
               
               
               КонецЕсли;
           КонецЦикла;
           
               
       
       КонецЕсли;
   КонецЦикла;

Так понятно, а дальше думаешь о (9)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс