1.
Гость
07.04.21 12:09
Добрый день, помогите пожалуйста у меня в приказе изменение сведений в печатной форме выводятся сотрудники изменивших фамилию. Как мне сделать так, чтобы если сотрудник менял несколько раз фамилию, выводилось именно последнее изменение фамилии ?
Функция ПечатьИзменениеСведений(МассивОбъектов) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ИзменениеСведений");
ОбластьМакет = Макет.ПолучитьОбласть("Шапка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПроизвольныйПриказТЧ.Сотрудник.Представление КАК СотрудникПредставление,
| ПроизвольныйПриказ.Дата КАК Дата,
| ПроизвольныйПриказТЧ.Сотрудник КАК Сотрудник,
| ПроизвольныйПриказ.Номер КАК Номер,
| ПроизвольныйПриказТЧ.Сотрудник.Код КАК Код,
| ПроизвольныйПриказ.Организация КАК Организация,
| ПроизвольныйПриказ.Основание КАК Основание,
| ПроизвольныйПриказ.Руководитель.Фамилия КАК РуководительФамилия,
| ПроизвольныйПриказ.Руководитель.Инициалы КАК РуководительИнициалы,
| ПроизвольныйПриказ.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ПроизвольныйПриказ.Ссылка КАК Ссылка,
| ПроизвольныйПриказ.Дата КАК ПериодДействияНачало
|ПОМЕСТИТЬ ВР1
|ИЗ
| Документ.ПроизвольныйПриказ.ТЧ КАК ПроизвольныйПриказТЧ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизвольныйПриказ КАК ПроизвольныйПриказ
| ПО ПроизвольныйПриказТЧ.Ссылка = ПроизвольныйПриказ.Ссылка
|ГДЕ
| ПроизвольныйПриказ.Ссылка В(&Ссылка)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение КАК Подразделение,
| ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность КАК Должность,
| ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
| ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация КАК ТекущаяОрганизация
|ПОМЕСТИТЬ ВР2
|ИЗ
| РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ФИОФизическихЛицСрезПервых.Период КАК Период,
| ФИОФизическихЛицСрезПервых.ФизическоеЛицо КАК ФизическоеЛицо,
| ФИОФизическихЛицСрезПервых.Фамилия КАК Фамилия,
| ФИОФизическихЛицСрезПервых.Имя КАК Имя,
| ФИОФизическихЛицСрезПервых.Отчество КАК Отчество,
| ФИОФизическихЛицСрезПервых.Инициалы КАК Инициалы,
| ФИОФизическихЛицСрезПервых.УдалитьИнициалыИмени КАК УдалитьИнициалыИмени,
| ФИОФизическихЛицСрезПервых.ФИОСлужебные КАК ФИОСлужебные
|ПОМЕСТИТЬ ВР3
|ИЗ
| РегистрСведений.ФИОФизическихЛиц.СрезПервых КАК ФИОФизическихЛицСрезПервых
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВР1.СотрудникПредставление КАК СотрудникПредставление,
| ВР1.Дата КАК Дата,
| ВР1.Сотрудник КАК Сотрудник,
| ВР1.Номер КАК Номер,
| ВР1.Код КАК Код,
| ВР1.РуководительФамилия КАК РуководительФамилия,
| ВР1.Основание КАК Основание,
| ВР1.РуководительИнициалы КАК РуководительИнициалы,
| ВР1.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ВР2.Подразделение КАК Подразделение,
| ВР2.Должность КАК Должность,
| ВР3.Фамилия КАК Фамилия,
| ВР3.Имя КАК Имя,
| ВР3.Отчество КАК Отчество,
| ВР1.ПериодДействияНачало КАК ПериодДействияНачало,
| ВР3.Период КАК Период
|ИЗ
| ВР1 КАК ВР1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВР2 КАК ВР2
| ПО ВР1.Организация = ВР2.ТекущаяОрганизация
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВР3 КАК ВР3
| ПО ВР1.Сотрудник.ФизическоеЛицо = ВР3.ФизическоеЛицо";
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьМакет.Параметры.Заполнить(Выборка);
ОбластьМакет.Параметры.Дата = Формат(Выборка.Дата, "ДЛФ=D");
ОбластьМакет.Параметры.Номер = Выборка.Номер;
ДанныеПечати = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Выборка);
ДанныеПечати.ПериодДействияНачало = Формат(ДанныеПечати.ПериодДействияНачало, "ДЛФ=D");
ОбластьМакет.Параметры.ПериодДействияНачало = ДанныеПечати.ПериодДействияНачало;
ТабДок.Вывести( ОбластьМакет);//
ОбластьМакет1 = Макет.ПолучитьОбласть("Строка");
ОбластьМакет1.Параметры.Заполнить(Выборка);
ОбластьМакет1.Параметры.Фамилия = Выборка.Фамилия;
ОбластьМакет1.Параметры.Имя = Выборка.Имя;
ОбластьМакет1.Параметры.Отчество = Выборка.Отчество;
ОбластьМакет1.Параметры.Подразделение = Выборка.Подразделение;
ОбластьМакет1.Параметры.Должность = Выборка.Должность;
ОбластьМакет1.Параметры.Код = Выборка.Код;
ОбластьМакет1.Параметры.Основание = Выборка.Основание;
ОбластьМакет2 = Макет.ПолучитьОбласть("Подвал");
ОбластьМакет2.Параметры.Заполнить(Выборка);
ОбластьМакет2.Параметры.РуководительФамилия = Выборка.РуководительФамилия;
ОбластьМакет2.Параметры.ДолжностьРуководителя = Выборка.ДолжностьРуководителя;
ОбластьМакет2.Параметры.РуководительИнициалы= Выборка.РуководительИнициалы;
ТабДок.Вывести(ОбластьМакет);
ТабДок.Вывести(ОбластьМакет1);
ТабДок.Вывести(ОбластьМакет2);
ТабДок.АвтоМасштаб = Истина;
Возврат ТабДок;
КонецФункции
ПоказатьПо теме из базы знаний
- В помощь кадровику. Отчет по состояниям (отклонениям) сотрудников за период.
- 115 полезностей по курсу СКД Евгения Гилёва
- Для чего нужен флаг "Автозаполнение" в СКД и каких проблем без него можно избежать
- Грабли на СКД
- Механизм представлений в типовых конфигурациях 1С: Зарплата и управление персоналом, редакция 3.1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)Логично, вам нужно как? Видеть текущее состояние на дату кадрового изменения?
В таком случае нужно использовать реальную таблицу истории изменения ФИО вместо виртуальной и соединять ее левым соединение с кадровой историей, находить максимум даты изменения ФИО и еще одним левым соединеним получать значения ФИО.
В таком случае нужно использовать реальную таблицу истории изменения ФИО вместо виртуальной и соединять ее левым соединение с кадровой историей, находить максимум даты изменения ФИО и еще одним левым соединеним получать значения ФИО.
Это решение
Изменила код, но так нечего и не выходит
(9)
(9)
(9)
Функция ПечатьИзменениеСведений(МассивОбъектов) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ИзменениеСведений");
ОбластьМакет = Макет.ПолучитьОбласть("Шапка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПроизвольныйПриказТЧ.Сотрудник.Представление КАК СотрудникПредставление,
| ПроизвольныйПриказ.Дата КАК Дата,
| ПроизвольныйПриказТЧ.Сотрудник КАК Сотрудник,
| ПроизвольныйПриказ.Номер КАК Номер,
| ПроизвольныйПриказТЧ.Сотрудник.Код КАК Код,
| ПроизвольныйПриказ.Организация КАК Организация,
| ПроизвольныйПриказ.Основание КАК Основание,
| ПроизвольныйПриказ.Руководитель.Фамилия КАК РуководительФамилия,
| ПроизвольныйПриказ.Руководитель.Инициалы КАК РуководительИнициалы,
| ПроизвольныйПриказ.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ПроизвольныйПриказ.Ссылка КАК Ссылка,
| ПроизвольныйПриказ.Дата КАК ПериодДействияНачало
|ПОМЕСТИТЬ ВР1
|ИЗ
| Документ.ПроизвольныйПриказ.ТЧ КАК ПроизвольныйПриказТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.бит_ПроизвольныйПриказ КАК бит_ПроизвольныйПриказ
| ПО ПроизвольныйПриказТЧ.Ссылка = ПроизвольныйПриказ.Ссылка
|ГДЕ
| ПроизвольныйПриказ.Ссылка В(&Ссылка)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
| КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
| КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность,
| КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания КАК ДатаОкончания,
| КадроваяИсторияСотрудниковИнтервальный.ДатаНачала КАК ДатаНачала
|ПОМЕСТИТЬ ВР2
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
|ГДЕ
| КадроваяИсторияСотрудниковИнтервальный.ДатаНачала <= НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)
| И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания >= КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ФИОФизическихЛиц.Период КАК Период,
| ФИОФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
| ФИОФизическихЛиц.Фамилия КАК Фамилия,
| ФИОФизическихЛиц.Имя КАК Имя,
| ФИОФизическихЛиц.Отчество КАК Отчество,
| ФИОФизическихЛиц.Инициалы КАК Инициалы,
| ФИОФизическихЛиц.УдалитьИнициалыИмени КАК УдалитьИнициалыИмени,
| ФИОФизическихЛиц.ФИОСлужебные КАК ФИОСлужебные
|ПОМЕСТИТЬ ВР3
|ИЗ
| РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВР1.СотрудникПредставление КАК СотрудникПредставление,
| ВР1.Дата КАК Дата,
| ВР1.Сотрудник КАК Сотрудник,
| ВР1.Номер КАК Номер,
| ВР1.Код КАК Код,
| ВР2.Подразделение КАК Подразделение,
| ВР2.Должность КАК Должность,
| ВР1.Организация КАК Организация,
| ВР1.Основание КАК Основание,
| ВР1.РуководительФамилия КАК РуководительФамилия,
| ВР1.РуководительИнициалы КАК РуководительИнициалы,
| ВР1.ДолжностьРуководителя КАК ДолжностьРуководителя,
| ВР1.Ссылка КАК Ссылка,
| ВР1.ПериодДействияНачало КАК ПериодДействияНачало,
| ДАТАВРЕМЯ(1, 1, 1) КАК Период,
| ВР3.Период КАК Период1,
| ВР3.ФизическоеЛицо КАК ФизическоеЛицо,
| ВР3.Фамилия КАК Фамилия,
| ВР3.Имя КАК Имя,
| ВР3.Отчество КАК Отчество,
| ВР3.Инициалы КАК Инициалы,
| ВР3.УдалитьИнициалыИмени КАК УдалитьИнициалыИмени,
| ВР3.ФИОСлужебные КАК ФИОСлужебные
|ИЗ
| ВР1 КАК ВР1
| ЛЕВОЕ СОЕДИНЕНИЕ ВР2 КАК ВР2
| ПО ВР1.Сотрудник = ВР2.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ ВР3 КАК ВР3
| ПО ВР1.Сотрудник.ФизическоеЛицо = ВР3.ФизическоеЛицо
| И (ВР3.Период < &Период)";
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьМакет.Параметры.Заполнить(Выборка);
ОбластьМакет.Параметры.Дата = Формат(Выборка.Дата, "ДЛФ=D");
ОбластьМакет.Параметры.Номер = Выборка.Номер;
ДанныеПечати = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Выборка);
ДанныеПечати.ПериодДействияНачало = Формат(ДанныеПечати.ПериодДействияНачало, "ДЛФ=D");
ОбластьМакет.Параметры.ПериодДействияНачало = ДанныеПечати.ПериодДействияНачало;
ОбластьМакет1 = Макет.ПолучитьОбласть("Строка");
ОбластьМакет1.Параметры.Заполнить(Выборка);
ОбластьМакет1.Параметры.Фамилия = Выборка.Фамилия;
ОбластьМакет1.Параметры.Имя = Выборка.Имя;
ОбластьМакет1.Параметры.Отчество = Выборка.Отчество;
ОбластьМакет1.Параметры.Подразделение = Выборка.Подразделение;
ОбластьМакет1.Параметры.Должность = Выборка.Должность;
ОбластьМакет1.Параметры.Код = Выборка.Код;
ОбластьМакет1.Параметры.Основание = Выборка.Основание;
ОбластьМакет2 = Макет.ПолучитьОбласть("Подвал");
ОбластьМакет2.Параметры.Заполнить(Выборка);
ОбластьМакет2.Параметры.РуководительФамилия = Выборка.РуководительФамилия;
ОбластьМакет2.Параметры.ДолжностьРуководителя = Выборка.ДолжностьРуководителя;
ОбластьМакет2.Параметры.РуководительИнициалы= Выборка.РуководительИнициалы;
ТабДок.Вывести(ОбластьМакет);
ТабДок.Вывести(ОбластьМакет1);
ТабДок.Вывести(ОбластьМакет2);
ТабДок.АвтоМасштаб = Истина;
Возврат ТабДок;
КонецФункции
Показать(9)
(9)
(9)
Это решение
Я так понял, вам нужно, получать предпоследнюю фамилию.
Сначала берете без среза все фамилии по данному пользователю, временная таблица и делаете сортировку (в запросе по дате по убыванию), ставите галочку выбрать первые 2. временная таблица, делаете сортировки по возрастанию и выбрать первые 1. И вуаля. Не изящно, но решит Вашу проблему)
Сначала берете без среза все фамилии по данному пользователю, временная таблица и делаете сортировку (в запросе по дате по убыванию), ставите галочку выбрать первые 2. временная таблица, делаете сортировки по возрастанию и выбрать первые 1. И вуаля. Не изящно, но решит Вашу проблему)
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот