|
Помогите разобраться с ошибкой (+) | ☑ | ||
---|---|---|---|---|
0
guestirk
18.07.19
✎
04:15
|
Здравствуйте. Я в 1с совсем не бум бум, помогите разобраться
Что имеем: 1с Предприятие 8.3.12.1855, конфигурация ЗУП КОРП 2.5.134.1, режим совместимости конфигурации установлен 8.2.13 Есть функция (запрос) данные вытаскиваю через HTTP-Сервисы, при попытке выполнить данный запрос ошибка: "{HTTPСервис.HTTPService1.Модуль(276)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)" ------------------------------ Функция GetEmployeeList(Запрос) //Объявление результирующего массива ResultList = Новый Массив; //Получение значений параметров из запроса ContractTypeLine = Запрос.ПараметрыЗапроса.Получить("contractType"); Если ContractTypeLine = НеОпределено Тогда ContractTypeLine = ""; КонецЕсли; ParentOrgCodesLine = Запрос.ПараметрыЗапроса.Получить("parentOrgCode"); Если ParentOrgCodesLine = НеОпределено Тогда ParentOrgCodesLine = ""; КонецЕсли; //Пропустим сотрудников, организация которых удовлетворяет поставленным требованиям PermittedOrgCodesArr = Новый Массив; PermittedOrgCodesArr = GetCutDepartmetnsWithChildView(ParentOrgCodesLine); //Выполнение запроса к бд Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия, | ФИОФизЛицСрезПоследних.Имя КАК Имя, | ФИОФизЛицСрезПоследних.Отчество КАК Отчество, | СписокРуководителей.Ссылка Как Руководитель, | СписокРуководителей.Ссылка.Код Как ТабНомРуководителя, | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | СотрудникиОрганизаций.Организация.Код КАК КодОрганизации, | СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код КАК КодПодразделения, | СотрудникиОрганизаций.ТекущееПодразделениеОрганизации, | СотрудникиОрганизаций.ТекущаяДолжностьОрганизации, | СотрудникиОрганизаций.Код, | СотрудникиОрганизаций.ДатаПриемаНаРаботу, | СотрудникиОрганизаций.ДатаУвольнения, | Выбор Когда СотрудникиОрганизаций.ДатаУвольнения = null | Тогда &ПустаяДата | Иначе СотрудникиОрганизаций.ДатаУвольнения | Конец КАК ДатаУвольнения, | | СостояниеРаботниковОрганизацийСрезПоследних.Период, | СостояниеРаботниковОрганизацийСрезПоследних.Состояние, | СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаЗапроса, ) КАК ФИОФизЛицСрезПоследних | ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаЗапроса, ) КАК СостояниеРаботниковОрганизацийСрезПоследних | ПО СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка | | | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СотрудникиОрганизаций.Ссылка, | ОтветственныеЛицаОрганизацийСрезПоследних.СтруктурнаяЕдиница | ИЗ РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(&ДатаЗапроса, ) КАК ОтветственныеЛицаОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций | ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = СотрудникиОрганизаций.Физлицо | И ОтветственныеЛицаОрганизацийСрезПоследних.СтруктурнаяЕдиница ССЫЛКА Справочник.ПодразделенияОрганизаций | ) КАК СписокРуководителей | ПО СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = СписокРуководителей.СтруктурнаяЕдиница | | //|ГДЕ //|СотрудникиОрганизаций.АРМ //| И Фамилия <> "" //| И Имя <> "" //| И СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код В (&ParentOrgCodes) //| |УПОРЯДОЧИТЬ ПО | Фамилия, | Имя, | Отчество |"; ДатаЗапроса = ТекущаяДата(); ПустаяДата = Дата('00010101'); ParentOrgCodes = PermittedOrgCodesArr; Запрос.УстановитьПараметр("ДатаЗапроса", ДатаЗапроса); Запрос.УстановитьПараметр("ПустаяДата", ПустаяДата); Запрос.УстановитьПараметр("ParentOrgCodes", ParentOrgCodes); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); //Формирующий цикл Пока Выборка.Следующий() Цикл //Пропустим сотрудников, у которых дата приема раньше даты запроса Если Выборка.ДатаПриемаНаРаботу>ДатаЗапроса Тогда Продолжить; КонецЕсли; //Пропустим сотрудников, у которых тип занятости совпадает с разрешенными из анкея ContractType = обИмяПеречисления(Выборка.Сотрудник.ВидЗанятости); Если ContractTypeLine = "" Тогда флагНаВидЗанятости = 1; Иначе ContractTypesArr = Новый Массив; ContractTypesArr = Split(ContractTypeLine, ","); флагНаВидЗанятости = 0; Для Каждого contractTypePermitted Из ContractTypesArr Цикл Если ContractType = contractTypePermitted Тогда флагНаВидЗанятости = 1; КонецЕсли; КонецЦикла; КонецЕсли; Если флагНаВидЗанятости = 0 Тогда Продолжить; КонецЕсли; //Формирование параметров для организации Guid = Строка(Выборка.Сотрудник.УникальныйИдентификатор()); Lastname = Выборка.Фамилия; Firstname = Выборка.Имя; Middlename = Выборка.Отчество; Department = ""+СокрЛП(Выборка.КодОрганизации)+?(Выборка.КодПодразделения=Null, "", "~"+СокрЛП(Выборка.КодПодразделения)); Position = Выборка.ТекущаяДолжностьОрганизации.Наименование; Tabnum = ""+СокрЛП(Выборка.КодОрганизации)+"~"+СокрЛП(Выборка.Код); StartDate = Выборка.ДатаПриемаНаРаботу; EndDate = ?(Выборка.ДатаУвольнения = Дата('00010101'), "", Выборка.ДатаУвольнения); StartLeaveDate = ""; EndLeaveDate = ""; ManagerGuid = ?(Выборка.Руководитель = Null, "", Строка(Выборка.Руководитель.УникальныйИдентификатор())); ManagerTabNum = ?(Выборка.ТабНомРуководителя = Null, "", ""+Выборка.КодОрганизации+"~"+Выборка.ТабНомРуководителя); //Установка состояния и дат связанных с состоянием Состояние = "Работает"; Период = Выборка.Период; ПериодЗавершения = Выборка.ПериодЗавершения; Если Выборка.Состояние <> Null Тогда Состояние = Строка(Выборка.Состояние); КонецЕсли; Если EndDate <> "" и EndDate <= ДатаЗапроса Тогда StartLeaveDate = ""; EndLeaveDate = ""; DisableReason = "Уволен"; ИначеЕсли Состояние = "Работает" или Состояние <> "Работает" и ПериодЗавершения < ДатаЗапроса Тогда Если Период <> null Тогда StartLeaveDate = Период; Иначе StartLeaveDate = ""; КонецЕсли; Если ПериодЗавершения <> null Тогда EndLeaveDate = ПериодЗавершения; Иначе EndLeaveDate = ""; КонецЕсли; DisableReason = "Работает"; ИначеЕсли Состояние <> "Работает" и ПериодЗавершения >= ДатаЗапроса Тогда StartLeaveDate = Период; EndLeaveDate = ПериодЗавершения; DisableReason = Состояние; КонецЕсли; //Занесение результатов запроса в структуру Структура = Новый Структура; Структура.Вставить("Guid" , Guid); Структура.Вставить("Lastname" , Lastname); Структура.Вставить("Firstname" , Firstname); Структура.Вставить("Middlename" , Middlename); Структура.Вставить("UserOrg" , Department); Структура.Вставить("Position" , Position); Структура.Вставить("Tabnum" , Tabnum); Структура.Вставить("StartDate" , StartDate); Структура.Вставить("EndDate" , EndDate); Структура.Вставить("StartLeaveDate" , StartLeaveDate); Структура.Вставить("EndLeaveDate" , EndLeaveDate); Структура.Вставить("ManagerGuid" , ManagerGuid); Структура.Вставить("ManagerTabNum" , ManagerTabNum); Структура.Вставить("DisableReason" , DisableReason); Структура.Вставить("СontractType" , ContractType); //Занесение организации в результирующий массив ResultList.Добавить(Структура) КонецЦикла; //Формирование json ответа СтрокаДляОтвета = СформироватьJSON(ResultList); Ответ = Новый HTTPСервисОтвет(200); Ответ.Заголовки.Вставить("Content-type", "application/json; charset=utf-8"); Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); Возврат Ответ; КонецФункции |
|||
1
guestirk
18.07.19
✎
04:26
|
Забыл добавить, строка 276 на которую ругается вот эта:
Если Выборка.ДатаПриемаНаРаботу>ДатаЗапроса Тогда |
|||
2
ДенисЧ
18.07.19
✎
04:41
|
Если Выборка.ДатаПриемаНаРаботу <> NULL И Выборка.ДатаПриемаНаРаботу>ДатаЗапроса Тогда
|
|||
3
Случайный прохожий
18.07.19
✎
06:06
|
В целях повышения производительности лучше условия писать в запросе, а не после того как получите выборку данных.
|
|||
4
guestirk
18.07.19
✎
08:16
|
(2) Спасибо ОГРОМНОЕ!!! ошибка эта ушла.
Но пришла другая, по другой функции))), буду разбираться дальше |
|||
5
guestirk
18.07.19
✎
13:09
|
Может подскажете все таки, не могу победить далее вышла ошибка такая:
Модуль(397)}: Значение не является значением объектного типа (Метаданные) Строка 397: ИмяПеречисления = Ссылка.Метаданные().Имя; --------------------------сама функция вот------------------ Функция обИмяПеречисления(Ссылка) Экспорт ИмяПеречисления = Ссылка.Метаданные().Имя; Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка); Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя; КонецФункции |
|||
6
hhhh
18.07.19
✎
13:13
|
(5) тут только один вариант может быть: в поле Ссылка ты не ссылку хреначишь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |