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

объединение значений в одном поле

Автор primus, 19 авг 2011, 14:59

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

primus

Делаю запрос из регистра. Получаю результат:

ФИО             Дни           Причина 
Иванов           2              прогул
Иванов           3              больничный

а мне нужно получить так
ФИО                Дни по причинам                   Всего
Иванов            2 прогул, 3 больничный             5

Андрей Федотов

По ФИО посчитай промежуточные итоги по Дни
Затем итоги в колонку ВСЕГО, ФИО в ФИО, а Дни+Причина в Дни по причинам через обход выборки.
Я другого способа не знаю

Dethmontt

Получаешь в запросе каждый результат во временную таблицу а в итоговой все сложишь и посчитаешь ИТОГ!
Поможет пакетный запрос или вложенный
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

primus

с итогом проблем в принципе нет. Проблема с объедиением столбцов в один. Сделал подзапросы на все варианты "причин", но внутреннее объединение дописывает все итоги в отдельные столбцы, причем количество дней и причина в разных столбцах. Были бы в одном, еще бы куда не шло.

Dethmontt

Чо тупишь!!!!
Поле1 + Поле2 + Поле3 + Поле4
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Каждое поле в разных запросах уже готовый результат.
Давай запрос сюда весь!!!???
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

primus

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

СГРУППИРОВАТЬ ПО
   УдержанияРаботниковОрганизаций.ФизЛицо.Наименование,
   УдержанияРаботниковОрганизаций.ПериодРегистрации,
   УдержанияРаботниковОрганизаций.Показатель1,
   Пропуски.ПричиныПропуска

УПОРЯДОЧИТЬ ПО
   ПериодРегистрации,
   ФизЛицоНаименование
{УПОРЯДОЧИТЬ ПО
   ФизЛицоНаименование,
   ПериодРегистрации,
   ДнейПоТабелю,
   ОтработаноДнейПоТабелю,
   ДнейПропусков,
   ПричиныПропуска,
   Начислено,
   ПроцентУдержания,
   СуммаУдержания}

И у меня в итоге получается, если Иванов не был про причине Прогула и Больничного две строки

Иванов 2 прогул
Иванов 3 больничный
Остальные поля одинаковые. пробовал писать:
Выбрать Пропуски.ДнейПропусков + Пропуски.ПричиныПропуска Как ПропускиПоПричинам
выдает ошибку.

Теги:

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

Рейтинг@Mail.ru

Поиск