Имя: Пароль:
1C
1С v8
программно записать значение в реквизит формы
0 bfss-732
 
25.05.22
11:27
Всем привет!
Обработкой создаю документ, все реквизиты в Объекте вижу, записать значения могу.
Но есть реквизиты формы, как к ним обратиться, чтоб записать туда значения?
Понимаю, что без открытия формы реквизиты их форм не существуют.
1 bfss-732
 
25.05.22
11:27
А еще тип реквизита формы "ФорматированныйДокумент"
2 banco
 
25.05.22
11:30
(0) Посмотри как и откуда заполняется этот реквизит формы при создании(открытии) формы документа.
3 Царь-пушка
 
25.05.22
11:30
Ну для начала узнайте как в эти "реквизиты формы" данные попадают при открытие формы документа.
4 Ненавижу 1С
 
гуру
25.05.22
11:30
(0) без открытия формы реквизиты их форм

это не так
5 Царь-пушка
 
25.05.22
11:31
опоздал
6 bfss-732
 
25.05.22
14:22
(2)
Назовем реквизит формы - НужныйРеквизитФормы

В процедуре ПриЧтенииНаСервере(ТекущийОбъект)
    НужныйРеквизитФормы = ТекущийОбъект.Комментарий.Получить();   -  Получает данные из Комментарий(Тип которого ХранилищеЗначения)

Еще процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
    НужныйРеквизитФормы = Параметры.ЗначениеКопирования.Комментарий.Получить();

Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    ТекущийОбъект.ДополнительныеСвойства.Вставить("НужныйРеквизитФормы ",   НужныйРеквизитФормы );
    
КонецПроцедуры
7 Fish
 
25.05.22
14:24
(6) Значит, тебе нужно записать в объект реквизит Комментарий. Форма тебе не нужна
8 bfss-732
 
25.05.22
14:28
Тут какая та засада с ДополнительнымиСвойствами (((
9 bfss-732
 
25.05.22
14:31
(7) Записываю

ТекстHTML = "";
        ТекстHTML = "<!DOCTYPE html>
        |<html dir=""ltr"">
        |<head>
        |<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />
        |<meta http-equiv=""X-UA-Compatible"" content=""IE=Edge"" />
        |<meta name=""format-detection"" content=""telephone=no"" />
        |<style type=""text/css"">
        |body{margin:0;padding:8px;}
        |p{line-height:1.15;margin:0;white-space:pre-wrap;}
        |ol,ul{margin-top:0;margin-bottom:0;}
        |img{border:none;}
        |li>p{display:inline;}
        |</style>
        |</head>
        |<body>
        |<p><span> "+СтрокаМассива.НазваниеЗадачи+" </span></p>
        |</body>
        |</html>";

    
Вложения = Новый Структура;  

новРабочийОтчет.Комментарий = XMLЗначение(Тип("ХранилищеЗначения"),ТекстHTML);

Ошибки не выдает, но не записывает. В отладчике типы значений равны.
10 Fish
 
25.05.22
14:32
(8) Какая именно? Я не вижу никакой засады. Дополнительные свойства - это свойства объекта.
11 Fish
 
25.05.22
14:35
(9) Посмотри в модуле объекта, как происходит запись твоего "НужныйРеквизитФормы" из дополнительных свойств
12 bfss-732
 
25.05.22
14:40
(11) Ща сравнил в консоле запроса абсолютно все реквизиты документа который руками ввел и который обработкрой, все значения вывелись.
Засада наверное в ХранилищеЗначения, это тип реквизита "Комментарий". При открытии процедурой ПриЧтенииНаСервере(ТекущийОбъект)  НужныйРеквизитФормы = ТекущийОбъект.Комментарий.Получить(); считывается из ХранилищаЗначений. Получается, я новРабочийОтчет.Комментарий = XMLЗначение(Тип("ХранилищеЗначения"),ТекстHTML); не могу записать туда значение.

Остается вопрос как в реквизит "Комментарий" с типом ХранилищеЗначения записать значение с типом Строка.
13 bfss-732
 
25.05.22
14:43
Получается есть три реквизита:
1) НужныйРеквизитФормы  с типом ФорматированныйДокумент
2) Комментарий          с типом ХранилищеЗначения
3) ТекстКомментария     с Типом Строка

Все они задействованы ))))
Не знаю кто что принимал писав такое, если используется в программе только строка без форматирования))).
14 Fish
 
25.05.22
14:52
(12) "как в реквизит "Комментарий" с типом ХранилищеЗначения записать значение с типом Строка." - Так, как описано в СП:
Объект.Комментарий = Новый ХранилищеЗначения(ТвояСтрока)
15 bfss-732
 
25.05.22
15:04
Отладчик выдает такую шнягу
Свойство                                                                                Тип     Значение                  
новРабочийОтчет.Комментарий =  Новый ХранилищеЗначения(СтрокаМассива.НазваниеЗадачи)    Ложь    Булево

Хотя и справа  от = и слева тип одинаковый - ХранилищеЗначения
16 bfss-732
 
25.05.22
15:05
(14) не прокатило
Наверное надо считать ТекущийОбъект.Комментарий.Получить(); и записать в НужныйРеквизитФормы, возвращаемся к вопросу, как в обработке получить реквизит формы(((
17 Fish
 
25.05.22
15:07
(16) Нет. Но для начала неплохо считать комментарий, чтобы посмотреть, а что же туда в итоге записано.
18 bfss-732
 
25.05.22
15:26
Всем спасибо! Решилось так...

         новРабочийОтчет.ДополнительныеСвойства.Вставить("НужныйРеквизитФормы",   СтрокаМассива.НазваниеЗадачи);