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

Выбор из Справочника

Автор Dima09, 29 мар 2012, 04:41

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

Dima09

доброе время суток, такой вопрос: есть справочник, из документа формируется таблица и заполняется информацией из этого справочника, сделал цикл по всем, формирует нормально, а вот с выбором определенной строки проблема, не подскажете в чем дело ? Процедура Сформировать()
                 ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Наименование");
ТЗ.НоваяКолонка("Должность");
ТЗ.НоваяКолонка("ДатаРождения");
ТЗ.НоваяКолонка("Подразделение");
ТЗ.НоваяКолонка("ВидРаботы");
ТЗ.НоваяКолонка("Наим_Вред"); 
ТЗ.НоваяКолонка("Дата_приема");
СпрС = СоздатьОбъект("Справочник.Сотрудники");
СпрС.ВыбратьЭлементы();
//Если ВыбСотр.Выбран() = 1 тогда // Загвоздка здесь !
//Пока СпрС.ПолучитьЭлемент() > 0 Цикл
Если ВыбСотр.Выбран() = 1 Тогда ///и (ВыбСотр <> СпрС.ТекущийЭлемент()) Тогда   

ТЗ.НоваяСтрока();
ТЗ.Наименование = СпрС.Наименование;
ТЗ.Должность = СпрС.Должность;
ТЗ.ДатаРождения = СпрС.Дата_Рождения;
ТЗ.Подразделение = СпрС.Подразделение;
ТЗ.ВидРаботы = СпрС.Вид_Работы;
ТЗ.Наим_Вред = СпрС.Наименование_Вред;
ТЗ.Дата_Приема = СпрС.Дата_приема;

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




Процедура СформироватьВсех()
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Наименование");
ТЗ.НоваяКолонка("Должность");
ТЗ.НоваяКолонка("ДатаРождения");
ТЗ.НоваяКолонка("Подразделение");
ТЗ.НоваяКолонка("ВидРаботы");
ТЗ.НоваяКолонка("Наим_Вред");
СпрС = СоздатьОбъект("Справочник.Сотрудники");
СпрС.ВыбратьЭлементы();
Пока СпрС.ПолучитьЭлемент() > 0 Цикл

ТЗ.НоваяСтрока();
ТЗ.Наименование = СпрС.Наименование;
ТЗ.Должность = СпрС.Должность;
ТЗ.ДатаРождения = СпрС.Дата_Рождения;
ТЗ.Подразделение = СпрС.Подразделение;
ТЗ.ВидРаботы = СпрС.Вид_Работы;
ТЗ.Наим_Вред = СпрС.Наименование_Вред;
КонецЦикла;
Таб = СоздатьОбъект("Таблица"); 
Таб.Очистить();
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка"); 
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() > 0 Цикл

Наименование = ТЗ.Наименование;
Должность = ТЗ.Должность;
ДатаРождения = ТЗ.ДатаРождения;
Подразделение = ТЗ.Подразделение;
ВидРаботы = ТЗ.ВидРаботы;
Наим_Вред = ТЗ.Наим_Вред;
Таб.ВывестиСекцию("Строка"); 

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



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

    КонецЕсли;
КонецЦикла;

Таб = СоздатьОбъект("Таблица"); 
Таб.Очистить();
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка"); 
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() > 0 Цикл

Наименование = ТЗ.Наименование;
Должность = ТЗ.Должность;
ДатаРождения = ТЗ.ДатаРождения;
Подразделение = ТЗ.Подразделение;
ВидРаботы = ТЗ.ВидРаботы;
Наим_Вред = ТЗ.Наим_Вред;
Таб.ВывестиСекцию("Строка"); 

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


Процедура ПриОткрытии()

Выбр.ДобавитьЗначение("1 раз в 2 года");
Выбр.ДобавитьЗначение("1 раз в год"); 
КонецПроцедуры       


[img][img]

sergejK74

Реально много букв. Так попробуй (меньше исправлять)
//СпрС.ВыбратьЭлементы();
//Если ВыбСотр.Выбран() = 1 тогда // Загвоздка здесь !
//Пока СпрС.ПолучитьЭлемент() > 0 Цикл
Если ПустоеЗначение(ВыбСотр) = 0 Тогда ///и (ВыбСотр <> СпрС.ТекущийЭлемент()) Тогда   




Пока ТЗ.ПолучитьСтроку() > 0 Цикл
//Если ТЗ.Наименование = ВыбСотр.ТекущийЭлемент() тогда 



//КонецЕсли;

Кнопочка Спасибо - слева!

Dima09

так ошибку дает "Пока ТЗ.ПолучитьСтроку()>0 Цикл Операция сравнения на больше меньше допустимы только над значениями совпадающих базовых типов"

Dima09

Извиняюсь, эт что то я уже пересидел за компом, таблицу выводит только со справочника не заполняет поля остаются пустыми

sergejK74

У тебя сотрудник выбран?
Сделай так
Если ПустоеЗначение(ВыбСотр) = 0 Тогда



Иначе
сообщить("Выберите сотрудника");
Возврат;
КонецЕсли;
Кнопочка Спасибо - слева!

Dima09

сотрудник выбран, код вставил, проходит нормально молчит по поводу выберите сотрудника.

Dima09

попробовал не выбирать, ругается

sergejK74

ТЗ.Наименование = СпрС.Наименование; замени на ТЗ.Наименование = ВыбСотр.Наименование;
и далее еще 6 раз по тексту. Прямо какой-то онлайн отладчик получается. Встроенного отладчика - нет?
Кнопочка Спасибо - слева!

Теги:

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

Рейтинг@Mail.ru

Поиск