Справочник СотрудникиОрганизаций

Новая тема
Как сделать в ФормеСписка Справочник.СотрудникиОрганизаций дополнительную колонку ГрафикРаботы, чтобы данные брались из РегистраСведений.РаботникиОрганизаций?

На примере должность и подразделение меняешь когда Сотруднику в кладке Кадроввые данные в справочнике меняется и видно в ФормеСписака, а вот ГрафикРаботы нет.
Основная проблема в чем?получить данные или вывести?
Вывести. Колоночку ГрафикиРаботы создала в Списке, но данные там при изменении документа не меняются, как с должностью и подраздееление.
Когда меняешь в кадровом перемещении должность в справочнике в ФормеСписка все меняется, а вот ГрафикРаботы нет.
Все сделала:)
Как, если не секрет?
"Справочник.СотрудникиОрганизаций

1. Создала реквизит ТекущаяДолжностьОрганизации1, я просто скопировала "ТекущаяДолжностьОрганизации" и  поменяла тип с СправочникСсылка.ДолжностиОрганизаций на СправочникСсылка.ГрафикиРаботы
2. Создала в ФормеСписка поле должность и переименовала на График работы, то есть скопировала и вставила, изменив имя с "Должность" на "ГрафикРаботы" и выбрала в свойстве поле данные "ТекущаяДолжностьОрганизации" на "ТекущаяДолжностьОрганизации1"
3. Дописала в общем модуле. ПолныеПраваЗК две процедуры, вот текст:


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




Процедура ЗаписатьТекущиеКадровыеДанныеСотрудникаОрганизации(Отказ, Замещение, БезРегистратора, Регистратор) Экспорт       Запрос = Новый Запрос;    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;       Запрос.УстановитьПараметр("Регистратор", Регистратор);       Запрос.Текст =    "ВЫБРАТЬ РАЗЛИЧНЫЕ    |    РаботникиОрганизаций.Сотрудник КАК Сотрудник    |ПОМЕСТИТЬ ВТСотрудники    |ИЗ    |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций    |ГДЕ    |    РаботникиОрганизаций.Регистратор = &Регистратор    |    |ИНДЕКСИРОВАТЬ ПО    |    Сотрудник    |;    |    |////////////////////////////////////////////////////////////­////////////////////    |ВЫБРАТЬ    |    Сотрудники.Сотрудник,    |    ВЫБОР    |        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |            ТОГДА РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение    |        ИНАЧЕ РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделениеЗавершения    |    КОНЕЦ КАК ОбособленноеПодразделение,    |    ВЫБОР    |        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |            ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации    |        ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения    |    КОНЕЦ КАК ПодразделениеОрганизации,    |    ВЫБОР    |        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |            ТОГДА РаботникиОрганизацийСрезПоследних.Должность    |        ИНАЧЕ РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения    |    КОНЕЦ КАК Должность,
//тут
   |    ВЫБОР    |        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |            ТОГДА РаботникиОрганизацийСрезПоследних.ГрафикРаботы    |        ИНАЧЕ РаботникиОрганизацийСрезПоследних.ГрафикРаботыЗавершения    |    КОНЕЦ КАК ГрафикРаботы,
//тут
   |    ЕСТЬNULL(РаботникиОрганизацийПрием.Период, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриемаНаРаботу,    |    ВЫБОР    |        КОГДА ЕСТЬNULL(РаботникиОрганизацийУвольнение.Период, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)    |            ТОГДА ДАТАВРЕМЯ(1, 1, 1)    |        ИНАЧЕ ДОБАВИТЬКДАТЕ(РаботникиОрганизацийУвольнение.Период, ДЕНЬ, -1)    |    КОНЕЦ КАК ДатаУвольнения    |ИЗ    |    ВТСотрудники КАК Сотрудники    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(    |                ,    |                Сотрудник В    |                        (ВЫБРАТЬ    |                            Сотрудники.Сотрудник    |                        ИЗ    |                            ВТСотрудники КАК Сотрудники)    |                    " + ?(БезРегистратора, "И Регистратор <> &Регистратор", """") + ") КАК РаботникиОрганизацийСрезПоследних    |        ПО Сотрудники.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийПрием    |        ПО Сотрудники.Сотрудник = РаботникиОрганизацийПрием.Сотрудник    |            И (ВЫБОР    |                КОГДА РаботникиОрганизацийПрием.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                    ТОГДА РаботникиОрганизацийПрием.ПричинаИзмененияСостояния    |                ИНАЧЕ РаботникиОрганизацийПрием.ПричинаИзмененияСостоянияЗавершения    |            КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу))    |            " + ?(БезРегистратора, "И (РаботникиОрганизацийПрием.Регистратор <> &Регистратор)", """") + "    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийУвольнение    |        ПО Сотрудники.Сотрудник = РаботникиОрганизацийУвольнение.Сотрудник    |            И (ВЫБОР    |                КОГДА РаботникиОрганизацийУвольнение.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                    ТОГДА РаботникиОрганизацийУвольнение.ПричинаИзмененияСостояния    |                ИНАЧЕ РаботникиОрганизацийУвольнение.ПричинаИзмененияСостоянияЗавершения    |            КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))    |            " + ?(БезРегистратора, "И (РаботникиОрганизацийУвольнение.Регистратор <> &Регистратор)", """") + "    |ГДЕ    |    (Сотрудники.Сотрудник.ТекущееОбособленноеПодразделение <> ЕСТЬNULL(ВЫБОР    |                    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                        ТОГДА РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение    |                    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделениеЗавершения    |                КОНЕЦ, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))    |            ИЛИ Сотрудники.Сотрудник.ТекущееПодразделениеОрганизации <> ЕСТЬNULL(ВЫБОР    |                    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                        ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации    |                    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения    |                КОНЕЦ, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))    |            ИЛИ Сотрудники.Сотрудник.ТекущаяДолжностьОрганизации <> ЕСТЬNULL(ВЫБОР    |                    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                        ТОГДА РаботникиОрганизацийСрезПоследних.Должность    |                    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения    |                КОНЕЦ, ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка))
//тут
   |            ИЛИ Сотрудники.Сотрудник.ТекущаяДолжностьОрганизации1 <> ЕСТЬNULL(ВЫБОР    |                    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)    |                        ТОГДА РаботникиОрганизацийСрезПоследних.ГрафикРаботы    |                    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ГрафикРаботыЗавершения    |                КОНЕЦ, ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка))
//тут
   |            ИЛИ Сотрудники.Сотрудник.ДатаПриемаНаРаботу <> ЕСТЬNULL(РаботникиОрганизацийПрием.Период, ДАТАВРЕМЯ(1, 1, 1))    |            ИЛИ Сотрудники.Сотрудник.ДатаУвольнения <> ЕСТЬNULL(РаботникиОрганизацийУвольнение.Период, ДАТАВРЕМЯ(1, 1, 1)))";       Выборка = Запрос.Выполнить().Выбрать();       УстановитьРеквизитыИЗаписатьСотрудникаОрганизации(Выборка, Отказ);   КонецПроцедуры
"
Ну не плохо. Только назвать новый реквизит можно было по человечески "ТекущийГрафикРаботыОрганизации" и, если нужен этот реквизит только для вывода в форму списка, то можно было ограничиться только правкой этой формы списка (добавить колонку в форму и заполнить ее в процедуре формы "ПриПолученииДанных()").
А что писать в этой процедуре ПриПолученииДанных()?
Надо же как то связать с РегистррСведений.РаботникиОрганизаций.СрезПоследних...
Хочу попробывать еще и твой предложенный вариант:)
Подскажи, пожалуйста.
http://files.mail.ru/B9BD6974E2C84E8FB843AC61BB5C8333;
Вот файл конфигурации, в котором измененная форма списка (для релиза 2.5.66.2). Рассчитываю на то, что взять изменения через "Сравнить и изменить" сможете...
Читают тему
(гостей: 1)

Быстрый переход