helpf.pro
Регистрация

Проблема с методом ПриВыводеСтроки

IKSparrow
19.05.2011 11:09Прочитано: 6569
За основу взята штатная конфигурация ЗУП 8.2. Режим приложения - обычное приложение.
Дел на минуту - добавить новую колонку в справочник сотрудников. Но то, что случилось дальше, в очередной раз перевернуло моё представление о работе с 1С. В чём я ошибся?
Собственно описание действий:
1. Открываем форму списка справочника сотрудников организаций и добавляем колонку в таблицу формы "СправочникСписок" под названием "Состояние сотрудника"
2. Создаём новый метод "ПриВыводеСтроки" и помещаем туда следующий код:
Код 1C v 8.2 УП
 
Функция ВернутьСостояниеСотрудника(Сотрудник)
ЗапросСостояния = Новый Запрос;
ЗапросСостояния.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| СостояниеРаботниковОрганизацийСрезПоследних.Состояние
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&КонецПериода, Сотрудник = &Сотрудник) КАК СостояниеРаботниковОрганизацийСрезПоследних";
ЗапросСостояния.УстановитьПараметр("КонецПериода",ТекущаяДата());
ЗапросСостояния.УстановитьПараметр("Сотрудник",Сотрудник);

ТЗСостояния = ЗапросСостояния.Выполнить().Выгрузить();
Если ТЗСостояния.Количество() = 0 Тогда
Возврат Ложь;
Иначе
Возврат ТЗСостояния[0].Состояние;
КонецЕсли;
КонецФункции

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если Элемент.ТекущаяСтрока <> Неопределено И ТипЗнч(Элемент.ТекущаяСтрока) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
Если Элемент.ТекущаяСтрока.ЭтоГруппа = Ложь Тогда
// Запросим статус сотрудника
Состояние = ВернутьСостояниеСотрудника(Элемент.ТекущаяСтрока);
Если Состояние = Ложь Тогда
Возврат;
Иначе
ОформлениеСтроки.Ячейки.СостояниеСотрудника.Значение = Состояние;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры


3. Сохраняем, обновляем. Запускаем.

Суть проблемы:
1. Открываем в программе список сотрудников - колонка не заполнена. Почему?
2. Начинаем перемещаться по списку вверх-вниз - колонка заполняется, но явно наблюдается смещение значений - у сотрудника, который должен быть в отпуске статус "работает", а отпуск почему-то у сотрудника одной строкой ниже. Почему?
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
19.05.2011 11:32Ответ № 1
Код 1C v 8.2 УП
 
Иначе
ОформлениеСтроки.Ячейки.СостояниеСотрудника.УстановитьТекст( Состояние);
КонецЕсли;

или
Код 1C v 8.2 УП
 
Иначе
ОформлениеСтроки.Ячейки.СостояниеСотрудника.Значение = Состояние;
ОформлениеСтроки.Ячейки.СостояниеСотрудника.ОтобрахатьТекст = Истина;
КонецЕсли;
Mokey
19.05.2011 11:33Ответ № 2
Сорри
Код 1C v 8.2 УП
 
Иначе
ОформлениеСтроки.Ячейки.СостояниеСотрудника.Текст = Состояние;
ОформлениеСтроки.Ячейки.СостояниеСотрудника.ОтобрахатьТекст = Истина;
КонецЕсли;
Mokey
19.05.2011 11:33Ответ № 3
Отображать*
(что-то с утра промахиваюсь) *03
IKSparrow
19.05.2011 11:41Ответ № 4
Спасибо большое, помогло!
snfr1c
19.05.2011 13:48Ответ № 5
да с ОтобрахатьТекст тоже хорошо смотрится *06
IKSparrow
23.05.2011 09:17Ответ № 6
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.