Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
#1

1С ЗУП 3.1 Внешняя обработка с макетом как получить адрес сотрудника по прописке из запроса - 1С

22.03.2018, 14:09. Просмотров 552. Ответов 16
Метки нет (Все метки)

Добрый день! Помогите пожалуйста. Кто-то уже разобрался в вопросе как в 1С ЗУП 3.1 во внешней обработке нужно получить адрес сотрудника по прописке в запросе и вывести в поле макета.

Привожу функцию с запросом.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Функция ПечатьВнешнейПечатнойФормы(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт
 
    ТабДок = новый ТабличныйДокумент;
    Макет = ПолучитьМакет("ПФ_MXL_Т5");
    НастройкиПечатныхФорм = ЗарплатаКадрыПовтИсп.НастройкиПечатныхФорм();
    
    ДокументРезультат = Новый ТабличныйДокумент;
    ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_Т5";
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Запрос.Текст =
        "ВЫБРАТЬ
        |   КадровыйПеревод.Организация КАК Организация,
        |   КадровыйПеревод.Сотрудник КАК Сотрудник,
        |   КадровыйПеревод.Подразделение КАК Подразделение,
        |   КадровыйПеревод.Должность КАК Должность,
        |   КадровыйПеревод.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
        |   КадровыйПеревод.ГрафикРаботы КАК ГрафикРаботы,
        |   КадровыйПеревод.Номер КАК Номер,
        |   КадровыйПеревод.Дата КАК Дата,
        |   КадровыйПеревод.Организация.НаименованиеПолное КАК ОрганизацияНаименованиеПолное,
        |   КадровыйПеревод.ИзменитьПодразделениеИДолжность КАК ИзменитьПодразделениеИДолжность,
        |   ОсновныеДанныеКонтрактаДоговораСотрудника.ДатаДоговораКонтракта КАК ДатаДоговораКонтракта,
        |   ОсновныеДанныеКонтрактаДоговораСотрудника.НомерДоговораКонтракта КАК НомерДоговораКонтракта,
        |   ОсновныеДанныеКонтрактаДоговораСотрудника.Сотрудник КАК Сотрудник1,
        |   КадровыйПеревод.Руководитель КАК Руководитель,
        |   КадровыйПеревод.ДолжностьРуководителя КАК ДолжностьРуководителя,
        |   КадровыйПеревод.ФизическоеЛицо.ДатаРождения КАК ФизическоеЛицоДатаРождения,
        |   КадровыйПеревод.ФизическоеЛицо.ИНН КАК ФизическоеЛицоИНН,
        |   КадровыйПеревод.ФизическоеЛицо.СтраховойНомерПФР КАК ФизическоеЛицоСтраховойНомерПФР,
        |   КадровыйПеревод.ФизическоеЛицо.Фамилия КАК ФизическоеЛицоФамилия,
        |   КадровыйПеревод.ФизическоеЛицо.ИнициалыИмени КАК ФизическоеЛицоИнициалыИмени,
        |   КадровыйПеревод.ФизическоеЛицо.Код КАК ФизическоеЛицоКод,
        |   КадровыйПеревод.ФизическоеЛицо.Наименование КАК ФизическоеЛицоНаименование,
        |   КадровыйПеревод.Руководитель.Фамилия КАК РуководительФамилия,
        |   КадровыйПеревод.Руководитель.ИнициалыИмени КАК РуководительИнициалыИмени,
        |   КадровыйПеревод.Руководитель.Отчество КАК РуководительОтчество,
        |   КадровыйПеревод.ФизическоеЛицо.Отчество КАК ФизическоеЛицоОтчество,
        |   КадровыйПеревод.Организация.ИНН КАК ОрганизацияИНН,
        |   ДокументыФизическихЛиц.Серия КАК Серия,
        |   ДокументыФизическихЛиц.Номер КАК Номер1,
        |   ДокументыФизическихЛиц.ДатаВыдачи КАК ДатаВыдачи,
        |   ДокументыФизическихЛиц.КемВыдан КАК КемВыдан,
        |   ДокументыФизическихЛиц.КодПодразделения КАК КодПодразделения,
        |   ДокументыФизическихЛиц.Представление КАК Представление,
        |   ДокументыФизическихЛиц.Физлицо КАК Физлицо,
        |   ДокументыФизическихЛиц.Физлицо.КонтактнаяИнформация.(
        |       Представление КАК ФизлицоПредставление
        |   ) КАК Физлицо1
        |ИЗ
        |   РегистрСведений.ОсновныеДанныеКонтрактаДоговораСотрудника КАК ОсновныеДанныеКонтрактаДоговораСотрудника
        |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод КАК КадровыйПеревод
        |           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
        |           ПО КадровыйПеревод.ФизическоеЛицо = ДокументыФизическихЛиц.Физлицо
        |       ПО ОсновныеДанныеКонтрактаДоговораСотрудника.Сотрудник = КадровыйПеревод.Сотрудник
        |ГДЕ
        |   КадровыйПеревод.Ссылка В(&МассивОбъектов)";
        
        Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
        ОбщаяВыборка = Запрос.Выполнить().Выгрузить();
 
 
    
        ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
        ОбластьРаботник = Макет.ПолучитьОбласть("Работник");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
 
    Для Каждого Стр из ОбщаяВыборка Цикл
 
            ОбластьШапка.Параметры.НомерДок = Стр.Номер;
            ОбластьШапка.Параметры.НазваниеОрганизации = Стр.ОрганизацияНаименованиеПолное;
            ОбластьШапка.Параметры.ДатаДок = Стр.Дата;
            ОбластьРаботник.Параметры.Работник = Стр.Сотрудник;
            ОбластьПодвал.Параметры.Работник = Стр.Сотрудник;
            ОбластьПодвал.Параметры.НазваниеОрганизации = Стр.ОрганизацияНаименованиеПолное;
            ОбластьПодвал.Параметры.ДолжностьРуководителя = Стр.ДолжностьРуководителя;
            ОбластьШапка.Параметры.ДолжностьРуководителя=Стр.ДолжностьРуководителя;
            ОбластьШапка.Параметры.Руководитель=Стр.Руководитель;
            ОбластьПодвал.Параметры.РуководительФамилия = Стр.РуководительФамилия;
            ОбластьПодвал.Параметры.РуководительИнициалыИмени = Стр.РуководительИнициалыИмени;
            ОбластьПодвал.Параметры.РуководительОтчество = Лев(Стр.РуководительОтчество,1);
            ОбластьПодвал.Параметры.ФизическоеЛицоДатаРождения=Стр.ФизическоеЛицоДатаРождения;
            ОбластьПодвал.Параметры.ФизическоеЛицоИНН = Стр.ФизическоеЛицоИНН;
            ОбластьПодвал.Параметры.ФизическоеЛицоСтраховойНомерПФР = Стр.ФизическоеЛицоСтраховойНомерПФР;
            ОбластьПодвал.Параметры.ФизическоеЛицоФамилия = Стр.ФизическоеЛицоФамилия;
            ОбластьПодвал.Параметры.ФизическоеЛицоИнициалыИмени = Стр.ФизическоеЛицоИнициалыИмени;
            ОбластьПодвал.Параметры.ФизическоеЛицоОтчество = Лев(Стр.ФизическоеЛицоОтчество,1);
            ОбластьПодвал.Параметры.ОрганизацияИНН = Стр.ОрганизацияИНН;
            Если СтрНайти(Стр.ОрганизацияНаименованиеПолное, "КМК",,,) = "КМК" Тогда
                ОбластьПодвал.Параметры.РасчСч = "40702810" ;
            Иначе
                ОбластьПодвал.Параметры.РасчСч = "40702810";
            КонецЕсли;
            ОбластьПодвал.Параметры.Паспорт = Стр.Представление;
    
    КонецЦикла;
 
    ДокументРезультат.Вывести(ОбластьШапка);
    ДокументРезультат.Вывести(ОбластьРаботник);
    ДокументРезультат.Вывести(ОбластьПодвал);
Возврат ДокументРезультат;
    
КонецФункции

Дело в том, что параметр Физлицо1 выводится пустым в макете. Проверяя запрос в консоли Запросов данные в параметре Физлицо1 есть.
Приведу результат запроса:

Пожалуйста подскажите кто разобрался как сделать.
http://www.cyberforum.ru/1c-standard/thread2141820.html
0
Миниатюры
1С ЗУП 3.1 Внешняя обработка с макетом как получить адрес сотрудника по прописке из запроса  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2018, 14:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 1С ЗУП 3.1 Внешняя обработка с макетом как получить адрес сотрудника по прописке из запроса (1С):

ЗУП 3.1 Как получить оклад/тарифную ставки и дополнительные начисления сотрудника?
Здравствуйте. ЗУП 3.1 Как получить оклад/тарифную ставки и дополнительные...

Поиск сотрудника, ЗУП
Доброе время суток. Нужна помощь с загадкой в коде 8.2 ЗУП,Зарплата и...

Не могу получить ссылку на форму, с которой вызывается внешняя обработка
Добрый день! Создал дополнительную внешнюю обработку, прикрепил ее к документу...

На одном из компьютеров адрес dhcp-сервера сменился на адрес компьютера другого сотрудника
Здравствуйте! Столкнулся с такой проблемой: на одном из компьютеров...

1с ЗУП. Счета учета зарплаты сотрудника
Добрый день. Делаю обработку в ЗУП. Требуется: найти счет, на котором будут...

16
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 14:12 #2
khenata, здравствуйте. Что-то я не увидела, где у вас в коде выводится поле Физлицо1 в параметрах макета?
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 14:24  [ТС] #3
Справедливое замечание, не уточнила.
При попытке вывести В Цикле Для Каждого ругается что не нет поля ФизЛицо1.

Если использовать цикл этот, то пустое сообщение выходит.

1C
1
2
3
Пока Выборка.Следующий() Цикл
      Сообщить(Выборка.ФизЛицо1);
КонеЦикла
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 14:58 #4
khenata, надо делать соединение с табличной частью КонтактнаяИнформация и отбором по типу и виду информации(адрес) или при обходе выборки дополнительно прописывать Выбрать()
Например, попробуйте:
1C
1
2
3
4
5
6
Пока Выборка.Следующий() Цикл
 ВыборкаДетальная = Выборка.Выбрать();
 Пока ВыборкаДетальная.Следующий() Цикл
   Сообщить(ВыборкаДетальная.ФизлицоПредставление);
 КонецЦикла;
КонеЦикла
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 15:35  [ТС] #5
попробовала предложенный вариант. вот что получилось:

1C
1
2
3
4
5
6
7
8
9
10
11
Пока Выборка.Следующий() Цикл
            Сообщить(Выборка.ФизЛицо);
            Сообщить(Выборка.Номер);
 
             ВыборкаДетальная = Выборка.Выбрать();
             Сообщить(ВыборкаДетальная);
             Пока ВыборкаДетальная.Следующий() Цикл
                 
                Сообщить(ВыборкаДетальная.ФизлицоПредставление);
            КонецЦикла;
        КонецЦикла;
и когда добавила Сообщить(ВыборкаДетальная);
стало выдавать ошибку:"Несоответствие типов(параметр номер '1'
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 15:38 #6
khenata,
1C
1
2
3
4
5
6
7
8
Пока Выборка.Следующий() Цикл
            Сообщить(Выборка.ФизЛицо);
            Сообщить(Выборка.Номер);
             ВыборкаДетальная = Выборка.Выбрать();
             Пока ВыборкаДетальная.Следующий() Цикл
                  Сообщить(ВыборкаДетальная.ФизлицоПредставление);
            КонецЦикла;
        КонецЦикла;
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 15:43  [ТС] #7
А это Сообщить(ВыборкаДетальная.ФизлицоПредставление); не выводится никак, похоже в цикл не заходит. даже любое другое сообщение текстовое не выводится в цикле ВыборкаДетальная.
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 15:55 #8
khenata, так а у этого ФизЛица прописан адрес вообще? Покажите ваш рабочий код, без Сообщить(), где вы пытаетесь вывести контактную информацию.
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 16:06  [ТС] #9
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Пока Выборка.Следующий() Цикл
            Сообщить(Выборка.ФизЛицо);
            Сообщить(Выборка.Номер);
            ОбластьШапка.Параметры.НомерДок = Выборка.Номер;
            ОбластьШапка.Параметры.НазваниеОрганизации = Выборка.ОрганизацияНаименованиеПолное;
            ОбластьШапка.Параметры.ДатаДок = Выборка.Дата;
            ОбластьРаботник.Параметры.Работник = Выборка.Сотрудник;
            ОбластьПодвал.Параметры.Работник = Выборка.Сотрудник;
            ОбластьПодвал.Параметры.НазваниеОрганизации = Выборка.ОрганизацияНаименованиеПолное;
            ОбластьПодвал.Параметры.ДолжностьРуководителя = Выборка.ДолжностьРуководителя;
            ОбластьШапка.Параметры.ДолжностьРуководителя=Выборка.ДолжностьРуководителя;
            ОбластьШапка.Параметры.Руководитель=Выборка.Руководитель;
            ОбластьПодвал.Параметры.РуководительФамилия = Выборка.РуководительФамилия;
            ОбластьПодвал.Параметры.РуководительИнициалыИмени = Выборка.РуководительИнициалыИмени;
            ОбластьПодвал.Параметры.РуководительОтчество = Лев(Выборка.РуководительОтчество,1);
            ОбластьПодвал.Параметры.ФизическоеЛицоДатаРождения=Выборка.ФизическоеЛицоДатаРождения;
            ОбластьПодвал.Параметры.ФизическоеЛицоИНН = Выборка.ФизическоеЛицоИНН;
            ОбластьПодвал.Параметры.ФизическоеЛицоСтраховойНомерПФР = Выборка.ФизическоеЛицоСтраховойНомерПФР;
            ОбластьПодвал.Параметры.ФизическоеЛицоФамилия = Выборка.ФизическоеЛицоФамилия;
            ОбластьПодвал.Параметры.ФизическоеЛицоИнициалыИмени = Выборка.ФизическоеЛицоИнициалыИмени;
            ОбластьПодвал.Параметры.ФизическоеЛицоОтчество = Лев(Выборка.ФизическоеЛицоОтчество,1);
            ОбластьПодвал.Параметры.ОрганизацияИНН = Выборка.ОрганизацияИНН;
            Если СтрНайти(Выборка.ОрганизацияНаименованиеПолное, "КМК",,,) = "КМК" Тогда
                ОбластьПодвал.Параметры.РасчСч = "40702810438000007999" ;
            Иначе
                ОбластьПодвал.Параметры.РасчСч = "40702810538180008909";
            КонецЕсли;
            ОбластьПодвал.Параметры.Паспорт = Выборка.Представление;
    
 
             ВыборкаДетальная = Выборка.Выбрать();
             
             Пока ВыборкаДетальная.Следующий() Цикл
                
                Сообщить(ВыборкаДетальная.ФизлицоПредставление);
                ОбластьПодвал.Параметры.Адрес = ВыборкаДетальная.ФизлицоПредставление;
            КонецЦикла;
        КонецЦикла;
не выводится в макет. с помощью Сообщить() проверяю. если данные выведутся, то и в макет попадают.

Добавлено через 1 минуту
то, что относится к Выборка - все в макете выводится.
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 16:07 #10
khenata, покажите ваш запрос и посмотрите в базе есть ли контактная информация для данного физ.лица.
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 16:11  [ТС] #11
да есть, потому что результат запроса дает эту информацию. я подкрепляла файл с результатом - там видно все, если не трудно гляньте пж-ста. отлаживаю на документе кадровое перемещение - там одно физ.лицо.
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 16:24 #12
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

khenata, измените код:
1C
1
2
3
4
5
6
ВыборкаДетальная = Выборка.ФизЛицо1.Выбрать();
 
Пока ВыборкаДетальная.Следующий() Цикл
    Сообщить(ВыборкаДетальная.ФизлицоПредставление);
    ОбластьПодвал.Параметры.Адрес = ВыборкаДетальная.ФизлицоПредставление;
КонецЦикла;
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 16:31  [ТС] #13
Вот это я не догадалась так выбрать..... мне наука.
Все получилось!!!
ВЫ СУПЕР! СУПЕР! СУПЕР!
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
22.03.2018, 16:32 #14
Цитата Сообщение от khenata Посмотреть сообщение
ВЫ СУПЕР! СУПЕР! СУПЕР!
а вы сделали мой день
Обращайтесь
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
22.03.2018, 16:34  [ТС] #15
СПАСИБО, буду.
0
khenata
0 / 0 / 0
Регистрация: 09.11.2017
Сообщений: 17
07.06.2018, 16:45  [ТС] #16
GreenkA,

Здравствуйте!
Подскажите пожалуйста как с помощью цикла сравнить каждую запись из первого запроса и второго запроса. Какие способы нужно использовать. Цикл в цикле неправильно получается.
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1509 / 474
Регистрация: 25.06.2009
Сообщений: 5,424
08.06.2018, 11:25 #17
Цитата Сообщение от khenata Посмотреть сообщение
Подскажите пожалуйста как с помощью цикла сравнить каждую запись из первого запроса и второго запроса
может создадите новую тему и выложите эти два запроса?) два месяца прошло...
как вариант: сделать из двух запросов - один. а как - надо смотреть.
0
08.06.2018, 11:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2018, 11:25
Привет! Вот еще темы с решениями:

Внешняя печатная форма ЗУП 8.2
Здравствуйте, помогите разобраться, создал внешнюю печатную форму, на основе...

Внешняя печатная форма в ЗУП 3.0
Здравствуйте. Помогите пожалуйста. Задача: на основании документа...

ЗУП редакция 2.5: Сведения о зарплате сотрудника за предыдкщие периоды
Добрый день. ЗУП редакция 2.5, начало работы. Раньше начисляли зарплату в...

1С 8.3. ЗУП 3.1. Необходимо при изменении сотрудника автоматически подставлялась его должность
Здравствуйте. 1С 8.3. ЗУП 3.1. Необходимо в электронной форме документа при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru