Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:16

Как увидеть уволенных в таб.части документа?

Автор Sheriff, 13 мар 2018, 08:49

0 Пользователей и 1 гость просматривают эту тему.

Sheriff

Всем привет! Есть конфа ЗУП 2.0 для Казахстана
В справочнике ФизЛиц у меня есть колонка "Дата увольнения", в самой карточке ФизЛица тоже указана дата увольнения и после проведения документа Увольнение из организации, ФизЛицо в таб.части справочника ФизЛиц автоматически выделяется красным цветом и рядом с ФИО указана дата увольнения (скрин во вложении)
Пытаюсь сделать колонку в документ Разовые начисления, чтоб в табличной части этого документа увидеть дату увольнения, но ничего не получается. Помогите, как вытащить в таб.часть документа, дату увольнения сотрудника?

alex0402

Цитата: Sheriff от 13 мар 2018, 08:49Пытаюсь сделать колонку в документ Разовые начисления, чтоб в табличной части этого документа увидеть дату увольнения
Как пытаюсь? Что сделал? Что не получилось?
Данные форме доступны?
Какая платформа?
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 13 мар 2018, 09:26
Цитата: Sheriff от 13 мар 2018, 08:49Пытаюсь сделать колонку в документ Разовые начисления, чтоб в табличной части этого документа увидеть дату увольнения
Как пытаюсь? Что сделал? Что не получилось?
Данные форме доступны?
Какая платформа?
Платформа 8.3.9.2170
Добавил колонку "Статус", по аналогии Табельному номеру и прописал в ОбщемМодуле -ПроцедурыУправленияПерсоналом -
УстановитьЗначенияКолонкиСтатусСтрока
Процедура УстановитьЗначенияКолонкиТабельныйНомерСтрока(ТЧДокумента, ОформленияСтрок, ДатаАктуальности, ТабельныеНомера = Неопределено, ГоловнаяОрганизация = Неопределено) Экспорт

Если ТЧДокумента.Колонки.Найти("ТабельныйНомерСтрока") = Неопределено
Или Не ТЧДокумента.Колонки.ТабельныйНомерСтрока.Видимость Тогда
Возврат;
КонецЕсли;

ЕстьПриказ = ТЧДокумента.Колонки.Найти("Приказ") <> Неопределено И ТЧДокумента.Колонки.Приказ.Видимость;

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

Прервать; // анализируем только один элемент, т.к. все остальные имеют такую же структуру
КонецЦикла;
КонецЕсли;

МассивФизЛиц = Новый Массив;
Если ТипЗнч(ТабельныеНомера) <> Тип("Соответствие") Тогда
Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
Если СтрокаТабличнойЧасти.ДанныеСтроки <> Неопределено Тогда
МассивФизЛиц.Добавить(СтрокаТабличнойЧасти.ДанныеСтроки.ФизЛицо);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
Если СтрокаТабличнойЧасти.ДанныеСтроки <> Неопределено Тогда
ФизЛицо = СтрокаТабличнойЧасти.ДанныеСтроки.ФизЛицо;
Если ТабельныеНомера[ФизЛицо] = Неопределено Тогда // добавляем только тех, кого еще нет в соответствии
МассивФизЛиц.Добавить(ФизЛицо);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если МассивФизЛиц.Количество() > 0 Тогда

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
Запрос.УстановитьПараметр("парамМассивФизЛиц", МассивФизЛиц);
Запрос.УстановитьПараметр("ГоловнаяОрганизация", ГоловнаяОрганизация);

ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
| Работники.ТабельныйНомер КАК ТабельныйНомер,
| Работники.ФизЛицо КАК ФизЛицо";
Если ГоловнаяОрганизация <> Неопределено Тогда // по регл. учету
Если ЕстьПриказ Тогда
ТекстЗапроса = ТекстЗапроса + ",
| Работники.Приказ
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаАктуальности,
| Организация = &ГоловнаяОрганизация
| И ФизЛицо В (&парамМассивФизЛиц)) КАК Работники";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаАктуальности,
| Организация = &ГоловнаяОрганизация
| И ФизЛицо В (&парамМассивФизЛиц)
| И ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)) КАК Работники";
КонецЕсли;
Иначе // по упр. учету
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| РегистрСведений.Работники.СрезПоследних(
| &ДатаАктуальности,
| ФизЛицо В (&парамМассивФизЛиц)) КАК Работники";
КонецЕсли;

Запрос.Текст = ТекстЗапроса;

Выборка = Запрос.Выполнить().Выбрать();

КонецЕсли;

Если ТипЗнч(ТабельныеНомера) <> Тип("Соответствие") Тогда
ТабельныеНомера = Новый Соответствие;
КонецЕсли;

Если Не ЕстьПриказ Тогда

Если МассивФизЛиц.Количество() > 0 Тогда

Пока Выборка.Следующий() Цикл
ТабельныеНомера[Выборка.ФизЛицо] = Выборка.ТабельныйНомер;
КонецЦикла;

КонецЕсли;

Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
ТабНомер = ТабельныеНомера.Получить(СтрокаТабличнойЧасти.Ячейки.ФизЛицо.Значение);
Если ТабНомер <> Неопределено Тогда
СтрокаТабличнойЧасти.Ячейки.ТабельныйНомерСтрока.УстановитьТекст(ТабНомер);
КонецЕсли;
КонецЦикла;

Иначе

Если МассивФизЛиц.Количество() > 0 Тогда

Пока Выборка.Следующий() Цикл
Приказы = ТабельныеНомера[Выборка.ФизЛицо];
Если Приказы = Неопределено Тогда
Приказы = Новый Соответствие;
ТабельныеНомера[Выборка.ФизЛицо] = Приказы;
КонецЕсли;
Приказы[Выборка.Приказ] = Выборка.ТабельныйНомер;
КонецЦикла;

КонецЕсли;

Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
Ячейки = СтрокаТабличнойЧасти.Ячейки;
Приказы = ТабельныеНомера[Ячейки.ФизЛицо.Значение];
Если Приказы <> Неопределено Тогда
ТабНомер = Приказы.Получить(Ячейки.Приказ.Значение);
Если ТабНомер <> Неопределено Тогда
Ячейки.ТабельныйНомерСтрока.УстановитьТекст(ТабНомер);
КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецЕсли;

КонецПроцедуры // УстановитьЗначенияКолонкиТабельныйНомерСтрока()

Только вместо "ТабельныйНомер", указал "Статус"

alex0402

Цитата: Sheriff от 13 мар 2018, 09:54Ячейки.ТабельныйНомерСтрока.УстановитьТекст(ТабНомер)

Ячейки.СтатусСтрока.УстановитьТекст(Статус)
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 13 мар 2018, 16:58
Цитата: Sheriff от 13 мар 2018, 09:54Ячейки.ТабельныйНомерСтрока.УстановитьТекст(ТабНомер)

Ячейки.СтатусСтрока.УстановитьТекст(Статус)
Если ТЧДокумента.Колонки.Найти("СтатусСтрока") = Неопределено
Или Не ТЧДокумента.Колонки.СтатусСтрока.Видимость Тогда
Возврат;
КонецЕсли;

ЕстьПриказ = ТЧДокумента.Колонки.Найти("Приказ") <> Неопределено И ТЧДокумента.Колонки.Приказ.Видимость;

// проверим содержимое соответствия - могла изменилась настройка приказа
Если ТипЗнч(Статус) = Тип("Соответствие") Тогда
Для Каждого КлючЗначение Из Статус Цикл
Если ТипЗнч(КлючЗначение.Значение) = Тип("Строка") Тогда
// в соответствии хранится информация без Приказов
Если ЕстьПриказ Тогда
// нужен приказ - перезаполним
Статус = Неопределено;
КонецЕсли;
Иначе
// хранится Приказ
Если НЕ ЕстьПриказ Тогда
// приказ не нужен - перезаполним
Статус = Неопределено;
КонецЕсли;
КонецЕсли;

Прервать; // анализируем только один элемент, т.к. все остальные имеют такую же структуру
КонецЦикла;
КонецЕсли;

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

Если МассивФизЛиц.Количество() > 0 Тогда

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
Запрос.УстановитьПараметр("парамМассивФизЛиц", МассивФизЛиц);
Запрос.УстановитьПараметр("ГоловнаяОрганизация", ГоловнаяОрганизация);

ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
| Работники.ПричинаИзмененияСостояния КАК Статус,
| Работники.ФизЛицо КАК ФизЛицо";
Если ГоловнаяОрганизация <> Неопределено Тогда // по регл. учету
Если ЕстьПриказ Тогда
ТекстЗапроса = ТекстЗапроса + ",
| Работники.Приказ
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаАктуальности,
| Организация = &ГоловнаяОрганизация
| И ФизЛицо В (&парамМассивФизЛиц)) КАК Работники";
Иначе
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаАктуальности,
| Организация = &ГоловнаяОрганизация
| И ФизЛицо В (&парамМассивФизЛиц)
| И ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)) КАК Работники";
КонецЕсли;
Иначе // по упр. учету
ТекстЗапроса = ТекстЗапроса + "
|ИЗ
| РегистрСведений.Работники.СрезПоследних(
| &ДатаАктуальности,
| ФизЛицо В (&парамМассивФизЛиц)) КАК Работники";
КонецЕсли;

Запрос.Текст = ТекстЗапроса;

Выборка = Запрос.Выполнить().Выбрать();

КонецЕсли;

Если ТипЗнч(Статус) <> Тип("Соответствие") Тогда
Статус = Новый Соответствие;
КонецЕсли;

Если Не ЕстьПриказ Тогда

Если МассивФизЛиц.Количество() > 0 Тогда

Пока Выборка.Следующий() Цикл
Статус[Выборка.ФизЛицо] = Выборка.Статус;
КонецЦикла;

КонецЕсли;

Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
Статус = Статус.Получить(СтрокаТабличнойЧасти.Ячейки.ФизЛицо.Значение);
Если Статус <> Неопределено Тогда
СтрокаТабличнойЧасти.Ячейки.СтатусСтрока.УстановитьТекст(Статус);
КонецЕсли;
КонецЦикла;

Иначе

Если МассивФизЛиц.Количество() > 0 Тогда

Пока Выборка.Следующий() Цикл
Приказы = Статус[Выборка.ФизЛицо];
Если Приказы = Неопределено Тогда
Приказы = Новый Соответствие;
Статус[Выборка.ФизЛицо] = Приказы;
КонецЕсли;
Приказы[Выборка.Приказ] = Выборка.Статус;
КонецЦикла;

КонецЕсли;

Для Каждого СтрокаТабличнойЧасти Из ОформленияСтрок Цикл
Ячейки = СтрокаТабличнойЧасти.Ячейки;
Приказы = Статус[Ячейки.ФизЛицо.Значение];
Если Приказы <> Неопределено Тогда
Статус = Приказы.Получить(Ячейки.Приказ.Значение);
Если Статус <> Неопределено Тогда
Ячейки.СтатусСтрока.УстановитьТекст(Статус);
КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецЕсли;

Пустое поле, ничего не заполняет

alex0402

Цитата: Sheriff от 14 мар 2018, 07:02Статус = Приказы.Получить(Ячейки.Приказ.Значение);

а если в отладчике посмотреть? Здесь статус есть?
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 14 мар 2018, 09:44
Цитата: Sheriff от 14 мар 2018, 07:02Статус = Приказы.Получить(Ячейки.Приказ.Значение);

а если в отладчике посмотреть? Здесь статус есть?
Неопределено пишет

alex0402

Цитата: Sheriff от 14 мар 2018, 10:47Неопределено пишет

нужно по тексту выше смотреть, почему не заполняется соответствие приказы...
Спасибо за Сказать спасибо

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск