|
Получить ФИО Сотрудника | ☑ | ||
---|---|---|---|---|
0
Ikatesgi
01.03.17
✎
12:54
|
Здрасте, добавляю внешнюю печатную форму к документу прием на работу в организацию. И нужно получить инициалы, но если в документе больше одного сотрудника, то данные берутся по первому в списке, в чем ошибка?
[1Ñ]Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия, | ФИОФизЛицСрезПоследних.Имя КАК Имя, | ФИОФизЛицСрезПоследних.Отчество КАК Отчество | ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизацию.РаботникиОрганизации.ФизЛицо |ГДЕ | ПриемНаРаботуВОрганизацию.РаботникиОрганизации.ФизЛицо = &ФизЛицо"; Запрос.УстановитьПараметр("ФизЛицо",СтрДокП.Сотрудник.Физлицо); Запрос.УстановитьПараметр("Дата",ТекущаяДата()); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Подвал.Параметры.фамилия = ВыборкаДетальныеЗаписи.фамилия; Подвал.Параметры.имя = ВыборкаДетальныеЗаписи.имя; Подвал.параметры.отчество = ВыборкаДетальныеЗаписи.Отчество; Подвал.Параметры.ФИОр = Лев(ВыборкаДетальныеЗаписи.Имя,1) +". "+Лев(ВыборкаДетальныеЗаписи.Отчество,1)+". " +ВыборкаДетальныеЗаписи.Фамилия+""; КонецЦикла; [/1Ñ] |
|||
1
Naf2017
01.03.17
✎
13:03
|
(0) соединять надо с табличной частью документа
|
|||
2
balak05
01.03.17
✎
13:05
|
(0) Ты же сам передаешь параметр физЛицо - Запрос.УстановитьПараметр("ФизЛицо",СтрДокП.Сотрудник.Физлицо);
|
|||
3
Вафель
01.03.17
✎
13:07
|
проще вцнкцию использовать
|
|||
4
Вафель
01.03.17
✎
13:07
|
СтруктрураФИО = ФизическиеЛицаУТ.ФамилияИмяОтчество(Шапка.ФизическоеЛицо);
|
|||
5
balak05
01.03.17
✎
13:07
|
(0) где вообще не нужно - просто делай соединение с ТЧ
|
|||
6
catena
01.03.17
✎
13:07
|
э... и указание на конкретный документ было бы не плохо.
|
|||
7
balak05
01.03.17
✎
13:10
|
(0) Запрос.Текст =
"ВЫБРАТЬ | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия, | ФИОФизЛицСрезПоследних.Имя КАК Имя, | ФИОФизЛицСрезПоследних.Отчество КАК Отчество | ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизацию | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизацию.ФизЛицо |ГДЕ | ПриемНаРаботуВОрганизацию.ссылка = &ссылка"; |
|||
8
balak05
01.03.17
✎
13:11
|
(7) Это примерно - не знаю что за конфигурация у тебя
|
|||
9
Ikatesgi
01.03.17
✎
14:48
|
если делать так то вылезает ошибка
Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. ПриемНаРаботуВОрганизацию.Ссылка <<?>>= &Ссылка [1Ñ] Запрос.Текст = "ВЫБРАТЬ | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия, | ФИОФизЛицСрезПоследних.Имя КАК Имя, | ФИОФизЛицСрезПоследних.Отчество КАК Отчество | ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизацию.РаботникиОрганизации.ФизЛицо | ГДЕ | ПриемНаРаботуВОрганизацию.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.РаботникиОрганизаци); Запрос.УстановитьПараметр("Дата",ТекущаяДата()); РезультатЗапроса = Запрос.Выполнить(); [/1Ñ] |
|||
10
Pentosh
01.03.17
✎
14:57
|
(9) проблема тут
Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.РаботникиОрганизаци); |
|||
11
Pentosh
01.03.17
✎
14:58
|
(9) и тут
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию вам же написали что нужно с ТЧ соединять | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизацию |
|||
12
k1noshkin
01.03.17
✎
15:14
|
В типовых есть функция, которая возвращает Фамилию и инициалы по переданной строке или ссылке на физлицо.
Например, в ЗУП 2.5 называется ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(ВыборкаПоФЛ.ФизЛицоНаименование) По поводу твоего алгоритма, проверь, что передается в Запрос.УстановитьПараметр("ФизЛицо",СтрДокП.Сотрудник.Физлицо). Строки документов в цикле проходят? |
|||
13
Ikatesgi
01.03.17
✎
15:32
|
(10)Извините за невнимательность, соединил ТЧ и результат тот же
[1Ñ] | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия, | ФИОФизЛицСрезПоследних.Имя КАК Имя, | ФИОФизЛицСрезПоследних.Отчество КАК Отчество | ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | ГДЕ | ПриемНаРаботуВОрганизациюРаботникиОрганизацииСсылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.); Запрос.УстановитьПараметр("Дата",ТекущаяДата()); РезультатЗапроса = Запрос.Выполнить(); [/1Ñ] |
|||
14
Alexandr_U1982
01.03.17
✎
15:35
|
(13) Лишняя точка в "Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.);"
Надо: Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект); |
|||
15
Pentosh
01.03.17
✎
15:36
|
| ПриемНаРаботуВОрганизациюРаботникиОрганизацииСсылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.); .Сссылка = &Ссылка и после СсылкаНаОбъект точка лишняя |
|||
16
Alexandr_U1982
01.03.17
✎
15:38
|
+(14) И если надо получить фамилию с инициалами, то можно сразу в запросе написать:
| ЕСТЬNULL(ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """" | ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """" | ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ + "" "" + ФИОФизЛицСрезПоследних.Фамилия, ОтветственныеЛицаСрезПоследних.НаименованиеФизлица) КАК НаименованиеОтветственногоЛица, |ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо |ГДЕ | ПриемНаРаботуВОрганизациюРаботникиОрганизацииСсылка = &Ссылка"; |
|||
17
Alexandr_U1982
01.03.17
✎
15:39
|
+(16) Вот так правильно
| ЕСТЬNULL(ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """" | ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """" | ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" | ИНАЧЕ """" | КОНЕЦ + "" "" + ФИОФизЛицСрезПоследних.Фамилия, ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.Физлицо.Наименование) КАК НаименованиеОтветственногоЛица, |ИЗ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо |ГДЕ | ПриемНаРаботуВОрганизациюРаботникиОрганизацииСсылка = &Ссылка"; |
|||
18
Ikatesgi
01.03.17
✎
15:41
|
(14) (15) Да да да спасибо, сюда криво скопировал просто, лишние точки сразу убрал)
|
|||
19
Pentosh
01.03.17
✎
15:42
|
(18) а не лишние поставил?
|
|||
20
Pentosh
01.03.17
✎
15:43
|
и вообще, делали бы вы отладку запроса в "консоль запросов", проблем бы меньше было.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |