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

обработка по выгрузке иностранцев 1с77_ЗиК

Автор Дмитрий1991, 24 апр 2015, 15:18

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

Дмитрий1991

Здравствуйте стоит задача состряпать отчёт по иностранцам ну что то у меня с запросами не получается вот сделал такую штуку но он берёт по одному сотруднику из каждой страны если же я группирую по фиоСотрудника то выводит вообще всех почему он забивает на условия в запросе, если что то корява написал я недавно программирую на 1с, код1 и код2 это код россии и пустого значения соответственно в справочнике ОКСМ  зарание спасибо

//*******************************************
Процедура Сформировать()
   
  Перем Запрос,ТекстЗапроса;
   спрОКСМ = СоздатьОбъект("Справочник.ОКСМ");
   
   спрОКСМ.НайтиПоКоду("643");
   код1=спрОКСМ.Наименование;
   сообщить("код1");
   сообщить(код1); 
   
   спрОКСМ.НайтиПоКоду("892");
   код2=спрОКСМ.Наименование;
   сообщить("код2");
   сообщить(код2);
   
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(1)
   |фиоСотрудника=Справочник.Сотрудники.Наименование;
   |кодСотрудника=Справочник.Сотрудники.код;
      |иннСотрудника=Справочник.Сотрудники.ИНН;
      |снилс=Справочник.Сотрудники.СтраховойНомерПФР;
      |гражданство=Справочник.Сотрудники.Страна;
      |Группировка гражданство;
      |Условие((гражданство<>код1)или(гражданство<>код2));
   |"//}}ЗАПРОС
   ;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
   Возврат;
КонецЕсли;
   
 
   // Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");

Состояние("Заполнение выходной таблицы...");
i=0;
Пока Запрос.Группировка(1)=1 Цикл
i=i+1;
фиоСотрудника=Запрос.фиоСотрудника;
иннСотрудника=Запрос.иннСотрудника;
снилс=Запрос.снилс;
гражданство=Запрос.гражданство;
Таб.ВывестиСекцию("Инфа");
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("Иностранные граждани", "");   
КонецПроцедуры

Дмитрий1991

плюнул на запрос сделал так всё выводит, а как сейчас сделать чтобы не выводил уволенных(исключить всех кто состоит в группе справочника уволенные)
условие (спрСотрудники.ПринадлежитГруппе(Уволенные)=0) что то не работает

//*******************************************
Процедура Сформировать()
   
  Перем Запрос,ТекстЗапроса;
   Состояние("Заполнение выходной таблицы...");
   спрСотрудники = СоздатьОбъект("Справочник.Сотрудники");
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   спрСотрудники.ВыбратьЭлементы();
   i=0; 
   Пока спрСотрудники.ПолучитьЭлемент() = 1 Цикл
     Если (спрСотрудники.Страна.Наименование<>"Россия")и(спрСотрудники.Страна.Наименование<>"")и(спрСотрудники.ПринадлежитГруппе(Уволенные)=0) Тогда
       i=i+1;
       фиоСотрудника=спрСотрудники.Наименование;
       иннСотрудника=спрСотрудники.ИНН;
       снилс=спрСотрудники.СтраховойНомерПФР;
       гражданство=спрСотрудники.Страна;
       Таб.ВывестиСекцию("Инфа");
     КонецЕсли;
Таб.ТолькоПросмотр(1);
Таб.Показать("Иностранные граждани", "");
КонецЦикла;

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");

КонецПроцедуры

 
Добавлено: 27 апр 2015, 10:50


спасибо за внимания сделал так если кому интересно

//*******************************************
Процедура Сформировать()     
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   
   спрСотрудники = СоздатьОбъект("Справочник.Сотрудники");
   спрСотрудники.ВыбратьЭлементы();
   
   i=0; 
   Пока спрСотрудники.ПолучитьЭлемент() = 1 Цикл
     Если (спрСотрудники.Страна.Наименование<>"Россия")и(спрСотрудники.Страна.Наименование<>"")и(спрСотрудники.Родитель.Наименование<>"Уволенные") Тогда
       i=i+1;
       фиоСотрудника=спрСотрудники.Наименование;
       иннСотрудника=спрСотрудники.ИНН;
       снилс=спрСотрудники.СтраховойНомерПФР;
       гражданство=спрСотрудники.Страна;
       Таб.ВывестиСекцию("Инфа");
      Состояниезапроса="Заполнение выходной таблицы...";
     КонецЕсли;                                         

Таб.ТолькоПросмотр(1);
Таб.Показать("Иностранные граждани", "");
КонецЦикла;

КонецПроцедуры
               
Добавлено: 27 апр 2015, 10:53


Только не пойму как сделать что бы таблица появлялась после обработки, а не обновлялась во время её выполнения 
Добавлено: 27 апр 2015, 11:19


Тема закрыта

Теги:

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

Рейтинг@Mail.ru

Поиск