Некорректная работа метода ReadStaffTable(...) в Script Editor
Админ написал скрипт в Script Editor, в котором читал таблицу PersonnelData, которую мы выгружали ему из 1С через Web сервис.
Внезапно (со слов админа) в этом скрипте метод ReadStaffTable(...) стал работать некорректно.
Раньше листинг был таким и все работало:
$svc = New-WebServiceProxy –Uri ‘http://srvweb1c/buh/ws/PersonnelData?wsdl ’
$currDate=(Get-date -DisplayHint Date -Format dd.MM.yyyy).ToString()
$UserArray=$svc.ReadStaffTable($currDate)
В первой строке обращаемся к таблице PersonnelData, сформированной заранее в 1С средствами Web сервиса.
Во второй - получаем текущую дату.
В третьей получаем своего рода "срез на дату" currDate из таблицы svc (это не тот срез, который в регистрах 1С).
Так вот. Проблема в том, что $svc.ReadStaffTable($currDate) перестал работать и работает только если дату задать явно строкой:
$UserArray=$svc.ReadStaffTable('03.10.2017')
$UserArray=$svc.ReadStaffTable($currDate)
Пока проблема решена костылем вида: $UserArray=$svc.ReadStaffTable('03.10.2050')
Т.е. срез на 2050 год всегда вернет, что нам нужно.
Но. Хотелось бы понять почему перестало работать.
З.Ы. Я не имею серьезного опыта работы в Script Editor.
Внезапно (со слов админа) в этом скрипте метод ReadStaffTable(...) стал работать некорректно.
Раньше листинг был таким и все работало:
$svc = New-WebServiceProxy –Uri ‘
$currDate=(Get-date -DisplayHint Date -Format dd.MM.yyyy).ToString()
$UserArray=$svc.ReadStaffTable($currDate)
В первой строке обращаемся к таблице PersonnelData, сформированной заранее в 1С средствами Web сервиса.
Во второй - получаем текущую дату.
В третьей получаем своего рода "срез на дату" currDate из таблицы svc (это не тот срез, который в регистрах 1С).
Так вот. Проблема в том, что $svc.ReadStaffTable($currDate) перестал работать и работает только если дату задать явно строкой:
$UserArray=$svc.ReadStaffTable('03.10.2017')
$UserArray=$svc.ReadStaffTable($currDate)
Пока проблема решена костылем вида: $UserArray=$svc.ReadStaffTable('03.10.2050')
Т.е. срез на 2050 год всегда вернет, что нам нужно.
Но. Хотелось бы понять почему перестало работать.
З.Ы. Я не имею серьезного опыта работы в Script Editor.
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)$currDate=(Get-date -DisplayHint Date -Format dd.MM.yyyy).ToString() - Здесь получается строка "03.10.2017"
$svc.ReadStaffTable($currDate) - А сюда по видимому передается Дата
ReadStaffTable - этот метод надо править чтобы он получал строку
Или попробуйте
$currDate=(Get-date -DisplayHint Date -Format dd.MM.yyyy)
$svc.ReadStaffTable($currDate) - А сюда по видимому передается Дата
ReadStaffTable - этот метод надо править чтобы он получал строку
Или попробуйте
$currDate=(Get-date -DisplayHint Date -Format dd.MM.yyyy)
Народ пишет, что надо использовать UTC формат, см: https://www.w3.org/TR/NOTE-datetime
Т.е.: yyyy-MM-dd.
Пока попробовал в командной строке набрать в powershell:
Get-date -DisplayHint Date -Format yyyy-MM-dd
работает.
Но в при подстановке в листинг Script Editor снова не работает.
Работает следующий формат, задаваемый как строка: '03.10.2017'
Т.е.: yyyy-MM-dd.
Пока попробовал в командной строке набрать в powershell:
Get-date -DisplayHint Date -Format yyyy-MM-dd
работает.
Но в при подстановке в листинг Script Editor снова не работает.
Работает следующий формат, задаваемый как строка: '03.10.2017'
Что-то я наверное затупил.
Ларчик просто открывался: в конфигураторе 1С в модуле web сервиса "PersonnelData" была функция:
Функция ReadStaffTable(QueryData) Экспорт
В дереве метаданных у web сервиса "PersonnelData" есть операция "ReadStaffTable" с параметром "QueryData". В свойствах "QueryData" указан тип "string (http://www.w3.org/2001/XMLSchema) " - т.е. СТРОКА.
Ну а далее в коде модуля 1С уже встречается строка:
ДатаЗапроса = СтрокаВДату("dd.MM.yyyy",СтруктураПараметровОперацийWebСервисов.QueryData,);
Из которой формат становится понятным. Мдя.... Бывает же такое.
З.Ы. Саид Абушев (Абушев) получает 2 мани за помощь.
Ларчик просто открывался: в конфигураторе 1С в модуле web сервиса "PersonnelData" была функция:
Функция ReadStaffTable(QueryData) Экспорт
В дереве метаданных у web сервиса "PersonnelData" есть операция "ReadStaffTable" с параметром "QueryData". В свойствах "QueryData" указан тип "string (
Ну а далее в коде модуля 1С уже встречается строка:
ДатаЗапроса = СтрокаВДату("dd.MM.yyyy",СтруктураПараметровОперацийWebСервисов.QueryData,);
Из которой формат становится понятным. Мдя.... Бывает же такое.
З.Ы. Саид Абушев (Абушев) получает 2 мани за помощь.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот