Имя: Пароль:
1C
1C 7.7
v7: выборка нескольких элементов справочника
0 nacinayu1c
 
13.09.11
11:08
привет всем
вот код отчета
Процедура Сформировать()
   спрВид = СоздатьОбъект("Справочник.ВидыНачисленийУдержаний");
   спрВид.НайтиПоКоду(130);
   Вид = спрВид;//алименты
   
   //создадим печформу таблицы "Сформировать"
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   
   //выведем секцию шапка
   МесяцГод=" ";
   МесяцГод =Нрег(Формат(КонПериод,"дмммм")+" Месяц "+ ДатаГод(КонПериод)+".г");
   Таб.ВывестиСекцию("Шапка");
   
   //зададим параметры страницы
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   Если ВыбСотрудники.Выбран() = 1 Тогда
       Стр = ВыбСотрудники;
   Иначе
       Стр = "";
   КонецЕсли;
   //обратимся к бух итогам по счету 70 для получения сотрудника (Ответчика и суммы алиментов)
   Ит70 = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит70.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Стр);
   Ит70.ИспользоватьСубконто(ВидыСубконто.НачисленияУдержания,Вид);
   Ит70.ВыполнитьЗапрос(НачМесяца(КонПериод),КонМесяца(КонПериод),"70",,,,"Месяц");
   
   спрВид.НайтиПоКоду(163);//почтовый сбор
   Вид1 = спрВид;
   
   //сформируем и заполним данными секцию строка_1
   НомСтроки = 0;
             Ит70.ВыбратьСубконто(1);
        Пока Ит70.ПолучитьСубконто(1) = 1 Цикл
             Ит70.ВыбратьСубконто(2);
        Пока Ит70.ПолучитьСубконто(2) = 1 Цикл
   НомСтроки = НомСтроки + 1;
   
   ФИО = Ит70.Субконто(1);
       
   спрИстец = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");
   спрИстец.ИспользоватьВладельца(Ит70.Субконто(1).ТекущийЭлемент());
   Если  спрИстец.НайтиПоНаименованию("Алименты") = 1 Тогда
           
   ФИОИСТ = спрИстец.Субконто1;
   ИстАдрес = спрИстец.Субконто1.ТекущийЭлемент().ПочтовыйАдрес;
   
   ФИОИСТЦА = (ФИОИСТ.Наименование + " , " + ИстАдрес);
   
             Ит = СоздатьОбъект("БухгалтерскиеИтоги");
             Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ФИОИСТ);
             Ит.ВыполнитьЗапрос(НачМесяца(КонПериод),КонМесяца(КонПериод),"76.1",,,,"Месяц");
             Ит.ВыбратьСубконто(1);
        Пока Ит.ПолучитьСубконто(1) = 1 Цикл
   
  СуммаПер = Ит.КО();
 
             Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
             Ит1.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Ит70.Субконто(1).ТекущийЭлемент());
             Ит1.ИспользоватьСубконто(ВидыСубконто.НачисленияУдержания,Вид1);
             Ит1.ВыполнитьЗапрос(НачМесяца(КонПериод),КонМесяца(КонПериод),"70",,,,"Месяц");
             Ит1.ВыбратьСубконто(1);
        Пока Ит1.ПолучитьСубконто(1) = 1 Цикл
             Ит1.ВыбратьСубконто(2);    
   
   СуммаСб = Ит1.ДО();
 
   СуммаАл = Ит.КО() + Ит1.ДО();
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;    
ИтСумма = СуммаАл + ИтСумма;
ИтСбор = СуммаСб+ИтСбор;
ИтСуммаПер = СуммаПер+ИтСуммаПер;
       Таб.ВывестиСекцию("Строка_1");

КонецЦикла;

   Таб.ВывестиСекцию("Итого");            
   Орг = Константа.Руководитель.Получить(КонПериод);                
   Таб.ВывестиСекцию("Подвал");
   Таб.ВывестиСекцию("Подвал1");
   //Орг = Константа.Руководитель.Получить(КонПериод);
   
   ГлБух = Константа.ГлБухгалтер.Получить(КонПериод);
   
   Таб.ВывестиСекцию("Подвал2");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры


как в цикле  Пока Ит70.ПолучитьСубконто(1) = 1 Цикл
выбрать несколько записей из спрИстец = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");
   спрИстец.ИспользоватьВладельца(Ит70.Субконто(1).ТекущийЭлемент());
   Если  спрИстец.НайтиПоНаименованию("Алименты") = 1 Тогда
помогите пожалуйста
это отчет по алиментам дело в том что у сотрудника оказалось две бывших жены вот он им и платит обоим но в отчете светится только одна
1 АЛьФ
 
13.09.11
11:09
2(0) Убей его.
2 nacinayu1c
 
13.09.11
11:09
:))
3 nacinayu1c
 
13.09.11
11:11
как я понимаю нужно поставить цикл  перед
спрИстец = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");
   спрИстец.ИспользоватьВладельца(Ит70.Субконто(1).ТекущийЭлемент());
   Если  спрИстец.НайтиПоНаименованию("Алименты") = 1 Тогда
           
а какой цикл писать не знаю
4 nacinayu1c
 
13.09.11
11:17
наверно я не правильно сформулировал вопрос извините но я не знаю как его еще можно задать
5 nacinayu1c
 
13.09.11
11:21
что ни кто не поможет
6 viktor_vv
 
13.09.11
11:24
Как-то так.
Вот это вынеси за цикл.

спрИстец = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");


спрИстец.ИспользоватьВладельца(Ит70.Субконто(1).ТекущийЭлемент());
спрИстец.ВыбратьЭлементы();
Пока СпрИстец.ПолучитьЭлемент() = 1 Цикл
   Если  спрИстец.Наименование <> "Алименты" Тогда
      // Здесь посмортри в справочнике, может есть более надежный реквизит для определения вида приказа.
      Продолжить ;
   КонецЕсли ;
   // Формируем строку для вывода.
КонецЦикла ;
7 viktor_vv
 
13.09.11
11:28
Ну и за остальной код сейчас будут бить, больно, ногами в живот :).
AdBlock убивает бесплатный контент. 1Сергей