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

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

Автор 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

Поиск