Озадачился тут такой проблемой:
В ЗУП КОРП у нас используются территории и необходимо в справочнике "Сотрудники" вывести территорию, за которой закреплен сотрудник.
В самом запросе проблем нет: простой запрос к регистру сведений "ТерриторииСотрудников".
Но проблема вылезла там, где ее не ждешь, а именно: как вывести свою колонку в динамический список.
Цель - ФормаСписка справочника "Сотрудники".
И, вроде, все просто:
1. создал расширение конфигурации
2. импортировал туда справочник, форму списка и.т.д
3. в динамическом списке - Настройка списка, изменил запрос и добавил созданное поле на форму
см. скрин
И, конечно же, ничего не появилось...
В режиме отладки я зашел в настройки формы, проверил - нет такого поля "Территория".
То есть, что получается: механизм, вроде, есть, но он по факту не рабочий?
Или я что-то не доделал?
Обратился я к интернету за данным вопросом и выяснил, что есть 2 решения данной проблемы:
1. переделать исходный запрос в общем модуле СотрудникиФормыРасширенный в функции ТекстыЗапросовФормыВыбораСотрудников()
2. способ, которым я воспользовался, но он, получается, не работает?
Может, кто надоумит, как проще решить данную задачу?
&НаСервере
Процедура км_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
//Вставить содержимое обработчика
Список.ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| 0 КАК ИндикаторПроблем,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.ВерсияДанных КАК ВерсияДанных,
| Сотрудники.ПометкаУдаления КАК ПометкаУдаления,
| Сотрудники.Код КАК Код,
| Сотрудники.Наименование КАК Наименование,
| ДанныеДляПодбора.Наименование КАК НаименованиеСотрудника,
| Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
| Сотрудники.ГоловнаяОрганизация КАК Организация,
| Сотрудники.ВАрхиве КАК ВАрхиве,
| Сотрудники.УточнениеНаименования КАК УточнениеНаименования,
| Сотрудники.ГоловнойСотрудник КАК ГоловнойСотрудник,
| Сотрудники.Предопределенный КАК Предопределенный,
| Сотрудники.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| ВЫБОР
| КОГДА Сотрудники.ПометкаУдаления
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ КАК Пиктограмма,
| ДанныеДляПодбора.Филиал КАК Филиал,
| ДанныеДляПодбора.Подразделение КАК Подразделение,
| ДанныеДляПодбора.Должность КАК Должность,
| ДанныеДляПодбора.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
| ДанныеДляПодбора.КоличествоСтавок КАК КоличествоСтавок,
| ДанныеДляПодбора.КоличествоСтавокПредставление КАК КоличествоСтавокПредставление,
| ВидыЗанятостиСотрудниковДляПодбора.ВидЗанятости КАК ВидЗанятости,
| ЕСТЬNULL(ДанныеДляПодбора.ВидДоговора, ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка)) КАК ВидДоговора,
| ЕСТЬNULL(ТерриторииСотрудников.Территория, ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)) КАК Территория,
| ДанныеОбОплатеТрудаДляПодбора.ТарифнаяСтавка КАК ТарифнаяСтавка,
| ДанныеОбОплатеТрудаДляПодбора.ФОТ КАК ФОТ,
| ДанныеОбОплатеТрудаДляПодбора.Надбавка КАК Надбавка,
| ДанныеОбОплатеТрудаДляПодбора.СпособРасчетаАванса КАК СпособРасчетаАванса,
| ДанныеОбОплатеТрудаДляПодбора.Аванс КАК Аванс,
| ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
| ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения,
| ТекущиеКадровыеДанные.ОформленПоТрудовомуДоговору КАК ОформленПоТрудовомуДоговору,
| ВЫБОР
| КОГДА РолиСотрудниковРаботник.Сотрудник ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Работник,
| ВЫБОР
| КОГДА РолиСотрудниковДоговорник.Сотрудник ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Договорник,
| """" КАК ПредставлениеСостояния,
| СостоянияСотрудников.Состояние КАК Состояние,
| СостоянияСотрудников.ДействуетДо КАК СостояниеДействуетДо,
| ДанныеДляПодбора.РабочееМесто КАК РабочееМесто,
| ДанныеДляПодбора.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник,
| ДанныеДляПодбора.Начало КАК Начало,
| ДанныеДляПодбора.Окончание КАК Окончание,
| ДанныеДляПодбора.МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия
|ИЗ
| РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбора
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ДанныеДляПодбора.Сотрудник = Сотрудники.Ссылка
| И ДанныеДляПодбора.Наименование = Сотрудники.Наименование
| И (ДанныеДляПодбора.ИдентификаторЗаписи В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ДанныеДляПодбораСотрудниковОтбор.ИдентификаторЗаписи
| ИЗ
| РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбораСотрудниковОтбор
| ГДЕ
| ДанныеДляПодбораСотрудниковОтбор.Сотрудник = ДанныеДляПодбора.Сотрудник
| И ДанныеДляПодбораСотрудниковОтбор.Наименование = ДанныеДляПодбора.Наименование
| И ДанныеДляПодбораСотрудниковОтбор.Начало <= &ДатаОкончания
| И (ДанныеДляПодбораСотрудниковОтбор.Окончание = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ ДанныеДляПодбораСотрудниковОтбор.Окончание >= &ДатаНачала)
| УПОРЯДОЧИТЬ ПО
| ДанныеДляПодбораСотрудниковОтбор.ПоДоговоруГПХ,
| ДанныеДляПодбораСотрудниковОтбор.Начало УБЫВ,
| ДанныеДляПодбораСотрудниковОтбор.Организация,
| ДанныеДляПодбораСотрудниковОтбор.Филиал,
| ДанныеДляПодбораСотрудниковОтбор.Подразделение))
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
| ПО ДанныеДляПодбора.ФизическоеЛицо = ТекущиеКадровыеДанные.ФизическоеЛицо
| И ДанныеДляПодбора.Сотрудник = ТекущиеКадровыеДанные.Сотрудник
| И ДанныеДляПодбора.Организация = ТекущиеКадровыеДанные.ГоловнаяОрганизация}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТерриторииСотрудников КАК ТерриторииСотрудников
| ПО ДанныеДляПодбора.ФизическоеЛицо = ТерриторииСотрудников.ФизическоеЛицо
| И ДанныеДляПодбора.Сотрудник = ТерриторииСотрудников.Сотрудник
| И ДанныеДляПодбора.Организация = ТерриторииСотрудников.ГоловнаяОрганизация
| И (ТерриторииСотрудников.Период <= &ДатаОкончания)
| И (ТерриторииСотрудников.ДействуетДо >= &ДатаНачалаСведений
| ИЛИ ТерриторииСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РолиСотрудников КАК РолиСотрудниковРаботник
| ПО ДанныеДляПодбора.Сотрудник = РолиСотрудниковРаботник.Сотрудник
| И (&ИспользуетсяОтборПоРолиСотрудникаРаботник = ИСТИНА)
| И (РолиСотрудниковРаботник.РольСотрудника = ЗНАЧЕНИЕ(Перечисление.РолиСотрудников.Работник))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РолиСотрудников КАК РолиСотрудниковДоговорник
| ПО ДанныеДляПодбора.Сотрудник = РолиСотрудниковДоговорник.Сотрудник
| И (&ИспользуетсяОтборПоРолиСотрудникаДоговорник = ИСТИНА)
| И (РолиСотрудниковДоговорник.РольСотрудника = ЗНАЧЕНИЕ(Перечисление.РолиСотрудников.Договорник))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
| ПО ДанныеДляПодбора.Сотрудник = СостоянияСотрудников.Сотрудник
| И (СостоянияСотрудников.Период <= &ДатаОкончания)
| И (СостоянияСотрудников.ДействуетДо >= &ДатаНачалаСведений
| ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОбОплатеТрудаДляПодбораСотрудников КАК ДанныеОбОплатеТрудаДляПодбора
| ПО ДанныеДляПодбора.Сотрудник = ДанныеОбОплатеТрудаДляПодбора.Сотрудник
| И ДанныеДляПодбора.ФизическоеЛицо = ДанныеОбОплатеТрудаДляПодбора.ФизическоеЛицо
| И ДанныеДляПодбора.ИдентификаторЗаписи = ДанныеОбОплатеТрудаДляПодбора.ИдентификаторЗаписи}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК ВидыЗанятостиСотрудниковДляПодбора
| ПО ДанныеДляПодбора.Сотрудник = ВидыЗанятостиСотрудниковДляПодбора.Сотрудник
| И (ВЫБОР
| КОГДА ДанныеДляПодбора.Окончание = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
| ИНАЧЕ КОНЕЦПЕРИОДА(ДанныеДляПодбора.Окончание, ДЕНЬ)
| КОНЕЦ МЕЖДУ ВидыЗанятостиСотрудниковДляПодбора.ДатаНачала И ВидыЗанятостиСотрудниковДляПодбора.ДатаОкончания)}";
НоваяКолонка_КМ_Территория = Элементы.Вставить("КМ_Территория", Тип("ПолеФормы"), Элементы.Список, Элементы.Подразделение);
НоваяКолонка_КМ_Территория.ПутьКДанным = "Список.Территория";
НоваяКолонка_КМ_Территория.Заголовок = "Территория";
НоваяКолонка_КМ_Территория.Вид = ВидПоляФормы.ПолеНадписи;
КонецПроцедуры
&НаСервере
Процедура км_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
//Вставить содержимое обработчика
Список.ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| 0 КАК ИндикаторПроблем,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.ВерсияДанных КАК ВерсияДанных,
| Сотрудники.ПометкаУдаления КАК ПометкаУдаления,
| Сотрудники.Код КАК Код,
| Сотрудники.Наименование КАК Наименование,
| ДанныеДляПодбора.Наименование КАК НаименованиеСотрудника,
| Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
| Сотрудники.ГоловнаяОрганизация КАК Организация,
| Сотрудники.ВАрхиве КАК ВАрхиве,
| Сотрудники.УточнениеНаименования КАК УточнениеНаименования,
| Сотрудники.ГоловнойСотрудник КАК ГоловнойСотрудник,
| Сотрудники.Предопределенный КАК Предопределенный,
| Сотрудники.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| ВЫБОР
| КОГДА Сотрудники.ПометкаУдаления
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ КАК Пиктограмма,
| ДанныеДляПодбора.Филиал КАК Филиал,
| ДанныеДляПодбора.Подразделение КАК Подразделение,
| ДанныеДляПодбора.Должность КАК Должность,
| ДанныеДляПодбора.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
| ДанныеДляПодбора.КоличествоСтавок КАК КоличествоСтавок,
| ДанныеДляПодбора.КоличествоСтавокПредставление КАК КоличествоСтавокПредставление,
| ВидыЗанятостиСотрудниковДляПодбора.ВидЗанятости КАК ВидЗанятости,
| ЕСТЬNULL(ДанныеДляПодбора.ВидДоговора, ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка)) КАК ВидДоговора,
| ЕСТЬNULL(ТерриторииСотрудников.Территория, ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)) КАК Территория,
| ДанныеОбОплатеТрудаДляПодбора.ТарифнаяСтавка КАК ТарифнаяСтавка,
| ДанныеОбОплатеТрудаДляПодбора.ФОТ КАК ФОТ,
| ДанныеОбОплатеТрудаДляПодбора.Надбавка КАК Надбавка,
| ДанныеОбОплатеТрудаДляПодбора.СпособРасчетаАванса КАК СпособРасчетаАванса,
| ДанныеОбОплатеТрудаДляПодбора.Аванс КАК Аванс,
| ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
| ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения,
| ТекущиеКадровыеДанные.ОформленПоТрудовомуДоговору КАК ОформленПоТрудовомуДоговору,
| ВЫБОР
| КОГДА РолиСотрудниковРаботник.Сотрудник ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Работник,
| ВЫБОР
| КОГДА РолиСотрудниковДоговорник.Сотрудник ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Договорник,
| """" КАК ПредставлениеСостояния,
| СостоянияСотрудников.Состояние КАК Состояние,
| СостоянияСотрудников.ДействуетДо КАК СостояниеДействуетДо,
| ДанныеДляПодбора.РабочееМесто КАК РабочееМесто,
| ДанныеДляПодбора.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник,
| ДанныеДляПодбора.Начало КАК Начало,
| ДанныеДляПодбора.Окончание КАК Окончание,
| ДанныеДляПодбора.МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия
|ИЗ
| РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбора
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ДанныеДляПодбора.Сотрудник = Сотрудники.Ссылка
| И ДанныеДляПодбора.Наименование = Сотрудники.Наименование
| И (ДанныеДляПодбора.ИдентификаторЗаписи В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ДанныеДляПодбораСотрудниковОтбор.ИдентификаторЗаписи
| ИЗ
| РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбораСотрудниковОтбор
| ГДЕ
| ДанныеДляПодбораСотрудниковОтбор.Сотрудник = ДанныеДляПодбора.Сотрудник
| И ДанныеДляПодбораСотрудниковОтбор.Наименование = ДанныеДляПодбора.Наименование
| И ДанныеДляПодбораСотрудниковОтбор.Начало <= &ДатаОкончания
| И (ДанныеДляПодбораСотрудниковОтбор.Окончание = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ ДанныеДляПодбораСотрудниковОтбор.Окончание >= &ДатаНачала)
| УПОРЯДОЧИТЬ ПО
| ДанныеДляПодбораСотрудниковОтбор.ПоДоговоруГПХ,
| ДанныеДляПодбораСотрудниковОтбор.Начало УБЫВ,
| ДанныеДляПодбораСотрудниковОтбор.Организация,
| ДанныеДляПодбораСотрудниковОтбор.Филиал,
| ДанныеДляПодбораСотрудниковОтбор.Подразделение))
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
| ПО ДанныеДляПодбора.ФизическоеЛицо = ТекущиеКадровыеДанные.ФизическоеЛицо
| И ДанныеДляПодбора.Сотрудник = ТекущиеКадровыеДанные.Сотрудник
| И ДанныеДляПодбора.Организация = ТекущиеКадровыеДанные.ГоловнаяОрганизация}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТерриторииСотрудников КАК ТерриторииСотрудников
| ПО ДанныеДляПодбора.ФизическоеЛицо = ТерриторииСотрудников.ФизическоеЛицо
| И ДанныеДляПодбора.Сотрудник = ТерриторииСотрудников.Сотрудник
| И ДанныеДляПодбора.Организация = ТерриторииСотрудников.ГоловнаяОрганизация
| И (ТерриторииСотрудников.Период <= &ДатаОкончания)
| И (ТерриторииСотрудников.ДействуетДо >= &ДатаНачалаСведений
| ИЛИ ТерриторииСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РолиСотрудников КАК РолиСотрудниковРаботник
| ПО ДанныеДляПодбора.Сотрудник = РолиСотрудниковРаботник.Сотрудник
| И (&ИспользуетсяОтборПоРолиСотрудникаРаботник = ИСТИНА)
| И (РолиСотрудниковРаботник.РольСотрудника = ЗНАЧЕНИЕ(Перечисление.РолиСотрудников.Работник))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РолиСотрудников КАК РолиСотрудниковДоговорник
| ПО ДанныеДляПодбора.Сотрудник = РолиСотрудниковДоговорник.Сотрудник
| И (&ИспользуетсяОтборПоРолиСотрудникаДоговорник = ИСТИНА)
| И (РолиСотрудниковДоговорник.РольСотрудника = ЗНАЧЕНИЕ(Перечисление.РолиСотрудников.Договорник))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
| ПО ДанныеДляПодбора.Сотрудник = СостоянияСотрудников.Сотрудник
| И (СостоянияСотрудников.Период <= &ДатаОкончания)
| И (СостоянияСотрудников.ДействуетДо >= &ДатаНачалаСведений
| ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1))}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОбОплатеТрудаДляПодбораСотрудников КАК ДанныеОбОплатеТрудаДляПодбора
| ПО ДанныеДляПодбора.Сотрудник = ДанныеОбОплатеТрудаДляПодбора.Сотрудник
| И ДанныеДляПодбора.ФизическоеЛицо = ДанныеОбОплатеТрудаДляПодбора.ФизическоеЛицо
| И ДанныеДляПодбора.ИдентификаторЗаписи = ДанныеОбОплатеТрудаДляПодбора.ИдентификаторЗаписи}
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК ВидыЗанятостиСотрудниковДляПодбора
| ПО ДанныеДляПодбора.Сотрудник = ВидыЗанятостиСотрудниковДляПодбора.Сотрудник
| И (ВЫБОР
| КОГДА ДанныеДляПодбора.Окончание = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
| ИНАЧЕ КОНЕЦПЕРИОДА(ДанныеДляПодбора.Окончание, ДЕНЬ)
| КОНЕЦ МЕЖДУ ВидыЗанятостиСотрудниковДляПодбора.ДатаНачала И ВидыЗанятостиСотрудниковДляПодбора.ДатаОкончания)}";
НоваяКолонка_КМ_Территория = Элементы.Вставить("КМ_Территория", Тип("ПолеФормы"), Элементы.Список, Элементы.Подразделение);
НоваяКолонка_КМ_Территория.ПутьКДанным = "Список.Территория";
НоваяКолонка_КМ_Территория.Заголовок = "Территория";
НоваяКолонка_КМ_Территория.Вид = ВидПоляФормы.ПолеНадписи;
КонецПроцедуры