Версия платформы 8.3.10.2505
Конфигурация Зарплата и Управление Персоналом для Украины, редакция 2.1 (2.1.51.1)
Вариант работы: Клиент-Сервер
У меня есть 2 базы на одном сервере. Для тестирования и основная.
На форму добавлена кнопка, по которой идет выборка и загрузка данных в ТЧ. Код идентичен что на тестовой, что на основной.
В тестовой базе выполняется нормально.
В основной запрос не возвращает значения. При этом если запрос выполнить в Консоле запроса, то выборка происходит нормально.
Как быть в данной ситуации?
Пример кода ниже.
Конфигурация Зарплата и Управление Персоналом для Украины, редакция 2.1 (2.1.51.1)
Вариант работы: Клиент-Сервер
У меня есть 2 базы на одном сервере. Для тестирования и основная.
На форму добавлена кнопка, по которой идет выборка и загрузка данных в ТЧ. Код идентичен что на тестовой, что на основной.
В тестовой базе выполняется нормально.
В основной запрос не возвращает значения. При этом если запрос выполнить в Консоле запроса, то выборка происходит нормально.
Как быть в данной ситуации?
Пример кода ниже.
Процедура КоманднаяПанельНачисленияРасчетПремииЗаИнтенсивность(Кнопка)
Если НЕ ЗначениеЗаполнено(УдалитьПодразделениеОрганизации) Тогда
Сообщить("Укажите подразделение для расчета!");
Возврат;
КонецЕсли;
Если Начисления.Количество() > 0 Тогда
ТекстВопроса = "Перед заполнением табличные части будут очищены. Заполнить?";
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да,);
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Начисления.Очистить();
НачисленияПремияЗаИнтенсивность.Очистить();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПроцентыКомпенсацииНормаДней.СотрудникОрганизации КАК Сотрудник,
| ПроцентыКомпенсацииНормаДней.ПроцентКомпенсации,
| ПроцентыКомпенсацииНормаДней.БазоваяСуммаКомпенсации,
| ПроцентыКомпенсацииНормаДней.НормаДней,
| ОтработанныеДни.ДнейОборот КАК ОтработноДней,
| ОтработанныеДни.КомандировкаДней,
| ОтработанныеДни.ОтпускДней,
| ОтработанныеДни.БольничныйДней,
| ВЫБОР
| КОГДА ОтработанныеДни.ДнейОборот / ПроцентыКомпенсацииНормаДней.НормаДней > 1
| ТОГДА 1
| ИНАЧЕ ОтработанныеДни.ДнейОборот / ПроцентыКомпенсацииНормаДней.НормаДней
| КОНЕЦ КАК ПроцентОтработанныхДней,
| ВЫРАЗИТЬ(ПроцентыКомпенсацииНормаДней.БазоваяСуммаКомпенсации * ВЫБОР
| КОГДА ОтработанныеДни.ДнейОборот / ПроцентыКомпенсацииНормаДней.НормаДней > 1
| ТОГДА 1
| ИНАЧЕ ОтработанныеДни.ДнейОборот / ПроцентыКомпенсацииНормаДней.НормаДней
| КОНЕЦ КАК ЧИСЛО(16, 0)) КАК Результат,
| СведенияОСотрудниках.ПодразделениеОрганизации,
| СведенияОСотрудниках.ИНН,
| ОкладыСотрудников.Показатель1 КАК Оклад
|ИЗ
| (ВЫБРАТЬ
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.СотрудникОрганизации КАК СотрудникОрганизации,
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.ПроцентКомпенсации КАК ПроцентКомпенсации,
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.БазоваяСуммаКомпенсации КАК БазоваяСуммаКомпенсации,
| СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК НормаДней
| ИЗ
| РегистрСведений.ПараметрыКомпенсацииЗаИнтенсивность.СрезПоследних(&тДатаКон, РАЗНОСТЬДАТ(Период, &тДатаКон, МЕСЯЦ) = 0) КАК ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних,
| РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
| ГДЕ
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.ПроцентКомпенсации <> 0
| И ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.БазоваяСуммаКомпенсации <> 0
| И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоЧасам)
| И ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &тГрафик
| И ГрафикиРаботыПоВидамВремени.Месяц = НАЧАЛОПЕРИОДА(&тДатаКон, МЕСЯЦ)
|
| СГРУППИРОВАТЬ ПО
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.СотрудникОрганизации,
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.ПроцентКомпенсации,
| ПараметрыКомпенсацииЗаИнтенсивностьСрезПоследних.БазоваяСуммаКомпенсации) КАК ПроцентыКомпенсацииНормаДней
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| РабочееВремяРаботниковОрганизацийОбороты.Сотрудник КАК Сотрудник,
| СУММА(ВЫБОР
| КОГДА РабочееВремяРаботниковОрганизацийОбороты.ВидИспользованияРабочегоВремени.ЦифровойКод В (""01"", ""07"")
| ТОГДА РабочееВремяРаботниковОрганизацийОбороты.ЧасовОборот
| КОНЕЦ) КАК ДнейОборот,
| СУММА(ВЫБОР
| КОГДА РабочееВремяРаботниковОрганизацийОбороты.ВидИспользованияРабочегоВремени.ЦифровойКод = ""07""
| ТОГДА РабочееВремяРаботниковОрганизацийОбороты.ЧасовОборот
| КОНЕЦ) КАК КомандировкаДней,
| СУММА(ВЫБОР
| КОГДА РабочееВремяРаботниковОрганизацийОбороты.ВидИспользованияРабочегоВремени.ЦифровойКод = ""08""
| ТОГДА РабочееВремяРаботниковОрганизацийОбороты.ЧасовОборот
| КОНЕЦ) КАК ОтпускДней,
| СУММА(ВЫБОР
| КОГДА РабочееВремяРаботниковОрганизацийОбороты.ВидИспользованияРабочегоВремени.ЦифровойКод = ""26""
| ТОГДА РабочееВремяРаботниковОрганизацийОбороты.ЧасовОборот
| КОНЕЦ) КАК БольничныйДней
| ИЗ
| РегистрНакопления.РабочееВремяРаботниковОрганизаций.Обороты(&тДатаНач, &тДатаКон, Месяц, ) КАК РабочееВремяРаботниковОрганизацийОбороты
|
| СГРУППИРОВАТЬ ПО
| РабочееВремяРаботниковОрганизацийОбороты.Сотрудник) КАК ОтработанныеДни
| ПО ПроцентыКомпенсацииНормаДней.СотрудникОрганизации = ОтработанныеДни.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| РаботникиОрганизации.Сотрудник КАК Сотрудник,
| РаботникиОрганизации.Сотрудник.Физлицо КАК Физлицо,
| РаботникиОрганизации.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния,
| РаботникиОрганизации.Должность КАК Должность,
| ЕСТЬNULL(ДатаПриемаСотрудника.ДатаПриема, &ПустаяДата) КАК ДатаПриема,
| РаботникиОрганизации.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| РаботникиОрганизации.Сотрудник.Физлицо.КодПоДРФО КАК ИНН
| ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&тДатаКон, Организация = &ГоловнаяОрганизация) КАК РаботникиОрганизации
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| РаботникиОрганизаций.Сотрудник КАК Сотрудник,
| МИНИМУМ(РаботникиОрганизаций.Период) КАК ДатаПриема
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|
| СГРУППИРОВАТЬ ПО
| РаботникиОрганизаций.Сотрудник) КАК ДатаПриемаСотрудника
| ПО РаботникиОрганизации.Сотрудник = ДатаПриемаСотрудника.Сотрудник
| ГДЕ
| РаботникиОрганизации.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК СведенияОСотрудниках
| ПО ПроцентыКомпенсацииНормаДней.СотрудникОрганизации = СведенияОСотрудниках.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета КАК ВидРасчета,
| ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1 КАК Показатель1
| ИЗ
| РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&тДатаКон, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
| ГДЕ
| (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням)
| ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам))) КАК ОкладыСотрудников
| ПО ПроцентыКомпенсацииНормаДней.СотрудникОрганизации = ОкладыСотрудников.Сотрудник
|
|ГДЕ СведенияОСотрудниках.ПодразделениеОрганизации В ИЕРАРХИИ(&парамПодразделение)
|
|УПОРЯДОЧИТЬ ПО
| СведенияОСотрудниках.Сотрудник.Наименование";
Запрос.УстановитьПараметр("тДатаНач",НачалоМесяца(ДатаНачалаБП));
Запрос.УстановитьПараметр("тДатаКон",КонецМесяца(ДатаОкончанияБП));
Запрос.УстановитьПараметр("ГоловнаяОрганизация",Справочники.Организации.НайтиПоКоду("000000001"));
Запрос.УстановитьПараметр("ПустаяДата",Дата("01.01.0001 00:00:00"));
Запрос.УстановитьПараметр("тГрафик",Справочники.ГрафикиРаботы.НайтиПоНаименованию("Пятидневка 40"));
Запрос.УстановитьПараметр("парамПодразделение", УдалитьПодразделениеОрганизации);
РезЗапроса = Запрос.Выполнить().Выгрузить();
ВременнаяТаблица = Новый ТаблицаЗначений;
ВременнаяТаблица = РезЗапроса;
ВременнаяТаблица.Колонки.Добавить("Показатель1");
ВременнаяТаблица.ЗаполнитьЗначения(0,"Показатель1");
ВременнаяТаблица.Колонки.Добавить("Авторасчет");
ВременнаяТаблица.ЗаполнитьЗначения(Истина,"Авторасчет");
ВременнаяТаблица.Колонки.Добавить("ВидРасчета");
ВременнаяТаблица.ЗаполнитьЗначения(ВидРасчета,"ВидРасчета");
ВременнаяТаблица.Колонки.Добавить("ДатаНачала");
ВременнаяТаблица.ЗаполнитьЗначения(ПериодРегистрации,"ДатаНачала");
ВременнаяТаблица.Колонки.Добавить("ДатаОкончания");
ВременнаяТаблица.ЗаполнитьЗначения(КонецМесяца(ПериодРегистрации),"ДатаОкончания");
ВременнаяТаблица.Колонки.Добавить("БазовыйПериодНачало");
ВременнаяТаблица.ЗаполнитьЗначения(ДатаНачалаБП,"БазовыйПериодНачало");
ВременнаяТаблица.Колонки.Добавить("БазовыйПериодКонец");
ВременнаяТаблица.ЗаполнитьЗначения(ДатаОкончанияБП,"БазовыйПериодКонец");
Начисления.Загрузить(ВременнаяТаблица);
НачисленияПремияЗаИнтенсивность.Загрузить(ВременнаяТаблица);
ПоказатьПо теме из базы знаний
- Обучение: Использование рекурсии при обращении к результатам выполнения запроса
- Конфигурация "Весовая ред. 3.0" для Платформы 8.3
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Модель запроса SQL
- Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm. Ошибка SDBL: Пропущена точка с запятой
Найденные решения
(5) Аналогичные ситуации у меня возникали и решались проверкой передаваемых параметров в запрос, иногда бывает не так прозрачно как кажется на первый взгляд.
Попробуйте убирать по одному параметры из запроса, пока запрос не вернет данные.
Попробуйте убирать по одному параметры из запроса, пока запрос не вернет данные.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Аналогичные ситуации у меня возникали и решались проверкой передаваемых параметров в запрос, иногда бывает не так прозрачно как кажется на первый взгляд.
Попробуйте убирать по одному параметры из запроса, пока запрос не вернет данные.
Попробуйте убирать по одному параметры из запроса, пока запрос не вернет данные.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот