Имя: Пароль:
1C
1С v8
Не создается элемент справочника
, ,
0 dema666666666
 
22.09.21
07:20
Всем привет. На http сервисе создаю элемент справочника. _ФизическоеЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент(); Ошибок не выдает, даже через попытку делаю в исключение не попадает. Данный код работал около 2 месяцев без проблем, не могу понять что случилось. Права все есть. Сталкивался кто?
1 Галахад
 
гуру
22.09.21
07:30
Отладкой посмотри.
2 dema666666666
 
22.09.21
07:43
(1) Спасибо, вот я не догадался ) Отладкой смотрю, доходит до него и всё, как будто ошибка, но ничего не происходит, никакой информации что ошибка
3 Aleksey
 
22.09.21
07:44
а ЖР что пишет? Может какая подписка на событие сбоит или где то прописан безусловный отказ?
4 dema666666666
 
22.09.21
07:44
(3) ЖР тоже пустой, вижу что авторизация проходит и всё, больше ничего не фиксируется
5 dema666666666
 
22.09.21
07:45
(3) Я уже и попытку сделал и в случае исключения делаю запись в ЖР с описание ошибки, но бестолку
6 Aleksey
 
22.09.21
07:46
А если напрямую создавать, без Http
7 dema666666666
 
22.09.21
07:47
(6) напрямую пробовал, всё норм, создает как миленький )
8 dema666666666
 
22.09.21
07:54
(6) Чудеса какие-то)
9 Галахад
 
гуру
22.09.21
08:06
Может _ФизическоеЛицо.Записать() удалили? :-)
10 Мимохожий Однако
 
22.09.21
08:08
Не стесняйся. Код выкладывай
11 dema666666666
 
22.09.21
08:11
(9) Да не, он ведь на создатьэлемент() тормозит)
12 dema666666666
 
22.09.21
08:11
(10)

Процедура ВыполнитьОбработкуДанных(Структура, Запрос)
    Параметр = Запрос.ПараметрыURL.Получить("node");
    Если Параметр = "ЗПКОРП1" Тогда
        УзелОбмена = ПланыОбмена.ОбменУПП_ЗУП.НайтиПоНаименованию(Параметр);
        
        ТаблицаФизическихЛиц = ПолучитьТаблицуФизическихЛиц(УзелОбмена);
        ТаблицаФизическихЛиц.Индексы.Добавить("НаименованиеФизЛица, СерияНомер, ИНН, ДатаРождения, УИД");
        
        Для каждого СтрокаСтруктуры Из Структура Цикл
            СтрокаСтруктуры.Значение.Колонки.Добавить("_Ссылка", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
        КонецЦикла;
        
        СоответствиеПоловФизЛиц = Новый Соответствие();
        СоответствиеПоловФизЛиц.Вставить("Мужской", Перечисления.ПолФизическихЛиц.Мужской);
        СоответствиеПоловФизЛиц.Вставить("Женский", Перечисления.ПолФизическихЛиц.Женский);
        
        МассивСтруктурПО = Новый Массив;
        МассивСтруктурПО.Добавить(Новый Структура("УИД"));
        МассивСтруктурПО.Добавить(Новый Структура("НаименованиеФизЛица"));
        МассивСтруктурПО.Добавить(Новый Структура("НаименованиеФизЛица, СерияНомер"));
        МассивСтруктурПО.Добавить(Новый Структура("НаименованиеФизЛица, ИНН"));
        МассивСтруктурПО.Добавить(Новый Структура("НаименованиеФизЛица, ДатаРождения"));
        
        Для каждого СтрокаСтруктуры Из Структура Цикл
            Для каждого Строка Из СтрокаСтруктуры.Значение Цикл
                Если СтрокаСтруктуры.Ключ = "ФизическиеЛица" Тогда
                    Строка.НаименованиеФизЛица = УбратьПробелыИЗаменитьЁНаЕ(Строка.НаименованиеФизЛица);
                    
                    Для каждого МСтрока Из МассивСтруктурПО Цикл
                        ЗаполнитьЗначенияСвойств(МСтрока, Строка);
                        
                        НайденноеЗначение = ТаблицаФизическихЛиц.НайтиСтроки(МСтрока);
                        Если НайденноеЗначение.Количество() > 0 Тогда
                            Строка._Ссылка = НайденноеЗначение[0].Ссылка;
                        КонецЕсли;
                        
                        Если ЗначениеЗаполнено(Строка._Ссылка) Тогда
                            Прервать;
                        КонецЕсли;
                    КонецЦикла;
                    
                    Если НЕ ЗначениеЗаполнено(Строка._Ссылка) И НЕ ПустаяСтрока(Строка.НаименованиеФизЛица) Тогда
                        ФизическоеЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
                        ЗаполнитьЗначенияСвойств(ФизическоеЛицо, Строка, , "Код");
                        
                        Если СтрокаСтруктуры.Ключ = "ФизическиеЛица" Тогда
                            ФизическоеЛицо.Пол = СоответствиеПоловФизЛиц.Получить(Строка.Пол);
                        КонецЕсли;
                        
                        Попытка
                            ФизическоеЛицо.Записать();
                            ЗаблокироватьДанныеДляРедактирования(ФизическоеЛицо.Ссылка);
                        Исключение
                            ЗаписьЖурналаРегистрации("Запись физического лица", УровеньЖурналаРегистрации.Ошибка, ФизическоеЛицо.Метаданные(), , ОписаниеОшибки(), РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
                            Прервать;
                        КонецПопытки;
                        
                        Строка._Ссылка = ФизическоеЛицо.Ссылка;
                    КонецЕсли;
                    
                    Если ЗначениеЗаполнено(Строка._Ссылка) Тогда
                        ЗаписьСоответствийДляОбмен(Новый Структура("УзелОбмена, СобственнаяСсылка, СсылкаВДругойИБ", УзелОбмена, Строка._Ссылка, Строка.УИД));                        
                    КонецЕсли;
                ИначеЕсли СтрокаСтруктуры.Ключ = "ДокументыФизическихЛиц" Тогда
                    Для каждого МСтрока Из МассивСтруктурПО Цикл
                        ЗаполнитьЗначенияСвойств(МСтрока, Строка);
                        
                        НайденноеЗначение = ТаблицаФизическихЛиц.НайтиСтроки(МСтрока);
                        Если НайденноеЗначение.Количество() > 0 Тогда
                            Строка._Ссылка = НайденноеЗначение[0].Ссылка;
                        КонецЕсли;
                        
                        Если ЗначениеЗаполнено(Строка._Ссылка) Тогда
                            Прервать;
                        КонецЕсли;
                    КонецЦикла;
                    
                    Если НЕ ЗначениеЗаполнено(Строка._Ссылка) Тогда
                        ЗаписьЖурналаРегистрации("Ссылка на физ лицо " + Строка.НаименованиеФизЛица + " не найдена! Запись паспортных данных не выполнена.", УровеньЖурналаРегистрации.Ошибка, ФизическоеЛицо.Метаданные(), , ОписаниеОшибки(), РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
                        Продолжить;
                        
                        СтрокаСтруктуры.Значение.Удалить(Строка);
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        
        ИзменитьЗаписатьДанные(Структура);
    КонецЕсли;
КонецПроцедуры
13 dema666666666
 
22.09.21
08:12
(10) Вот на этой строке он тормозит - ФизическоеЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
14 PuhUfa
 
22.09.21
08:32
(13) что значит тормозит? куда переходит отладчик после этой строки?
15 dema666666666
 
22.09.21
09:14
(14) Никуда, просто всё, отладка завершается, встаю на эту строку, жму F10 и всё, конец, больше ничего не происходит
16 Галахад
 
гуру
22.09.21
09:16
В модуле объекта "Справочники.ФизическиеЛица" в ближайшее время ничего не меняли?
17 dema666666666
 
22.09.21
09:17
(16) Нет, никто не лазил
18 Admin_Net_1C
 
22.09.21
09:21
Попробуй
ФизическоеЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
в Попытка Исключение обернуть
19 dema666666666
 
22.09.21
09:23
(18) Пробовал, в исключение не попадает :D
20 Admin_Net_1C
 
22.09.21
09:26
Тестирование базы не пробовал?
21 dema666666666
 
22.09.21
09:36
(20) Пока нет, база большая, людей работает много, сегодня вечером сделаю бекап и попробую проведу тестирование
22 Aleksey
 
22.09.21
09:38
(21) а копия на что?
23 dema666666666
 
22.09.21
09:39
(22) Так-то да, не подумал что-то, спасибо))
24 Garykom
 
гуру
22.09.21
09:40
прикольный глюк, держи в курсе
25 dema666666666
 
22.09.21
09:41
(24) Хорошо, как решу, отпишусь
26 Serg_1960
 
22.09.21
10:22
Измени наименование переменной "ФизическоеЛицо".
27 Мимохожий Однако
 
22.09.21
10:27
Перед тем как создавать элемент неплохо бы проверять наличие физического лица с теми же параметрами. Возможно, программа не хочет создавать дубли.
28 Serg_1960
 
22.09.21
10:30
"создаю элемент справочника _ФизическоеЛицо" - в алгоритме нет такой переменной. И кстати: "Имена переменных запрещается начинать с подчеркивания"(ИТС)
29 dema666666666
 
22.09.21
11:41
(27) А зачем проверять? Если всё тормозит на создатьэлемент(), а не на записать()
30 dema666666666
 
22.09.21
11:41
(28) Щас попробую
31 dema666666666
 
22.09.21
11:49
(26) Изменил, всё так же
32 acht
 
22.09.21
12:11
Вангую, что у тебя в модуле объекта или в его зависимостях типа подписок ксть что-то, что просто не компилируется в этом режиме выполнения.
33 dema666666666
 
22.09.21
12:13
(32) Буду искать сидеть, пару дней назад перестало работать, до этого всё норм была, ума не приложу что случилось)
34 timurhv
 
22.09.21
12:15
(31) поставьте точку останова в начале модуля и в отладчике вычислить выражение (Shift + F9) что выдаст?
Справочники.ФизическиеЛица.СоздатьЭлемент()
35 dema666666666
 
22.09.21
12:19
(34) Сделал, Свойство - Справочники.ФизическиеЛица.СоздатьЭлемент(), значение - пусто, тип - пусто
36 Serg_1960
 
22.09.21
12:34
"Когда не знаешь что делать - чисти кэши"(я)
37 Volodja
 
22.09.21
13:04
Может что-нибудь с правами? Отобрали у пользователя что-то,
38 Volodja
 
22.09.21
13:06
(37) вот здесь похожая проблема была
https://forum.infostart.ru/forum9/topic251922/
39 Ёпрст
 
22.09.21
14:14
(0) дык заремь все в модуле и в менеджере, если есть весь код в справочнике физ.лица, для начала.
40 Garykom
 
гуру
22.09.21
14:47
Для начала я бы попробовал на другом компе/сервере это дело

И перед "Процедура" точно есть "&НаСервере"?
41 Garykom
 
гуру
22.09.21
14:48
(40)

&НаСервере
Процедура ВыполнитьОбработкуДанных(Структура, Запрос)
...
42 timurhv
 
22.09.21
15:26
(35) Проверяйте справочник физ.лиц (модуль менеджера, модуль объекта).
43 Garykom
 
гуру
22.09.21
15:44
(42) думаешь нечто не дает именно обработчику http сервиса срабоать?
44 timurhv
 
22.09.21
15:48
(43) Если тип пустой, значит где-то ошибка срабатывает. Но у меня текст ошибки вывелся.
45 dema666666666
 
27.09.21
14:03
Всем спасибо, был косяк в модуле объекта (facespalm).

Код:
#Если ТолстыйКлиентОбычноеПриложение Тогда


ВОТ ЗДЕСЬ ДОБАВИЛ ФУНКЦИЮ С ЗАПРОСОМ ВНУТРИ. ОНА ТА И МЕШАЛА СОЗДАТЬ ЭЛЕМЕНТ.


// Функция формирует табличный документ с печатной формой
// данных физ. лица
//
// Параметры:
//  ДатаАктуальности - дата, на которую будут получены значения периодических параметров физ. лица, таких как паспортные данные или ФИО.
//                     Если не задана, то значения периодических параметров будут получены на рабочую дату.
//
// Возвращаемое значение:
//  ТабличныйДокумент
//
Функция ПечатьДанныхФизЛица(ДатаАктуальности = Неопределено, ТабДокумент = Неопределено) Экспорт

    Если ТабДокумент = Неопределено Тогда
        ТабДокумент = Новый ТабличныйДокумент;
    КонецЕсли;
    
    СтруктураДанных = Новый Структура;
    СтруктураДанныхОрганизации = Новый Структура;
        
    Подробно = Истина;
        
    Запрос = Новый Запрос;

    // Установим параметры запроса.
    Запрос.УстановитьПараметр("ФизЛицо" ,    Ссылка);
    Если ДатаАктуальности = Неопределено Тогда
        Запрос.УстановитьПараметр("ДатаАктуальности" ,    КонецДня(ОбщегоНазначенияЗК.ПолучитьРабочуюДату()));
    Иначе
        Запрос.УстановитьПараметр("ДатаАктуальности" ,    КонецДня(ДатаАктуальности));
    КонецЕсли;
    Запрос.УстановитьПараметр("Изображение" ,Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);
    Запрос.УстановитьПараметр("ПустаяСтрока" ,"");
    
    Если Подробно Тогда
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ФизическиеЛица.Наименование,
        |    ФизическиеЛица.ДатаРождения,
        |    ФизическиеЛица.МестоРождения,
        |    ФизическиеЛица.ИНН,
        |    ФизическиеЛица.Код,
        |    ФизическиеЛица.КодИМНС,
        |    ФизическиеЛица.Пол,
        |    ФизическиеЛица.СтраховойНомерПФР,
        |    ФизическиеЛица.ОсновноеИзображение.Хранилище КАК Данные,
        |    ФизическиеЛица.ОсновноеИзображение.Наименование КАК ОписаниеИзображения,
        |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Представление КАК ДокументВид,
        |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
        |    ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
        |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения,
        |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
        |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
        |    ФИОФизЛицСрезПоследних.Фамилия,
        |    ФИОФизЛицСрезПоследних.Имя,
        |    ФИОФизЛицСрезПоследних.Отчество
        |ИЗ
        |    Справочник.ФизическиеЛица КАК ФизическиеЛица
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК ФИОФизЛицСрезПоследних
        |        ПО ФИОФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
        |        ПО ФизическиеЛица.Ссылка = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
        |
        |ГДЕ
        |    ФизическиеЛица.Ссылка = &ФизЛицо";
        
        Результат = Запрос.Выполнить();
        ВыборкаДляПроверок = Результат.Выбрать();
        ВыборкаДляПроверок.Следующий();
        СтруктураДанных.Вставить("ФизическиеЛица", Результат.Выбрать());
        Если ВыборкаДляПроверок.ДокументВид <> Null Тогда
            СтруктураДанных.Вставить("ПаспортныеДанныеФизЛиц", Результат.Выбрать());
        КонецЕсли;
        
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    КонтактнаяИнформация.Тип КАК Тип,
        |    ВЫБОР КОГДА КонтактнаяИнформация.Вид ССЫЛКА Справочник.ВидыКонтактнойИнформации ТОГДА
        |        КонтактнаяИнформация.Вид.Представление
        |    ИНАЧЕ
        |        КонтактнаяИнформация.Вид
        |    КОНЕЦ КАК ВидКИ,
        |    КонтактнаяИнформация.Представление КАК ПредставлениеКИ
        |ИЗ
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект = &ФизЛицо
        |УПОРЯДОЧИТЬ ПО
        |    Тип
        |АВТОУПОРЯДОЧИВАНИЕ";
        
        СтруктураДанных.Вставить("КонтактнаяИнформация", Запрос.Выполнить().Выбрать());
        
        // разделы информации о физлице из табличных частей справочника
        Для каждого ТЧ Из Метаданные.Справочники.ФизическиеЛица.ТабличныеЧасти Цикл
            ИмяРегистра = "ФизическиеЛица_" + ТЧ.Имя;
            Если ТЧ.Имя = "СоставСемьи" Тогда
                Запрос.Текст =
                "ВЫБРАТЬ
                |    ФизическиеЛица_СоставСемьи.НомерСтроки КАК НомерСтроки,
                |    ФизическиеЛица_СоставСемьи.СтепеньРодства.Представление КАК СтепеньРодства,
                |    ФизическиеЛица_СоставСемьи.Имя КАК Имя,
                |    ФизическиеЛица_СоставСемьи.ДатаРождения КАК ДатаРождения,
                |    СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение.Представление КАК СемейноеПоложение
                |ИЗ
                |    Справочник.ФизическиеЛица.СоставСемьи КАК ФизическиеЛица_СоставСемьи
                |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СемейноеПоложениеФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК СемейноеПоложениеФизЛицСрезПоследних
                |        ПО ФизическиеЛица_СоставСемьи.Ссылка = СемейноеПоложениеФизЛицСрезПоследних.ФизЛицо
                |ГДЕ
                |    ФизическиеЛица_СоставСемьи.Ссылка = &ФизЛицо
                |
                |ОБЪЕДИНИТЬ ВСЕ
                |
                |ВЫБРАТЬ
                |    0,
                |    NULL,
                |    NULL,
                |    ЕСТЬNULL(КОЛИЧЕСТВО(ФизическиеЛица_СоставСемьи.ДатаРождения), 0),
                |    СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение.Представление
                |ИЗ
                |    РегистрСведений.СемейноеПоложениеФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК СемейноеПоложениеФизЛицСрезПоследних
                |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.СоставСемьи КАК ФизическиеЛица_СоставСемьи
                |        ПО (ФизическиеЛица_СоставСемьи.Ссылка = СемейноеПоложениеФизЛицСрезПоследних.ФизЛицо)
                |
                |СГРУППИРОВАТЬ ПО
                |    СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение,
                |    СемейноеПоложениеФизЛицСрезПоследних.СемейноеПоложение.Представление
                |
                |ИМЕЮЩИЕ
                |    ЕСТЬNULL(КОЛИЧЕСТВО(ФизическиеЛица_СоставСемьи.ДатаРождения), 0) = 0
                |
                |УПОРЯДОЧИТЬ ПО
                |    НомерСтроки";
                
            ИначеЕсли ТЧ.Имя = "Награды" Тогда
                Продолжить;
            Иначе
                
                ТекстПолей = "";
                Для каждого Реквизит Из ТЧ.Реквизиты Цикл
                    ЕстьПолеПредставление = Ложь;
                    // Определим принадлежность к ссылочным типам (т.е. возможность использования поля Представление)
                    Для Каждого ЭлементТипа Из Реквизит.Тип.Типы() Цикл
                        // Нет у примитивных
                        Если ЭлементТипа = Тип("Число")
                            ИЛИ ЭлементТипа = Тип("Строка")
                            ИЛИ ЭлементТипа = Тип("Дата")
                            ИЛИ ЭлементТипа = Тип("Булево") Тогда
                            
                            ЕстьПолеПредставление = Ложь;
                            Прервать;
                        Иначе
                            
                            // Нет у перечисления
                            ПустоеЗначениеТипа = Новый(ЭлементТипа);
                            
                            Если Метаданные.Перечисления.Найти(ПустоеЗначениеТипа.Метаданные().Имя) <> Неопределено Тогда
                                ЕстьПолеПредставление = Ложь;
                                Прервать;
                            Иначе
                                ЕстьПолеПредставление = Истина;
                            КонецЕсли;
                        КонецЕсли;
                    КонецЦикла;
                    ТекстПолей = ТекстПолей + "," + Символы.ПС + Символы.Таб + ИмяРегистра + "." + Реквизит.Имя + ?(ЕстьПолеПредставление,".Представление","") + " КАК " + Реквизит.Имя
                КонецЦикла;
                
                Запрос.Текст = "ВЫБРАТЬ" + Сред(ТекстПолей,2) + Символы.ПС
                + "ИЗ" + Символы.ПС + Символы.Таб + "Справочник." + СтрЗаменить(ИмяРегистра,"_",".") + " КАК " + ИмяРегистра + Символы.ПС
                + "ГДЕ" + Символы.ПС + Символы.Таб + ИмяРегистра + ".Ссылка = &ФизЛицо" + Символы.ПС
                + "УПОРЯДОЧИТЬ ПО" + Символы.ПС + Символы.Таб + "НомерСтроки";
                
            КонецЕсли;
            
            СтруктураДанных.Вставить(ИмяРегистра, Запрос.Выполнить().Выбрать());
        КонецЦикла;
        
        ФизическиеЛицаПереопределяемый.ДополнитьСтруктуруДанныхЗапросом(Запрос, СтруктураДанных);        
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ФизическиеЛицаНаграды.Награда,
        |    ФизическиеЛицаНаграды.НомерПриказа,
        |    ФизическиеЛицаНаграды.ДатаПриказа,
        |    ФизическиеЛицаНаграды.ЧейПриказ
        |ИЗ
        |    Справочник.ФизическиеЛица.Награды КАК ФизическиеЛицаНаграды
        |ГДЕ
        |    ФизическиеЛицаНаграды.Ссылка = &ФизЛицо
        |
        |УПОРЯДОЧИТЬ ПО
        |    ФизическиеЛицаНаграды.НомерСтроки";
        
        СтруктураДанных.Вставить("ФизическиеЛица_Награды", Запрос.Выполнить().Выбрать());
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Значение,
        |    ЗначенияСвойствОбъектов.Свойство
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &ФизЛицо";
        
        СтруктураДанных.Вставить("ДополнительныеДанные", Запрос.Выполнить().Выбрать());
        
    КонецЕсли;
    Если НастройкаПравДоступаПереопределяемый.ДоступнаРольМенеджераПоНабору() Тогда
        
        Запрос.Текст = ФизическиеЛицаПереопределяемый.ТекстЗапросаРезультатыАнкетирования();
        
        СтруктураДанных.Вставить("Опросы", Запрос.Выполнить().Выбрать());
        
    КонецЕсли;

    ФизическиеЛицаПереопределяемый.ДополнитьДанныеКадровогоУчета(Запрос, СтруктураДанных);
    
    Если НастройкаПравДоступаПереопределяемый.ДоступнаРольКадровикаРегл() Тогда
    
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ВЫБОР
        |        КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
        |                И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавокЗавершения
        |        ИНАЧЕ РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавок
        |    КОНЕЦ КАК ЗанимаемыхСтавок,
        |    ВЫБОР
        |        КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
        |                И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА РаботникиОрганизацииСрезПоследних.ДолжностьЗавершения.Представление
        |        ИНАЧЕ РаботникиОрганизацииСрезПоследних.Должность.Представление
        |    КОНЕЦ КАК Должность,
        |    ВЫБОР
        |        КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
        |                И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Представление
        |        ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Представление
        |    КОНЕЦ КАК Подразделение,
        |    РаботникиОрганизацииСрезПоследних.Организация.Представление КАК Организация,
        |    РаботникиОрганизацииСрезПоследних.Организация КАК ОрганизацияСсылка,
        |    ВЫБОР
        |        КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
        |                И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |            ТОГДА ВЫБОР
        |                    КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостоянияЗавершения = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
        |                        ТОГДА ""Не работает (уволен)""
        |                    ИНАЧЕ ""Работает""
        |                КОНЕЦ
        |        ИНАЧЕ ВЫБОР
        |                КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
        |                    ТОГДА ""Не работает (уволен)""
        |                ИНАЧЕ ""Работает""
        |            КОНЕЦ
        |    КОНЕЦ КАК Состояние,
        |    РаботникиОрганизацииСрезПоследних.Сотрудник.Код КАК ТабельныйНомер
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
        |            &ДатаАктуальности,
        |            Сотрудник.ФизЛицо = &ФизЛицо
        |                И (НЕ Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство))) КАК РаботникиОрганизацииСрезПоследних
        |
        |УПОРЯДОЧИТЬ ПО
        |    Организация,
        |    РаботникиОрганизацииСрезПоследних.Период УБЫВ,
        |    РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния.Порядок";
        
        РезультатПоОрганизациям = Запрос.Выполнить();
        
        Если Не РезультатПоОрганизациям.Пустой() Тогда
            
            СтруктураДанных.Вставить("Организация", РезультатПоОрганизациям.Выбрать());
            
            Запрос.Текст =
            "ВЫБРАТЬ
            |    ПриемНаРаботуВОрганизациюРаботники.Ссылка КАК Документ,
            |    ПриемНаРаботуВОрганизациюРаботники.Ссылка.Представление,
            |    ПриемНаРаботуВОрганизациюРаботники.ПодразделениеОрганизации.Владелец КАК Организация,
            |    ПриемНаРаботуВОрганизациюРаботники.Ссылка.Дата КАК Дата,
            |    ПриемНаРаботуВОрганизациюРаботники.ДатаПриема КАК ДатаС,
            |    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПо,
            |    ПриемНаРаботуВОрганизациюРаботники.ПодразделениеОрганизации.Представление КАК Подразделение,
            |    ПриемНаРаботуВОрганизациюРаботники.Должность.Представление КАК Должность,
            |    ПриемНаРаботуВОрганизациюРаботники.ЗанимаемыхСтавок,
            |    ПриемНаРаботуВОрганизациюРаботники.ИспытательныйСрок КАК Примечание
            |ИЗ
            |    Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботники
            |ГДЕ
            |    ПриемНаРаботуВОрганизациюРаботники.Сотрудник.ФизЛицо = &ФизЛицо
            |    И ПриемНаРаботуВОрганизациюРаботники.Ссылка.Проведен
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    КадровоеПеремещениеОрганизацииРаботники.Ссылка,
            |    КадровоеПеремещениеОрганизацииРаботники.Ссылка.Представление,
            |    КадровоеПеремещениеОрганизацииРаботники.ПодразделениеОрганизации.Владелец,
            |    КадровоеПеремещениеОрганизацииРаботники.Ссылка.Дата,
            |    КадровоеПеремещениеОрганизацииРаботники.ДатаНачала,
            |    ВЫБОР
            |        КОГДА НЕ КадровоеПеремещениеОрганизацииРаботники.НапомнитьПоЗавершении
            |            ТОГДА КадровоеПеремещениеОрганизацииРаботники.ДатаОкончания
            |        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            |    КОНЕЦ,
            |    КадровоеПеремещениеОрганизацииРаботники.ПодразделениеОрганизации.Представление,
            |    КадровоеПеремещениеОрганизацииРаботники.Должность.Представление,
            |    КадровоеПеремещениеОрганизацииРаботники.ЗанимаемыхСтавок,
            |    NULL
            |ИЗ
            |    Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещениеОрганизацииРаботники
            |ГДЕ
            |    КадровоеПеремещениеОрганизацииРаботники.Сотрудник.ФизЛицо = &ФизЛицо
            |    И КадровоеПеремещениеОрганизацииРаботники.Ссылка.Проведен
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    УвольнениеИзОрганизацииРаботники.Ссылка,
            |    УвольнениеИзОрганизацииРаботники.Ссылка.Представление,
            |    УвольнениеИзОрганизацииРаботники.Ссылка.Организация,
            |    УвольнениеИзОрганизацииРаботники.Ссылка.Дата,
            |    УвольнениеИзОрганизацииРаботники.ДатаУвольнения,
            |    NULL,
            |    NULL,
            |    NULL,
            |    NULL,
            |    УвольнениеИзОрганизацииРаботники.СтатьяТКРФ.Наименование
            |ИЗ
            |    Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацииРаботники
            |ГДЕ
            |    УвольнениеИзОрганизацииРаботники.Сотрудник.Физлицо = &ФизЛицо
            |    И УвольнениеИзОрганизацииРаботники.Ссылка.Проведен
            |
            |УПОРЯДОЧИТЬ ПО
            |    Дата
            |ИТОГИ ПО
            |    Организация";
            
            СтруктураДанныхОрганизации.Вставить("ПеремещенияВОрганизации", Запрос.Выполнить());
            
        КонецЕсли;
        
    КонецЕсли;
    Если Подробно Тогда    
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ХранилищеДополнительнойИнформации.Наименование КАК ОписаниеДанных,
        |    ХранилищеДополнительнойИнформации.Хранилище КАК Данные
        |ИЗ
        |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
        |
        |ГДЕ
        |    ((ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.ФизическиеЛица)) = &ФизЛицо) И
        |    ХранилищеДополнительнойИнформации.ВидДанных = &Изображение";
        
        ВыборкаИзображений = Запрос.Выполнить().Выбрать();
    КонецЕсли;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ФизическиеЛица_ДанныеПоФизлицу";
    Макет = ПолучитьМакет("ДанныеПоФизлицу");
    Если Подробно Тогда
        ВыборкаОсновноеФото = Результат.Выбрать();
        Если ВыборкаОсновноеФото.Следующий() Тогда
            ДанныеДляФото = ВыборкаОсновноеФото.Данные;
            Если ДанныеДляФото <> Null Тогда
                ФотоНаПропуск = ДанныеДляФото.Получить();
                Если ФотоНаПропуск <> Неопределено Тогда
                    ОбластьМакета = Макет.ПолучитьОбласть("ОсновноеФото_Заголовок");
                    ТабДокумент.Вывести(ОбластьМакета);
                    ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                    ТабДокумент.НачатьГруппуСтрок("", Не Подробно);
                    ОбластьМакета = Макет.ПолучитьОбласть("ОсновноеФото");
                    ОбластьМакета.Рисунки.ФотоНаПропуск.Картинка = ФотоНаПропуск;
                    ОбластьМакета.Рисунки.ФотоНаПропуск.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,);
                    ОбластьМакета.Параметры.ОписаниеДанных = ВыборкаОсновноеФото.ОписаниеИзображения;
                    ТабДокумент.Вывести(ОбластьМакета);
                    ТабДокумент.ЗакончитьГруппуСтрок();
                КонецЕсли;                
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    Для Каждого СекцияДанных Из СтруктураДанных Цикл

        ИмяСекции = СекцияДанных.Ключ;
        Если Не Подробно Тогда
            УсловиеВыводаРаскрытойГруппы = Истина
        Иначе
            УсловиеВыводаРаскрытойГруппы = ИмяСекции = "ФизическиеЛица";
        КонецЕсли;
        Выборка = СекцияДанных.Значение;
        Если ИмяСекции = "КонтактнаяИнформация" и НЕ Выборка.Количество() = 0 Тогда

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

                ТабДокумент.Вывести(Отбивка);
                СекцияТипаКИ.Параметры.ТипКИ = Строка(Выборка.Тип) + ":";
                ТабДокумент.Вывести(СекцияТипаКИ);

                СекцияКИ = Макет.ПолучитьОбласть("КонтактнаяИнформация_Данные");
                Пока Выборка.СледующийПоЗначениюПоля("ВидКИ") цикл
                    СекцияКИ.Параметры.Заполнить(Выборка);
                    ТабДокумент.Вывести(СекцияКИ);
                КонецЦикла;

            КонецЦикла;

            ТабДокумент.Вывести(Отбивка);
            ТабДокумент.ЗакончитьГруппуСтрок();
            
        ИначеЕсли ИмяСекции = "Организация"  Тогда

            Пока Выборка.СледующийПоЗначениюПоля("Организация") Цикл

                Отбивка = Макет.ПолучитьОбласть("Отбивка");
                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Заголовок");
                ОбластьМакета.Параметры.Заполнить(Выборка);
                ТабДокумент.Вывести(ОбластьМакета);
                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                ТабДокумент.НачатьГруппуСтрок("", УсловиеВыводаРаскрытойГруппы);
                ТабДокумент.Вывести(Отбивка);
                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Данные");
                ОбластьМакета.Параметры.Заполнить(Выборка);
                ТабДокумент.Вывести(ОбластьМакета);
                ТабДокумент.Вывести(Отбивка);

                Для Каждого СекцияДанныхОрганизации Из СтруктураДанныхОрганизации Цикл
                    ИмяСекцииОрганизации = СекцияДанныхОрганизации.Ключ;

                    Если Макет.Области.Найти(ИмяСекцииОрганизации + "_Заголовок") <> Неопределено Тогда

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

                            // Выберем кадровые перемещения в рамках организации
                            ВыборкаОрганизации = ВыборкаПеремещенийПоВсемОрганизациям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                            
                            Отбивка = ?(Макет.Области.Найти(ИмяСекцииОрганизации + "_Отбивка") <> Неопределено,Макет.ПолучитьОбласть(ИмяСекцииОрганизации + "_Отбивка"),Макет.ПолучитьОбласть("Отбивка"));
                            ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекцииОрганизации + "_Заголовок");
                            Если ОбластьМакета.Области.Количество() = 1 Тогда
                                ТабДокумент.Вывести(ОбластьМакета);
                                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                                ТабДокумент.НачатьГруппуСтрок("", УсловиеВыводаРаскрытойГруппы);
                                ТабДокумент.Вывести(Отбивка);
                            Иначе
                                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекцииОрганизации + "_Заголовок_ПерваяСтрока");
                                ТабДокумент.Вывести(ОбластьМакета);
                                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                                ТабДокумент.НачатьГруппуСтрок("", УсловиеВыводаРаскрытойГруппы);
                                ТабДокумент.Вывести(Отбивка);
                                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы, 2, ТабДокумент.ВысотаТаблицы, 10).ЦветФона = ЦветаСтиля.ФонГруппировкиПромежуточногоУровня;
                                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекцииОрганизации + "_Заголовок_Остальное");
                                ТабДокумент.Вывести(ОбластьМакета);
                                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы - ОбластьМакета.ВысотаТаблицы + 1, 2, ТабДокумент.ВысотаТаблицы, 10).ЦветФона = ЦветаСтиля.ФонГруппировкиПромежуточногоУровня;
                            КонецЕсли;
                            ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекцииОрганизации + "_Данные");
                            Пока ВыборкаОрганизации.Следующий() Цикл
                                ОбластьМакета.Параметры.Заполнить(ВыборкаОрганизации);
                                ТабДокумент.Вывести(ОбластьМакета);
                            КонецЦикла;
                            ТабДокумент.Вывести(Отбивка);
                            ТабДокумент.ЗакончитьГруппуСтрок();
                        
                        КонецЕсли;

                    КонецЕсли;
                    
                КонецЦикла;
                
                ТабДокумент.ЗакончитьГруппуСтрок();

            КонецЦикла;

        ИначеЕсли Макет.Области.Найти(ИмяСекции + "_Заголовок") <> Неопределено и Выборка.Следующий() Тогда

            Отбивка = ?(Макет.Области.Найти(ИмяСекции + "_Отбивка") <> Неопределено,Макет.ПолучитьОбласть(ИмяСекции + "_Отбивка"),Макет.ПолучитьОбласть("Отбивка"));
            ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Заголовок");
            Если ОбластьМакета.Области.Количество() = 1 Тогда
                ТабДокумент.Вывести(ОбластьМакета);
                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                ТабДокумент.НачатьГруппуСтрок("", УсловиеВыводаРаскрытойГруппы);
                ТабДокумент.Вывести(Отбивка);
            Иначе
                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Заголовок_ПерваяСтрока");
                ТабДокумент.Вывести(ОбластьМакета);
                ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
                ТабДокумент.НачатьГруппуСтрок("", УсловиеВыводаРаскрытойГруппы);
                ТабДокумент.Вывести(Отбивка);
                ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Заголовок_Остальное");
                Если ОбластьМакета.Параметры.Количество() = 0 Тогда // раскрашиваем заголовок без выведенных данных
                    ТабДокумент.Область(ТабДокумент.ВысотаТаблицы, 2, ТабДокумент.ВысотаТаблицы, 10).ЦветФона = ЦветаСтиля.ФонГруппировкиПромежуточногоУровня;
                Иначе    
                    ОбластьМакета.Параметры.Заполнить(Выборка);
                КонецЕсли;
                ТабДокумент.Вывести(ОбластьМакета);
                Если ОбластьМакета.Параметры.Количество() = 0 Тогда // раскрашиваем заголовок без выведенных данных
                    ТабДокумент.Область(ТабДокумент.ВысотаТаблицы - ОбластьМакета.ВысотаТаблицы + 1, 2, ТабДокумент.ВысотаТаблицы, 10).ЦветФона = ЦветаСтиля.ФонГруппировкиПромежуточногоУровня;
                КонецЕсли;
            КонецЕсли;
            ОбластьМакета = Макет.ПолучитьОбласть(ИмяСекции + "_Данные");
            ОбластьМакета.Параметры.Заполнить(Выборка);
            Если ИмяСекции = "ФизическиеЛица" Тогда
                ОбластьМакета.Параметры.МестоРожденияРаботника = РегламентированнаяОтчетность.ПредставлениеМестаРождения(Выборка.МестоРождения);
                Если НЕ ЗначениеЗаполнено(Выборка.Фамилия) Тогда
                    Фамилия = " "; Имя = " "; Отчество = " ";
                    ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(ЭтотОбъект, Фамилия, Имя, Отчество);
                    ОбластьМакета.Параметры.Фамилия = Фамилия;
                    ОбластьМакета.Параметры.Имя = Имя;
                    ОбластьМакета.Параметры.Отчество = Отчество;
                КонецЕсли;
            КонецЕсли;
            ТабДокумент.Вывести(ОбластьМакета);
            Пока Выборка.Следующий() Цикл
                ОбластьМакета.Параметры.Заполнить(Выборка);
                ТабДокумент.Вывести(ОбластьМакета);
            КонецЦикла;
            ТабДокумент.Вывести(Отбивка);
            ТабДокумент.ЗакончитьГруппуСтрок();

        КонецЕсли;    
    КонецЦикла;

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

// Процедура осуществляет печать справочника. Можно направить печать на
// экран или принтер, а также распечатать необходимое количество копий.
//
//  Название макета печати передается в качестве параметра,
// по переданному названию находим имя макета в соответствии.
//
// Параметры:
//  НазваниеМакета - строка, название макета.
//
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт

    // Код добавлен для совместимости с объектами "Зарплата и управление персоналом"
    Если (ТипЗнч(ИмяМакета) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ИмяМакета) = Тип("ТабличныйДокумент"))
         И (ТипЗнч(КоличествоЭкземпляров) = Тип("Дата") ИЛИ КоличествоЭкземпляров = Неопределено)Тогда
        ПечатьДанныхФизЛица(КоличествоЭкземпляров, ИмяМакета);
        Возврат;
    КонецЕсли;

    // Получить экземпляр документа на печать
    Если ИмяМакета = "ПечатьДанныхФизЛица" Тогда
        
        ТабДокумент = ПечатьДанныхФизЛица();
        Заголовок = "Данные по: " + Наименование;
        
    КонецЕсли;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Заголовок, Ссылка);

КонецПроцедуры // Печать()

// Возвращает доступные варианты печати документа
//
// Возвращаемое значение:
//  Структура, каждая строка которой соответствует одному из вариантов печати
//  
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
    
    Возврат Новый Структура("ПечатьДанныхФизЛица","Данные физ. лица");

КонецФункции // ПолучитьТаблицуПечатныхФорм()

#КонецЕсли
46 ДенисЧ
 
27.09.21
14:04
Мало кода! Выложи ещё пару общих модулей, нам же интересно!
47 osa1C
 
27.09.21
14:26
(46) +100500