Имя: Пароль:
1C
1С v8
УФ. Создание объектов без записи с передачей на клиент... Опять: 20пять)
0 bolobol
 
20.02.17
18:30
Добрый день!

Подскажите, пожалуйста, очень не хватает функционала обычных форм с возможностью в ТЗ загонять созданные, но не записанные в базу, объекты, с последующим просмотром пользователем, и уже по его (пользовательскому) решению - либо записать, либо забыть.

Но вот как такой механизм сделать на УФ - ума не приложу. Т.к. колонке ТЗ назначить тип, типа: СправочникОбъект.Номенклатура - никак, только ссылки.

При назначении любого типа (Произвольный) - ругается при передаче объектов на клиент. Но на сервере объекты оставить негде, а на клиент не передать. Может, можно как-то "заархивировать" и отдавать на клиент архив, а по мановению пользователя - создавать нужный объект и архив заливать в него...?

Только вот как это правильно сделать? Типа как ЗаписатьXML(ЗаписьXML, Объект); - только без записи, просто получить двоичное или mxl представление из которого потом развернуть объект, типа Данные = ПрочитатьXML(ЧтениеXML), так ещё бы и форму полученного на клиенте открыть или открыть форму и заполнить её данными из ПрочитатьXML(ЧтениеXML).

?
1 LienXo
 
20.02.17
18:35
Стесняюсь спросить - а на обычных вы как делали?
2 b_ru
 
20.02.17
18:54
Дело в том, что УФ это не только набор каких-то там методов и свойств, это еще и парадигма. И в самой парадигме стейтлесс сервера такое не предусмотрено. Так что не нужно насиловать 1Ску, а придется придумать другой механизм. Например, показать пользователю все данные в табличной форме, а по его решению уже создавать и записывать объекты.
3 bolobol
 
20.02.17
19:13
(2) Да это и требуется, только на УФ. как раз там, где нельзя СправочникОбъект подержать до решения пользователя незаписанным.

(1) А в ОФ - можно не только Ссылку, но и Объект хранить в реквизитах
4 mikeA
 
20.02.17
19:30
(3) Через жо..., т.е. через XML попробуй. Ну или если не заморачиваться, ЗначениеВСтроку/ИзСтрокиВнутр.
5 bolobol
 
20.02.17
19:43
(4) ЗначениеВСтроку даёт что-то типа: "{"#", 001222015252-02052-55-52212-0-0-5-55555}" - что совсем никак не напоминает содержание элемента справочника Номенклатура.
А вот через xml - это куда?, чтоб без записи в файл на диске?
6 mikeA
 
20.02.17
20:24
(5) Это как раз и есть представление объекта справочника. ЗначениеИзСтроки сделает из него объект.
Можно то же самое деалть через XML. Чтобы без записи на диск нужно установить строку у записи XML.
7 bolobol
 
20.02.17
20:30
(6) Да, про ХМЛ это точно:
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Объект);
ДанныеОбъекта= ЗаписьXML.Закрыть();

А вот ЗначениеВСтрокуВнутр ничего путного не создаёт, может, для незаписанного в базу объекта не работает - не знаю, но из 36 цифр восстановить 50 реквизитов - точно не получится, к гадалке не ходи)
8 eks1985
 
20.02.17
20:33
Ниче не понял. Храни в реквизитах формы данные необходимые для записи объекта, показывай их пользователю, по решению пользователя в итоге пиши объекты или не пиши. Какая нужда держать в таблице именно созданные, но не записанные объекты?
9 eks1985
 
20.02.17
20:35
>> Да это и требуется, только на УФ. как раз там, где нельзя СправочникОбъект подержать до решения пользователя незаписанным.

Так и не создавай ты этот объект. Подготовь все данные, храни их форме. Считай что это и есть твой созданный, но не записанный объект.
10 bolobol
 
20.02.17
20:55
(8) Это заметно. Хранить в реквизитах обработки описание всей конфы?? Вы как себе это представляете, в двух словах?

(9) Так если я объект не создам, то где я подготовленные данные хранить буду? Чтобы считать, что они и есть мой созданный объект, мне нужно эти данные сохранить от момента получения данных до решения пользователя - так в этом и суть задачи "как сохранить". Классный ответ предлагаете: "храни их в форме"))
11 jsmith82
 
20.02.17
21:03
Создаешь на сервере ТЗ с колонкой СправочникОбъект / ДокументОбъект. Помещаешь во врем. хранилище (ВХ). Адрес сохраняешь
Параллельно создаешь из этого ТЗ иное ТЗ для пользовательского представления - выгружаешь его в массив через ОбщегоНазначения.ТаблицаЗначенийВМассив
Передаешь массив на клиент. Там ставятся флажки. Снова на сервер. Ловишь свою ТЗ из ВХ. Перебираешь массив структур по условию флажка, сопоставляешь по индексу с ТЗ, создаешь
12 bolobol
 
20.02.17
21:18
(11) вот-вот, про временное хранилище тоже что-то краем уха слышал, что, якобы, позволяет сохранять данные между сеансами работы на сервере. Пример есть?
13 eks1985
 
20.02.17
21:25
(10) >> Это заметно. Хранить в реквизитах обработки описание всей конфы?? Вы как себе это представляете, в двух словах?

Заметно что у тебя каша в голове. Читать документацию. Наводка: реквизит формы Таблица.
14 jsmith82
 
20.02.17
21:26
(12) гугли поместить во временное хранилище /
получить из временного хранилища
я тебе метод дал
и ещё - время существования ВХ зависит от уникального идентификатора - тоже помни
15 Сергиус
 
20.02.17
21:33
(0)Что мешает хранить данные, не в объекте, а в структуре, имитирующей сам объект(т.е. теже поля, таблицы)?
16 bolobol
 
20.02.17
21:35
(14) точняк! Это оно! Спасибо! А вот про время существования от уид-а - этого я не припомню. Что за зависимость? Что-то пишут, что уид формы еадо давать, чтоб не уничтожилось раньше формы, булем пробовать.

(13) учитесь писать по делу, про интерфейсные детали тут никто не интересовался, но - спасибо за на водку)

(15) сложно архиерически повторять то, что уже сделано до нас и работает из коробки
17 AlvlSpb
 
20.02.17
21:37
(0) А вот это http://catalog.mista.ru/public/118784/ не решение вашей проблемы?
18 mikeA
 
20.02.17
21:37
(15) Лень структуру описывать.

(16) Ещё там будет шаманство с получением формы несуществующего объекта на клиенте и заполнением её на сервере.
19 bolobol
 
20.02.17
21:45
Таки приблизились ко второй части: правильно (идеологически) открыть в привычной пользователю форме новый созданный когда-то на... А вот и ответ приехал в (17)

Всем спасибо! Завтра запущу в продакшен))
20 Torquader
 
21.02.17
00:51
Самое простое - объекты сначала создать, а потом - удалить, если не нужны.
Просто, например, справочник "Номенклатура" с единицами измерения в не записанном виде нормально существовать и отображаться не может.
21 France
 
21.02.17
01:35
самое простое решение - в ХМЛ, потом в хранилище.. потом показать.
22 Antony8x
 
21.02.17
04:04
(0) А если данные формы в ТЗ добавлять. При выборе пользователем создавать объект и в его форму копировать данные из ТЗ?
23 Web00001
 
21.02.17
04:20
(0)Я немного не понял, вы решаете вот эту проблему http://catalog.mista.ru/public/118784/ ?
24 Web00001
 
21.02.17
04:21
+(23)кхм уже было в (17)