Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос по регистру сведений          
Genda Подменю пользователя
сообщение 24.08.12, 10:25
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Всем доброго дня! Делаю отчет, в котором требуется за определенный период по каждой категории сотрудников вывести осн и доп начисления по зарплате. Категории выбираю из регистра сведений РаботникиОрганизаций. Для одного месяца все отлично работает через срез последних и дату актуальности (конец месяца) для регистра. Но если выбирать в качестве периода промежуток месяцев (дату актуальности вы этом случае ставлю на конец месяца конца периода), то значения начислений по категориям не сходятся со значениями расчетной ведомости,общая сумма сходится. Т.е. получается, что категории выбираются из регистра не так как нужно. Необходимо, чтобы для каждого месяца(он же период регистрации) каким то образом устанавливалась дата актуальности на его конец, ну или что-то подобное.
Пробовала также немного другой вариант, без среза последних и с выбором максимума по периоду регистра сведений РаботникиОрганизаций. Но он выводит не последнее актуальное значение периода для сотрудника,а все. Работу запросов проверяю в консоли. Конфигурация-ЗУП 2.5
Извиняюсь сразу за сумбур в объяснении,я начинающий программист.
Помогите пожалуйста выбрать актуальную категории для каждого сотрудника в зависимости от периода регистрации.
Ниже привожу оба запроса:
Срезпоследних и дата актуальности:
ВЫБРАТЬ
                    Код,
                      ПериодРегистрации,
                      СУММА(Результат) КАК Результат,
                      ФизЛицо,
                      Категория,
                      Подразделение,
                      Период,
                    ПериодЗавершения,
                    КатегорияЗавершения,
                    ВидЗанятости,
                    ДатаУвольнения,
                    ДоходВНатуральнойФорме,
                    ВидДоговора
                    
                        ИЗ
                        (ВЫБРАТЬ
                             яВидыНачислений.Код,
                             СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
                             ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование КАК ФизЛицо,
                             ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
                             РаботникиОрганизацийСрезПоследних.Период КАК Период,
                             РаботникиОрганизацийСрезПоследних.Должность.КатегорияСтатистическогоУчета КАК Категория,
                              РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразделение,
                            РаботникиОрганизацийСрезПоследних.ПериодЗавершения КАК ПериодЗавершения,
                             РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения.КатегорияСтатистическ
огоУчета КАК КатегорияЗавершения,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости КАК ВидЗанятости,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения КАК ДатаУвольнения,
                            яВидыНачислений.ВидНачисления.ЯвляетсяДоходомВНатуральнойФорме КАК ДоходВНатуральнойФорме,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидДоговора КАК ВидДоговора
                                                                    
                         ИЗ
                             РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
                                 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.яВидыНачислений КАК яВидыНачислений
                                 ПО ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета = яВидыНачислений.ВидНачисления
                                 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаАктуальности,) КАК РаботникиОрганизацийСрезПоследних
                                 ПО ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Наименование
                             
                         ГДЕ
                             ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НачПериода И &КонПериода
                
                        СГРУППИРОВАТЬ ПО
                             яВидыНачислений.Код,
                             ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование,
                             ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
                             РаботникиОрганизацийСрезПоследних.Должность.КатегорияСтатистическогоУчета,
                              РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование,
                              РаботникиОрганизацийСрезПоследних.Период,
                            РаботникиОрганизацийСрезПоследних.ПериодЗавершения,
                             РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения.КатегорияСтатистическ
огоУчета,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения,
                            яВидыНачислений.ВидНачисления.ЯвляетсяДоходомВНатуральнойФорме,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидДоговора
                     
                        ОБЪЕДИНИТЬ
                    
                        ВЫБРАТЬ
                              яВидыНачислений.Код,
                              СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
                              ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование КАК ФизЛицо,
                            ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
                            РаботникиОрганизацийСрезПоследних.Период КАК Период,
                              РаботникиОрганизацийСрезПоследних.Должность.КатегорияСтатистическогоУчета КАК Категория,
                              РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразделение,
                            РаботникиОрганизацийСрезПоследних.ПериодЗавершения КАК ПериодЗавершения,
                             РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения.КатегорияСтатистическ
огоУчета КАК КатегорияЗавершения,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости КАК ВидЗанятости,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения КАК ДатаУвольнения,
                            яВидыНачислений.ВидНачисления.ЯвляетсяДоходомВНатуральнойФорме КАК ДоходВНатуральнойФорме,
                            РаботникиОрганизацийСрезПоследних.Сотрудник.ВидДоговора КАК ВидДоговора
                          ИЗ
                              РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
                                  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних (&ДатаАктуальности,) КАК РаботникиОрганизацийСрезПоследних
                                  ПО ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо.Наименование = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Наименование
                                  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.яВидыНачислений КАК яВидыНачислений
                                  ПО ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета = яВидыНачислений.ВидНачисления
                          ГДЕ
                              ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НачПериода И &КонПериода

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


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

Genda Подменю пользователя
сообщение 27.08.12, 17:57
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Вопрос актуален. Подскажите,пожалуйста!

Сформулирую вопрос покороче... Нужно на каждый месяц выбрать актуальную категорию сотрудника из регистра сведений РаботникиОрганизаций. Например, формирую отчет за 3 месяца: январь,февраль,март2012. Соответственно нужно чтобы дата актуальности выбиралась 3 раза: на конец января,конец февраля и конец марта, тогда все будет верно. Как это можно реализовать?

Vofka Подменю пользователя
сообщение 27.08.12, 19:26
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Из регистра сведений одним запросом (в смысле без дополнительного программирования), по-моему, никак.

Genda Подменю пользователя
сообщение 28.08.12, 5:11
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Vofka , подскажите пожалуйста, на ваш взгляд, какое доп.программирование можно применить?

Vofka Подменю пользователя
сообщение 28.08.12, 8:20
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Как мне кажется это должно быть так: должен быть массив (список) периодов, обходя который будет собираться запрос. Типо такого (псевдокод):

Периоды = Новый Массив;
Периоды.Добавить(Дата("20120131"));
Периоды.Добавить(Дата("20120229"));
Периоды.Добавить(Дата("20120331"));

Запрос = Новый Запрос;

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

НомерПериода = 1;
Для Каждого Период ИЗ Периоды Цикл

   Если ТекстЗапроса <> "" Тогда
      ТекстЗапроса = ТекстЗапроса + "
      |ОБЪЕДИНИТЬ";
   КонецЕсли;

   ТекстЗапроса = ТекстЗапроса + "тут пишем нужный запрос, в качестве периода передаем такой переметр &Период"+НомерПериода+";
   Запрос.УстановитьПараметры("Период"+НомерПериода, Период);

   НомерПериода  = НомерПериода + 1;
КонецЦикла;

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


Может можно как-то красивше сделать, но это первое, что в голову пришло.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 13.06.24, 1:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!