|
Не создается элемент справочника | ☑ | ||
---|---|---|---|---|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |