Имя: Пароль:
1C
1C 7.7
v7: Проблема со справочника назначения выводит с выборке первую должность
,
0 ЮлияКорж
 
24.02.12
12:40
а не актуальную на момент увольнения, посмотрите пожайлуста  как надо верно
Перем НачалоТекущегоПериода, КонецТекущегоПериода,ТекСотр1,Тек1;
   НачалоТекущегоПериода = Дата1;
   КонецТекущегоПериода = Дата2 + 1;
   таб=СоздатьОбъект("Таблица");
таб.ИсходнаяТаблица("Результаты");
таб.ВывестиСекцию("Шапка");
ФизЛицо=СоздатьОбъект("Справочник.ФизическиеЛица");
Сотр=СоздатьОбъект("Справочник.Сотрудники");
СпрНазн=СоздатьОбъект("Справочник.Назначения");
Сотр.ВыбратьЭлементы();
кол=0;
//ТекСотр=Сотр.ТекущийЭлемент();
Пока Сотр.ПолучитьЭлемент()>0 Цикл
   //Если (Сотр.Подразделение=Подразделение) Тогда
//        Если (ПустоеЗначение(Сотр.ДатаОкончанияДействия)=1) и (Сотр.ДатаНачалаДействия<ВыбДата)  Тогда
   //    Сотр.ФизическоеЛицо.ДатаРождения
//кол=кол+1;
//ТекСотр=Сотр.ТекущийЭлемент();
//СпрНазн.ТекущийЭлемент()
       ФизЛицо.НайтиЭлемент(Сотр.ТекущийЭлемент().ФизическоеЛицо);
       СпрНазн.ИспользоватьВладельца(Сотр);
   //    СпрНазн.ОбратныйПорядок();
//СпрНазн.ПорядокКодов();
//СпрНазн.ТекущийЭлемент().Должность
       СпрНазн.ВыбратьЭлементы();
       Пока СпрНазн.ПолучитьЭлемент()>0 Цикл
   ТекСотр=Сотр.ТекущийЭлемент().ФизическоеЛицо;
   Тек=Сотр.ТекущийЭлемент().ДатаОкончанияДействия;
           Если (Сотр.Подразделение=Подразделение)
   Тогда
       Если ПустоеЗначение(Сотр.ДатаОкончанияДействия)=0 Тогда
               Если ((Сотр.ДатаОкончанияДействия>=НачалоТекущегоПериода) И (Сотр.ДатаОкончанияДействия<КонецТекущегоПериода)) Тогда    
                   Если (ТекСотр1<>ТекСотр) и (Тек1<>Тек) Тогда
                       кол=кол+1;    
                       таб.ВывестиСекцию("Результат");
       КонецЕсли;
       КонецЕсли;
КонецЕсли;
   КонецЕсли;
ТекСотр1=ТекСотр;
Тек1=Тек;
//    КонецЕсли;
КонецЦикла;
КонецЦикла;
Таб.ПараметрыСтраницы(1,,,0,0,0,0,,,1,,);
   Таб.Опции(0,0,1,0);
   Таб.Защита(Константа.ФлагЗащитыТаблиц);
   Таб.ТолькоПросмотр(1);
таб.Показать("Результаты");
1 Amra
 
24.02.12
12:42
Причем тут восьмерка? И где вообще получение должности в коде?
2 zak555
 
24.02.12
12:42
где вопрос ?
3 Рэйв
 
24.02.12
12:45
блин, когда при работе вижу так отформатированный код, хочется отрубить руки писателю... Скажите, уважаемая, где вас таких ростят? я может договорюсь с бомбардировщиком:-)
4 ЮлияКорж
 
24.02.12
12:48
Это еще не итог код будет оформлен нормально
5 Рэйв
 
24.02.12
12:49
(4)То есть на мисту такое кидать можно да? Оригинальная логика.
6 ЮлияКорж
 
24.02.12
12:51
Больше не буду
7 Рэйв
 
24.02.12
12:52
(0)Ответ скорее всего простой.
Первая должность попадает под все условия. И соответсвенно выводится
8 n koretsky
 
24.02.12
13:00
Юленька, на первый взгляд код больше похож на 7.7, а не на 8.х
9 ЮлияКорж
 
24.02.12
17:11
Процедура Выполнить()
Перем НачалоТекущегоПериода, КонецТекущегоПериода,назнач;
   НачалоТекущегоПериода = Дата1;
   КонецТекущегоПериода = Дата2 + 1;
   таб=СоздатьОбъект("Таблица");
таб.ИсходнаяТаблица("Результаты");
таб.ВывестиСекцию("Шапка");
ФизЛицо=СоздатьОбъект("Справочник.ФизическиеЛица");
Сотр=СоздатьОбъект("Справочник.Сотрудники");
СпрНазн=СоздатьОбъект("Справочник.Назначения");
Сотр.ВыбратьЭлементы();
кол=0;
Пока Сотр.ПолучитьЭлемент()>0 Цикл
   ФизЛицо.НайтиЭлемент(Сотр.ТекущийЭлемент().ФизическоеЛицо);
   СпрНазн.ИспользоватьВладельца(Сотр);
   СпрНазн.ВыбратьЭлементы();
Пока СпрНазн.ПолучитьЭлемент()>0 Цикл
назнач=СпрНазн.ТекущийЭлемент().Должность;
Если ПустаяСтрока(назнач)=1 Тогда
назнач=СпрНазн.ТекущийЭлемент().Профессия;
Если ПустаяСтрока(назнач)=1 Тогда
назнач=СпрНазн.ТекущийЭлемент().Должность;
КонецЕсли;
КонецЕсли;
   Если (Сотр.Подразделение=Подразделение) Тогда
       Если ПустоеЗначение(Сотр.ДатаОкончанияДействия)=0 Тогда
           Если((Сотр.ДатаОкончанияДействия>=НачалоТекущегоПериода) И (Сотр.ДатаОкончанияДействия<КонецТекущегоПериода)) Тогда    
               Если (СпрНазн.ДатаОкончанияДействия=СОТР.ДатаОкончанияДействия) Тогда
                       кол=кол+1;    
                       таб.ВывестиСекцию("Результат");
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
//КонецЕсли;
//КонецЕсли;
КонецЦикла;
КонецЦикла;
Таб.ПараметрыСтраницы(1,,,0,0,0,0,,,1,,);
   Таб.Опции(0,0,1,0);
   Таб.Защита(Константа.ФлагЗащитыТаблиц);
   Таб.ТолькоПросмотр(1);
таб.Показать("Таблица1");
таб.ТолькоПросмотр(1);
КонецПроцедуры
Ну а так как код лучше?
10 zak555
 
27.02.12
20:55
что за справочни к Назначения ?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn