Получить периодический реквизит
19.10.2007
13:51
#1
"Всем привет! вопрос такой: не могу вывести дату значения периодического реквизита в отчет. Вместо значения переменной пишет наименование переменной, в которую записывается дата.
Процедура такая:
Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.Сотрудники");
ТаблицаПечати = СоздатьОбъект("Таблица");
ТаблицаПечати.ИсходнаяТаблица("Таблица");
ТаблицаПечати.ВывестиСекцию("Шапка");
ТаблицаСотрудников = СоздатьОбъект("ТаблицаЗначений");
ТаблицаСотрудников.НоваяКолонка("Сотрудник");
ТаблицаСотрудников.НоваяКолонка("ДатаРождения");
ТаблицаСотрудников.НоваяКолонка("ДатаПриема");
ТаблицаСотрудников.НоваяКолонка("Признак");
Спр.ПорядокНаименований();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 цикл
Если Спр.Выбран() = 1 тогда
ДатаРожд = Спр.ДатаРождения;
Сотрудник = Спр.ТекущийЭлемент();
Если Спр.ЭтоГруппа() = 0 тогда
ТаблицаСотрудников.НоваяСтрока();
ТаблицаСотрудников.Сотрудник = Сотрудник;
ТаблицаСотрудников.ДатаРождения = ДатаРожд;
Периодический = СоздатьОбъект("Периодический");
Периодический.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
Периодический.ВыбратьЗначения();
Пока Периодический.ПолучитьЗначение() = 1 цикл
ТаблицаСотрудников.ДатаПриема = Периодический.ДатаЗнач; //вот эту дату не могу вывести
// Сообщить(ТаблицаСотрудников.ДатаПриема); //если пользоваться этой функцией, то втабло все даты выводятся
КонецЦикла;
глВидРасчетаДействует(Сотрудник,Расчет,,);
Если Расчет = ВидРасчета.ПрофВзносы тогда
Признак = 1;
Иначе
Признак = 0;
КонецЕсли;
Сообщить(Признак);
ТаблицаСотрудников.Признак = Признак;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТаблицаСотрудников.ВыбратьСтроки();
Пока ТаблицаСотрудников.ПолучитьСтроку() = 1 цикл
ФИО = ТаблицаСотрудников.Сотрудник;
ДатаРождения = ТаблицаСотрудников.ДатаРождения;
ДатаПриемаНаРаботу = ТаблицаСотрудников.ДатаПриема;
ПризнакПрофсоюза = ТаблицаСотрудников.Признак;
ТаблицаПечати.ВывестиСекцию("Список");
КонецЦикла;
ТаблицаПечати.ТолькоПросмотр(1);
ТаблицаПечати.Показать("Список сотрдников");
КонецПроцедуры"
Процедура такая:
Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.Сотрудники");
ТаблицаПечати = СоздатьОбъект("Таблица");
ТаблицаПечати.ИсходнаяТаблица("Таблица");
ТаблицаПечати.ВывестиСекцию("Шапка");
ТаблицаСотрудников = СоздатьОбъект("ТаблицаЗначений");
ТаблицаСотрудников.НоваяКолонка("Сотрудник");
ТаблицаСотрудников.НоваяКолонка("ДатаРождения");
ТаблицаСотрудников.НоваяКолонка("ДатаПриема");
ТаблицаСотрудников.НоваяКолонка("Признак");
Спр.ПорядокНаименований();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 цикл
Если Спр.Выбран() = 1 тогда
ДатаРожд = Спр.ДатаРождения;
Сотрудник = Спр.ТекущийЭлемент();
Если Спр.ЭтоГруппа() = 0 тогда
ТаблицаСотрудников.НоваяСтрока();
ТаблицаСотрудников.Сотрудник = Сотрудник;
ТаблицаСотрудников.ДатаРождения = ДатаРожд;
Периодический = СоздатьОбъект("Периодический");
Периодический.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
Периодический.ВыбратьЗначения();
Пока Периодический.ПолучитьЗначение() = 1 цикл
ТаблицаСотрудников.ДатаПриема = Периодический.ДатаЗнач; //вот эту дату не могу вывести
// Сообщить(ТаблицаСотрудников.ДатаПриема); //если пользоваться этой функцией, то втабло все даты выводятся
КонецЦикла;
глВидРасчетаДействует(Сотрудник,Расчет,,);
Если Расчет = ВидРасчета.ПрофВзносы тогда
Признак = 1;
Иначе
Признак = 0;
КонецЕсли;
Сообщить(Признак);
ТаблицаСотрудников.Признак = Признак;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТаблицаСотрудников.ВыбратьСтроки();
Пока ТаблицаСотрудников.ПолучитьСтроку() = 1 цикл
ФИО = ТаблицаСотрудников.Сотрудник;
ДатаРождения = ТаблицаСотрудников.ДатаРождения;
ДатаПриемаНаРаботу = ТаблицаСотрудников.ДатаПриема;
ПризнакПрофсоюза = ТаблицаСотрудников.Признак;
ТаблицаПечати.ВывестиСекцию("Список");
КонецЦикла;
ТаблицаПечати.ТолькоПросмотр(1);
ТаблицаПечати.Показать("Список сотрдников");
КонецПроцедуры"
19.10.2007
14:34
#2
Если в отчет выводится текст: <ДатаПриема>, то стоит проверить св-ва ячейки таблицы (тип возможно задан текстовый, а не выражение)
19.10.2007
14:57
#4
Отчет написан верно. Бывает, что нужно заново выбрать и подтвердить тип ячейки таблицы. Попробуй
26.10.2007
11:25
#6
Если ДатаЗнач - периодический реквизит (изменяется в зависимости от даты), точгда его надо получать с помощью команды Получить(ДатаПолучения). Т.е. Это должно выглядеть так: ДатаЗнач.Получить(ДатаПолученияПериодическогоРеквизита). Если что не понятно, пишите - вместе разберемся. Надеюсь...
Читают тему
(гостей: 1)