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

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 и \"Период с ... по ...\" ничего не изменилось. Буду использовать строковое значение периода, но спортивный интерес остался - что период действия для каждого журнала расчетов свой?


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