Вход | Регистрация

1С:Предприятие ::

Метки: 

Как сравнить периоды журнала расчётов в запросе?

Я
   aka graham
 
04.08.04 - 13:51
Сформировал два запроса по двум журналам расчётов. Делаю выборку по первому запросу, затем нужно получить результаты из второго таким образом:

зп2.получить(зп1.грп1,зп1.грп2,);

потом выбратьданные из второго запроса по третьей группировке. Всё работало пока в запросе не появился период действия записи. Пытаюсь получить запись из второго запроса напрямую:

зп2.получить(зп1.грп1,зп1.грп2,зп1.периодрасчета,);

вовращает 0. Выбираю результаты последовательно - значения пропускаются. Открыл в отладчике, такая картина:

зп1.периодрасчета = Апрель 2004 г.
зп2.периодрасчета = Апрель 2004 г.
ТипЗначенияСтр(зп1.периодрасчета) = "РасчетныйПериод"
ТипЗначенияСтр(зп2.периодрасчета) = "РасчетныйПериод"
?(зп1.периодрасчета=зп2.периодрасчета,1,"") = ""

Как решить сию проблему малой кровью? Посоветуйте пожалуйста.
 
  Рекламное место пустует
   Yur
1 - 04.08.04 - 14:18
А в запросе периодрасчета-это что? Периоддействия или преиодрегистарции? Текст запросов можешь кинуть?
   It is me
 
2 - 04.08.04 - 14:23
Сделай группировку не по периоду расчета, а по дате начала периода расчета
   aka graham
 
3 - 04.08.04 - 16:13
to It is me
В тексте запроса написал \"прасч=журнал.зарплата.периоддействия.датаначала;\", затем просто \"прасч=журнал.зарплата.датаначала\" - результат один и тот же: при выполнении запроса появляется сообщение в окне сообщений \"Ошибка в индексном условии\" и 1С вылетает в будущее. Результат аналогичный если использовать дату окончания периода и описатель периода. На всякий случай: v77 Расчет, DBF релиз 21, PIV-3 места на винте свободно 20 Гб, памяти 512.

to Yur
Текст модуля такой:

Процедура Сформировать()
    зап=создатьобъект(\"запрос\");
    нал=создатьобъект(\"запрос\");
    
    т.очистить();
    т.новаяколонка(\"сотрудник\",\"справочник.сотрудники\");
    т.новаяколонка(\"видрасчета\",\"видрасчета\");
    т.новаяколонка(\"период\");
    т.новаяколонка(\"результат\",\"число\",19,2);
    т.новаяколонка(\"распред_ипн\",\"число\",19,2);
    т.новаяколонка(\"распред_опв\",\"число\",19,2);
    т.новаяколонка(\"распред_сн\",\"число\",19,2);
    т.новаяколонка(\"дней\",\"число\",10,0);
    
    тз=\"с начдата по кондата;
    |сотр=журналрасчетов.зарплата.объект;
    |деп=журналрасчетов.зарплата.объект.подразделение;
    |вр=журналрасчетов.зарплата.видрасч;
    |прасч=журналрасчетов.зарплата.периоддействия;
    |сум=журналрасчетов.зарплата.результат;
    |дни=журналрасчетов.зарплата.дни;
    |группировка деп;
    |группировка сотр без групп упорядочить по сотр.наименование;
    |группировка прасч;
    |группировка вр;
    |функция результат=сумма(сум);
    |функция отработано=сумма(дни);
    |условие (сотр в фсотр);
    |условие (деп в фдеп);
    |\";
    зап.выполнить(тз);
    
    тз=\"с начдата по кондата;
    |сотр=журналрасчетов.налоги.объект;
    |прасч=журналрасчетов.налоги.периоддействия;
    |вр=журналрасчетов.налоги.видрасч;
    |вросн=журналрасчетов.налоги.расчетоснование;
    |сум=журналрасчетов.налоги.результат;
    |группировка сотр без групп упорядочить по сотр.наименование;
    |группировка вросн;
    |группировка прасч;
    |группировка вр;
    |функция налог=сумма(сум);
    |условие (сотр в фсотр);
    //без итогов;\";

    нал.выполнить(тз);
    
    зап.вначаловыборки();
    пока зап.группировка(1)=1 цикл
        пока зап.группировка(2)=1 цикл
            пока зап.группировка(3)=1 цикл
                пока зап.группировка(4)=1 цикл
                    т.новаястрока();
                    т.департамент=зап.деп;
                    т.сотрудник=зап.сотр;
                    т.период=зап.прасч;
                    т.видрасчета=зап.вр;
                    т.результат=зап.результат;
                    т.дней=зап.отработано;
                    нал.вначаловыборки();
                    если нал.получить(т.сотрудник,т.видрасчета,т.период,)=1 тогда
                                пока нал.группировка(4)=1 цикл
                                    если нал.вр=видрасчета.распределенныйипн тогда
                                        т.распред_ипн=нал.налог;
                                    конецесли;
                                    если нал.вр=видрасчета.распределенныйпф тогда
                                        т.распред_опв=нал.налог;
                                    конецесли;
                                    если нал.вр=видрасчета.распределенныйсн тогда
                                        т.распред_сн=нал.налог;
                                    конецесли;
                                конеццикла;
                       //пока нал.группировка(3)=1 цикл

                       //    если строка(нал.прасч)=строка(зап.прасч) тогда

                       //    конецесли;

                       //конеццикла;

                    конецесли;
                конеццикла;
            конеццикла;
        конеццикла;
    конеццикла;
КонецПроцедуры

если добавить закомментированный кусок с переводом периода в строку и последующим сравнением, то отчет работает.
В запросе период выбирал и \"С ... по ...2 и \"Период с ... по ...\" ничего не изменилось. Буду использовать строковое значение периода, но спортивный интерес остался - что период действия для каждого журнала расчетов свой?


Список тем форума
Рекламное место пустует   Рекламное место пустует
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует