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

Сравнение Дат

Автор Максим *****, 16 мар 2018, 12:47

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

Максим *****

Всем привет, прошу помощи у знающих, вот суть задачи:
Есть Дата назначения зарплаты сотрудников и есть дата перевода сотрудников, так вот условие,
Если когда-то назначили зарплату, а потом решили перевести сотрудника, и Если после перевода
зарплату не поменяли ему, то в поле Оклад = 0, как мне это реализовать? Всю голову сломал.
Вот код проделанной работы:

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

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

Рейтинг@Mail.ru

Поиск