Имя: Пароль:
1C
1С v8
Получить ФИО Сотрудника
,
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&#209;]
Запрос.Текст =
"ВЫБРАТЬ
| ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия,
| ФИОФизЛицСрезПоследних.Имя КАК Имя,
| ФИОФизЛицСрезПоследних.Отчество КАК Отчество
|  ИЗ
| РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию
| ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизацию.РаботникиОрганизации.ФизЛицо
| ГДЕ
| ПриемНаРаботуВОрганизацию.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.РаботникиОрганизаци);
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
[/1&#209;]
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&#209;]
| ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия,
| ФИОФизЛицСрезПоследних.Имя КАК Имя,
| ФИОФизЛицСрезПоследних.Отчество КАК Отчество
|  ИЗ
| РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата, ) КАК ФИОФизЛицСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
| ПО ФИОФизЛицСрезПоследних.ФизЛицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо
| ГДЕ
| ПриемНаРаботуВОрганизациюРаботникиОрганизацииСсылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.);
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
[/1&#209;]
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
и вообще, делали бы вы отладку запроса в "консоль запросов", проблем бы меньше было.