Имя: Пароль:
1C
1С v8
Подставить свой текст в шаблон при определенном значении ДопРеквизита (Документооборот)
0 ГлызинаЮИ
 
12.01.21
05:19
Уважаемые, помогите девушке, пожалуйста. Я ни разу не программист, то что вы сейчас увидите, это отрывки из разных форумов, естественно это не работает

РезультатОбработки = "";
Полномочие = ВладелецФайла.Ссылка.ДопРеквизиты.НайтиПоНаименованию("Полномочия, права")
Если
Полномочие = "Лизинг"
Тогда РезультатОбработки = "длинющий текст";
КонецЕсли;


Короче, есть доп.реквизит у внутреннего документа - "Полномочия, права". В таком доп.реквизите есть одно из значений - "Лизинг"
Мне нужно в шаблон вордовский вместо слова лизинг подставить некий текст, для удобства я его пока обозначила как "длинющий текст"
1 Filin
 
12.01.21
08:25
Как-то так -

ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Полномочия, права");
ЗначениеДопРеквизита = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Лизинг",,ДопРеквизит);

Если ЗначениеЗаполнено(ДопРеквизит) Тогда
    СтрокаДопРеквизита = ВладелецФайла.Ссылка.ДополнительныеРеквизиты.Найти(ДопРеквизит);
    Если НЕ СтрокаДопРеквизита = Неопределено Тогда
        Если СтрокаДопРеквизита.Значение = ЗначениеДопРеквизита Тогда
            РезультатОбработки = "длинющий текст";
        КонецЕсли;  
    КонецЕсли;
КонецЕсли;
2 ГлызинаЮИ
 
12.01.21
09:00
(1) к сожалению, не работает. При проверке заполнения (доп.реквизит указан как раз как лизинг), выдает не содержательную ошибку что скрип настроен некорректно.

ps в начале вашего кода я добавила РезультатОбработки = "";
и еще меня смутила вторая запятая в ЗначениеДОпРеквизита, но что с двумя, что с одной заполнения не происходит
3 Filin
 
12.01.21
09:23
Тогда нужно все-таки звать программиста.
4 Йохохо
 
12.01.21
09:28
"Мне нужно в шаблон вордовский вместо слова лизинг подставить некий текст" Вам нужно как то акцентировать на этом внимание. что эта конструкция выполняется через Выполнить() в работе с шаблонами договоров ДО, там не всё доступно
5 hhhh
 
12.01.21
09:51
(2) попробуйте

ЗначениеДопРеквизита = "Лизинг";
6 Масянька
 
12.01.21
09:54
(0) У Вас есть шаблоны внутренних документов?
7 ГлызинаЮИ
 
12.01.21
10:24
(6) Вы имеете в виду не подставлять текст, а использовать просто нужный шаблон? У нас порядка 10 видов полномочий, где тогда научить ДО что если выбран тип Лизинг, то заполнять вот этот шаблон, а не другой?
8 ГлызинаЮИ
 
12.01.21
10:25
(5) неа(
9 Масянька
 
12.01.21
10:56
(7) (8) У нас в ДО для каждого документа свой шаблон. Есть док-ты, у которых несколько шаблонов, но это другая история.
Заполнение шаблонов (у нас) происходит при сохранении док-та. А правила заполнения шаблонов прописаны именно в шаблонах (поля файлов = скрипты).
10 ГлызинаЮИ
 
12.01.21
11:02
(9) я вас поняла. Что мы имеем - это вид одного внутреннего документа - Доверенность. В зависимости от выбранных полномочий доверенного, которые описаны в доп.реквизите типа как "УПД/ Лизинг/ ГИДББ" необходимо подставлять простыню юридического текста в шаблон. Правило я и описываю (прошу помощи) в скриптах заполнения шаблона
11 Масянька
 
12.01.21
11:03
(10) Текст скрипта покажите.
12 ГлызинаЮИ
 
12.01.21
11:10
(11) 1 комментарий от Филина
13 Масянька
 
12.01.21
11:11
(12) Исходный. Текст.
14 ГлызинаЮИ
 
12.01.21
11:52
(1) Вот так поправили и работает

РезультатОбработки = "";
ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Полномочия, права");
ЗначениеДопРеквизита = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Лизинг",,,ДопРеквизит);

Если ЗначениеЗаполнено(ДопРеквизит) Тогда
    СтрокаДопРеквизита = Файл.ВладелецФайла.ДополнительныеРеквизиты.Найти(ДопРеквизит);
    Если НЕ СтрокаДопРеквизита = Неопределено Тогда
        Если СтрокаДопРеквизита.Значение = ЗначениеДопРеквизита Тогда
            РезультатОбработки = "длинющий текст";
     КонецЕсли;  
   КонецЕсли;
КонецЕсли;


Но я поняла что я не очень верно задачу озвучила, мне нужно в зависимости от того какое значение  заполнено в ДопРеквизите подставлять разные тексты
типа для лизинга - "длинющий текст"
а для УПД - "текст покороче"
15 Filin
 
12.01.21
12:01
Да, что-то я с запятыми накосячил. Там же владелец.
Вот вариант про все -

РезультатОбработки = "";
ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Полномочия, права");
ЗначениеДопРеквизитаЛизинг = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Лизинг",,,ДопРеквизит);
ЗначениеДопРеквизитаУПД = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("УПД",,,ДопРеквизит);
ЗначениеДопРеквизитаГИБДД = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ГИДББ",,,ДопРеквизит);

Если ЗначениеЗаполнено(ДопРеквизит) Тогда
    СтрокаДопРеквизита = Файл.ВладелецФайла.ДополнительныеРеквизиты.Найти(ДопРеквизит);
    Если НЕ СтрокаДопРеквизита = Неопределено Тогда
        Если СтрокаДопРеквизита.Значение = ЗначениеДопРеквизитаЛизинг Тогда
            РезультатОбработки = "длинющий текст про лизинг";
        ИначеЕсли  СтрокаДопРеквизита.Значение = ЗначениеДопРеквизитаУПД Тогда
            РезультатОбработки = "длинющий текст про УПД";
        ИначеЕсли  СтрокаДопРеквизита.Значение = ЗначениеДопРеквизитаГИБДД Тогда
            РезультатОбработки = "длинющий текст про ГИБДД";  
        Иначе
            РезультатОбработки = "длинющий текст про то что мы не знаем про что писать";
        КонецЕсли;  
    КонецЕсли;
КонецЕсли;
16 ГлызинаЮИ
 
13.01.21
03:30
(15) Боже, храни умных людей и вас, господин Филин) Все работает!
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший