Некорректная работа метода ReadStaffTable(...) в Script Editor

1. RailMen 824 03.10.17 12:19 Сейчас в теме
Админ написал скрипт в 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.
Вознаграждение за ответ
Показать полностью
Найденные решения
4. Абушев 135 03.10.17 13:01 Сейчас в теме
(3)А какой тип значения принимает ReadStaffTable?
7. Абушев 135 03.10.17 15:40 Сейчас в теме +2 $m
(6) Сам с таким сталкивался.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Абушев 135 03.10.17 12:23 Сейчас в теме
(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)
3. RailMen 824 03.10.17 12:48 Сейчас в теме
Народ пишет, что надо использовать 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'
4. Абушев 135 03.10.17 13:01 Сейчас в теме
(3)А какой тип значения принимает ReadStaffTable?
5. Абушев 135 03.10.17 13:17 Сейчас в теме
Попробуйте вот так:
$currDate=(Get-date -DisplayHint Date -Format U).ToString()
6. RailMen 824 03.10.17 15:34 Сейчас в теме
Что-то я наверное затупил.

Ларчик просто открывался: в конфигураторе 1С в модуле web сервиса "PersonnelData" была функция:

Функция ReadStaffTable(QueryData) Экспорт

В дереве метаданных у web сервиса "PersonnelData" есть операция "ReadStaffTable" с параметром "QueryData". В свойствах "QueryData" указан тип "string (http://www.w3.org/2001/XMLSchema)" - т.е. СТРОКА.

Ну а далее в коде модуля 1С уже встречается строка:
ДатаЗапроса = СтрокаВДату("dd.MM.yyyy",СтруктураПараметровОперацийWebСервисов.QueryData,);

Из которой формат становится понятным. Мдя.... Бывает же такое.

З.Ы. Саид Абушев (Абушев) получает 2 мани за помощь.
7. Абушев 135 03.10.17 15:40 Сейчас в теме +2 $m
(6) Сам с таким сталкивался.
8. VPotapov 03.10.17 18:00 Сейчас в теме
(6) Не забудьте передать sm, нажав на "Отдать $m" у нужного сообщения $)
9. RailMen 824 03.10.17 20:23 Сейчас в теме
(8) награда нашла героя!
VPotapov; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот