Имя: Пароль:
1C
1С v8
Как получить макет СКД в веб-сервисе?
0 tciban
 
26.10.20
12:14
Это как бы в продолжение темы Подскажите по Вебсервису и XDTO!
Там я спросил как бы мне получить из вебсервиса сразу вместо ссылки строку УИД
Мне посоветовали получать не запросом нужные сведения, а через СКД: https://start1c.blogspot.com/2014/02/blog-post.html на том тему и забыли.
Я попробовал сразу вариант с програмнным формированием схемы СКД. Некоторые затруднения вызвало подставление параметра, ну да нарыл, заработало, получение данных прилично ускорилось.
А теперь меня заинтересовал вариант получения схемы СКД через макет. Ну потому что если запрос достаточно сложный, схему программно формировать довольно долго и муторно, решил сделать схему и вставить в дерево как макет. Но столкнулся со следующей проблемой - метод ПолучитьМакет() есть только у прикладных объектов! А мне схема СКД нужна в модуле. Либо в программном модуле либо в модуле веб-сервиса.

Кто сталкивался - подскажите, как это можно сделать? Заранее благодарен уважаемым коллегам за мудрые советы!

PS: Кстати параметры в схему СКД программно добавил вот так:

    Настройки = СхемаСКД.ВариантыНастроек[0].Настройки;
    СтрПараметр = Настройки.ПараметрыДанных.Элементы.Добавить();
    СтрПараметр.Параметр = Новый ПараметрКомпоновкиДанных("Пользователь");
    СтрПараметр.Значение = Пользователь;
    СтрПараметр.Использование = Истина;

Что скажите?
1 zippygrill
 
26.10.20
12:16
его вроде можно в xml не?
2 zippygrill
 
26.10.20
12:16
или сериализацию
3 tciban
 
26.10.20
12:27
(1) и (2) не совсем про то. Вот смотри - когда ты из отчета или из документа хочешь получить имеющуюся в дереве конфигурации схему СКД ты просто пишешь ПолучитьМакет(<Имя макета>)
А в моем случае что писать? Когда я в програмном модуле просто хочу получить схему CRL? программно ее скомпоновать, получить на выходе ТЗ и отправить это тезе в качестве ответа веб-сервиса. (последнне впрочем не самое определяющее, не важно)
4 ДенисЧ
 
26.10.20
12:29
ПолучитьОбщийМакет() пробовал?
5 Василий Алибабаевич
 
26.10.20
12:30
(0) "метод ПолучитьМакет() есть только у прикладных объектов!"

ПолучитьОбщийМакет спасет отца...
6 tciban
 
26.10.20
12:35
(4) (5) О! Вот стоит спросить умных людей и сразу все станет на свои места :)
7 tciban
 
26.10.20
13:29
Теперь бы кто подсказал как установить значение параметра в полученной СКД...
8 ДенисЧ
 
26.10.20
13:33
(7) А чем данная схема отличается от той, что получена из объекта?
9 tciban
 
26.10.20
13:43
(8) тем что там уже есть параметр, не надо добавлять, надо только значение установить
10 ДенисЧ
 
26.10.20
13:46
(9) А в этой схеме нет параметра? Тогда чему значение устанавливать будем? О_о
11 tciban
 
26.10.20
13:49
(10) Когда я схему формирую программно - там нет сначала параметра и я его добавляю.
    Настройки = СхемаСКД.ВариантыНастроек[0].Настройки;
    СтрПараметр = Настройки.ПараметрыДанных.Элементы.Добавить();
    СтрПараметр.Параметр = Новый ПараметрКомпоновкиДанных("Пользователь");
    СтрПараметр.Значение = Пользователь;
    СтрПараметр.Использование = Истина;

Когда я беру схему из макета - там уже есть параметр Пользователь, но мне надо установить его значение
но почему то не прокатывает код
    Настройки = Схема.ВариантыНастроек[0].Настройки;
    СтрПараметр = Настройки.ПараметрыДанных.Элементы.Найти("Пользователь");
    СтрПараметр.Значение = Пользователь;
    СтрПараметр.Использование = Истина;
12 tciban
 
26.10.20
14:24
up!
13 ДенисЧ
 
26.10.20
14:34
Ну так смотри, с каким вариантом ты выполняешь...
14 tciban
 
26.10.20
14:36
(13) Я попробовал подставить Схема.ВариантыНастроек[1] - выругалось, нет такого
15 Mankubus
 
26.10.20
14:36
>>Настройки = СхемаСКД.ВариантыНастроек[0].Настройки;
так плохо писать. надо
Настройки = СхемаСКД.НастройкиПоУмолчанию;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Пользователь", Пользователь);
16 Mankubus
 
26.10.20
14:37
и вопрос почему код не прокатывает? как это понял?
наверное просто дальше не правильно инициализируешь компоновщик
17 tciban
 
26.10.20
14:38
(15)
Неполучилось
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера:  Неизвестная ошибка. {РасширениеWebServis ОбщийМодуль.ws_ВебСервисы.Модуль(210)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
по причине:
{РасширениеWebServis ОбщийМодуль.ws_ВебСервисы.Модуль(210)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
по причине:
Параметр с указанным именем не найден
18 tciban
 
26.10.20
14:39
(17) Непроканало потому что Настройки.ПараметрыДанных.Элементы.Найти("Пользователь"); возвращает неопределено
19 Вафель
 
26.10.20
14:41
отчеты. мойотчет. получитьмакет
20 tciban
 
26.10.20
14:43
(19) Нет у меня отчета :( горюю!
21 Mankubus
 
26.10.20
14:45
что-то не так делаешь но не видя макет и весь код можно только угадывать
22 tciban
 
26.10.20
14:58
ну код то я легко могу показать, а вот макет...
Сюда как то скриншот вставить можно? Ни разу не делал
23 arsik
 
гуру
26.10.20
14:58
(22) Закладку параметры в СКД покажи
24 tciban
 
26.10.20
15:05
(23) как вставить скриншот?
25 arsik
 
гуру
26.10.20
15:06
(24) никак. Через картинкообменник
26 tciban
 
26.10.20
15:09
Короче в закладке параметры Имя - Пользователь, Ограничение доступности галочка и запрещать незаполненые значения галочка. использование Авто
27 ДенисЧ
 
26.10.20
15:14
(24) Кладёшь на pics.rsh.ru, ссылку сюда.
И покажи Настройки.ПараметрыДанных.Элементы в развёрнутом виде из отладчике
28 tciban
 
26.10.20
15:22
(27) "И покажи Настройки.ПараметрыДанных.Элементы в развёрнутом виде из отладчике" Вот с этим проблема... Отладку на сервере добро если завтра админы включат :(
Была б отладка - я б может уже разобралсо
29 tciban
 
26.10.20
15:25
пишет не нашла такого параметра
30 tciban
 
26.10.20
15:28
31 arsik
 
гуру
26.10.20
15:30
(30) Эти обе галки сними а соседнюю поставь
32 tciban
 
26.10.20
15:38
(31) А код какой для установки параметра?
33 arsik
 
гуру
26.10.20
15:51
Вот тут еще галку попробуй
https://i.imgur.com/0CLpiQ2.png
(32) как в (15)
34 tciban
 
26.10.20
15:56
(33) Ай шаман! Кажись заработало!
Закон Брукера: Даже маленькая практика стоит большой теории.