Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Vlad69ik
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 52
1

Автозаполнение шаблона

06.06.2017, 15:13. Просмотров 351. Ответов 8
Метки нет (Все метки)

Проблема такова есть шаблоны сообщений должны заполнятся автоматически при выборе клиента, но заполняются только Имя и Фамилия. В чем может быть проблема?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Дерево = РеквизитФормыВЗначение("ОбъектДеревоРеквизитов");
    
    РодительСтрок = ДобавитьСтрокуВДеревоЗначений(Дерево, "Клиент", Ложь);
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Фамилия");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Имя");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Отчество");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "ФИО");
    РодительСтрок = ДобавитьСтрокуВДеревоЗначений(Дерево, "Предварительная запись", Ложь);
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "День");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Время");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "День и время");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Сотрудник");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Услуга");
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Структурная единица");
    РодительСтрок = ДобавитьСтрокуВДеревоЗначений(Дерево, "Полис мед. страхования", Ложь);
    ДобавитьСтрокуВДеревоЗначений(РодительСтрок, "Дата окончания срока действия полиса");   
            
    ЗначениеВРеквизитФормы(Дерево, "ОбъектДеревоРеквизитов");   
    
КонецПроцедуры
 
&НаКлиентеНаСервереБезКонтекста
Функция ДобавитьСтрокуВДеревоЗначений(РодительСтроки, ПредставлениеПоля, РазрешитьВыбор = Истина)
    
    НоваяСтрока = РодительСтроки.Строки.Добавить();
    НоваяСтрока.Представление = ПредставлениеПоля;
    НоваяСтрока.РазрешитьВыбор = РазрешитьВыбор;
    
    Возврат НоваяСтрока;
    
КонецФункции
 
&НаКлиенте
Процедура ДеревоРеквизитовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ДеревоРеквизитовВыборЗначения(Элемент, Неопределено, СтандартнаяОбработка);
    
КонецПроцедуры
 
&НаКлиенте
Процедура ДеревоРеквизитовВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    Если Элемент.ТекущиеДанные = Неопределено ИЛИ Элемент.ТекущиеДанные.РазрешитьВыбор = Ложь Тогда
        Возврат;
    КонецЕсли;
    
    Объект.Содержание = Объект.Содержание + ?(ЗначениеЗаполнено(Объект.Содержание), " ", "") + "{" + Элемент.ТекущиеДанные.Представление + "}" + ?(ЗначениеЗаполнено(Объект.Содержание), " ", "");
    
КонецПроцедуры
Пример шаблона : Уважаемая(ый) {Имя} {Фамилия} , напоминаем вам, что вы записаны {День} в {Время} к врачу{Сотрудник}
0
Изображения
 
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2017, 15:13
Ответы с готовыми решениями:

Автозаполнение
Доброго всем времени суток. Подскажите вот пытаюсь по немногу познать 1С8.2., Есть форма...

Автозаполнение данными
Приветствую. Имеется справочник Для справочника созданы форма элемента и форма группы. Обе формы...

Автозаполнение формы
Добрый вечер! Пытаюсь познать 1С и возникла проблема. Обычное приложение, 8.2. Суть такова:...

Автозаполнение ТЧ 1С Конфигурация 8.2
Здравствуйте :) Подскажите пожалуйста,как привести 1 и 2 рисунок 3ему. Как на форме, в табличной...

Автозаполнение полей ввода
1с 8.2 Подскажите как поступить. Есть Форма с полями ФИО и Адресс. Эти данные хранятся в...

8
Vlad69ik
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 52
06.06.2017, 15:55  [ТС] 2
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Процедура заполнения предопределенных шаблонов СМС
//
Процедура ЗаполнитьПредопределенныеШаблоныSMS(УстановитьОсновным = Истина) Экспорт
    
    ЭлементОбъект = Справочники.ШаблоныСообщений.НапоминаниеПредварительнойЗаписи.ПолучитьОбъект();
    Если ЭлементОбъект.Содержание = "" Тогда
        ЭлементОбъект.Содержание = "Уважаемая(ый) {Имя} {Отчество}, напоминаем вам, что вы записаны {День} в {Время} к врачу {Сотрудник}";
        ЭлементОбъект.Записать();
        Если УстановитьОсновным Тогда
            Константы.ИнформироватьОЗаписиШаблонСообщения.Установить(ЭлементОбъект.Ссылка);
        КонецЕсли;
    КонецЕсли;
    
    ЭлементОбъект = Справочники.ШаблоныСообщений.НапоминаниеОкончанияСтраховогоПолиса.ПолучитьОбъект();
    Если ЭлементОбъект.Содержание = "" Тогда
        ЭлементОбъект.Содержание = "Уважаемая(ый) {Имя} {Отчество}, напоминаем вам, что {Дата окончания срока действия полиса} у вас заканчивается срок действия полиса.";
        ЭлементОбъект.Записать();
        Если УстановитьОсновным Тогда
            Константы.ИнформироватьОбОкончанииСтраховогоПолисаШаблон.Установить(ЭлементОбъект.Ссылка);
        КонецЕсли;
    КонецЕсли;
    
    ЭлементОбъект = Справочники.ШаблоныСообщений.ИнформированиеОПодтвержденииОнЛайнЗаписи.ПолучитьОбъект();
    Если ЭлементОбъект.Содержание = "" Тогда
        ЭлементОбъект.Содержание = "Вы записаны на {День} в {Время} к стоматологу {Сотрудник}";
        ЭлементОбъект.Записать();       
        Если УстановитьОсновным Тогда
            Константы.ИнформированиеКлиентаПодтверждениеОнЛайнЗаписиШаблон.Установить(ЭлементОбъект.Ссылка);
        КонецЕсли;          
    КонецЕсли;
    
КонецПроцедуры
Забыл закинуть.
0
Dethmontt
Модератор
Эксперт 1С
2686 / 2466 / 429
Регистрация: 10.03.2011
Сообщений: 8,850
Записей в блоге: 1
Завершенные тесты: 1
06.06.2017, 17:02 3
Vlad69ik, А где сама обработка шаблона то?
0
Vlad69ik
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 52
06.06.2017, 17:28  [ТС] 4
Цитата Сообщение от Dethmontt Посмотреть сообщение
Vlad69ik, А где сама обработка шаблона то?
Чет не могу найти. Есть предположения где может быть ? 1С: 8.3 Стоматология

Эти данные лежат в Форме и МодулеМенеджера
0
06.06.2017, 17:28
Dethmontt
Модератор
Эксперт 1С
2686 / 2466 / 429
Регистрация: 10.03.2011
Сообщений: 8,850
Записей в блоге: 1
Завершенные тесты: 1
06.06.2017, 17:53 5
Vlad69ik, поиск по конфигуратору

"Невозможно получить параметр"

Добавлено через 23 секунды
Цитата Сообщение от Vlad69ik Посмотреть сообщение
1С: 8.3 Стоматология
Я такой вообще в глаза не видел)))
0
Vlad69ik
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 52
06.06.2017, 17:59  [ТС] 6
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Функция ПреобразоватьСодержаниеСПараметрамиВТекст(Знач Содержание, Документ, ПолучательSMS) Экспорт
    
    // Получаем значение параметров
    МассивПараметров = ПолучитьМассивПараметровИзШаблона(Содержание, "{}");
    Для Каждого Параметр Из МассивПараметров Цикл
        Результат = Неопределено;
        Попытка
            Выполнить("Результат = " + ВернутьПутьКРеквизитуПоПредставлении(Параметр));
        Исключение
            Сообщить("Невозможно получить параметр (" + Параметр + ")" );
            Ошибка = Истина;
        КонецПопытки;
        Если Результат <> Неопределено Тогда
            Содержание = СтрЗаменить(Содержание, "{" + Параметр + "}", Результат);
        КонецЕсли;
    КонецЦикла;
    
    Возврат Содержание;
    
КонецФункции
 
Функция ПолучитьМассивПараметровИзШаблона(ФормулаШаблона, ЗнакиВыделения = "{}")
    
    МассивПараметров = Новый Массив;
    
    НачалоПараметра = 0;
    КонецПараметра = 0; 
    Для а = 1 По СтрДлина(ФормулаШаблона) Цикл
        Если Сред(ФормулаШаблона, а, 1) = Сред(ЗнакиВыделения, 1, 1) Тогда
            НачалоПараметра = а + 1;
        ИначеЕсли Сред(ФормулаШаблона, а, 1) = Сред(ЗнакиВыделения, 2, 1) Тогда
            КонецПараметра = а - 1;         
        КонецЕсли;
        Если НачалоПараметра <> 0 И КонецПараметра <> 0 И (КонецПараметра - НачалоПараметра + 1) > 0 Тогда
            МассивПараметров.Добавить(Сред(ФормулаШаблона, НачалоПараметра, КонецПараметра - НачалоПараметра + 1));
            НачалоПараметра = 0;
            КонецПараметра = 0; 
        КонецЕсли;
    КонецЦикла;
    
    Возврат МассивПараметров;
    
КонецФункции
 
Функция ВернутьПутьКРеквизитуПоПредставлении(Наименование)
    
    СписокПараметров = Новый СписокЗначений;
    СписокПараметров.Добавить("Фамилия", "ПолучательSMS.Фамилия");
    СписокПараметров.Добавить("Имя", "ПолучательSMS.Имя");
    СписокПараметров.Добавить("Отчество", "ПолучательSMS.Отчество");
    СписокПараметров.Добавить("ФИО", "ПолучательSMS.Наименование");
    СписокПараметров.Добавить("День", "Формат(Документ.ДокументОснование.Услуги[0].ДатаНачала, ""ДФ='dd MMMM'"")");
    СписокПараметров.Добавить("Время", "Формат(Документ.ДокументОснование.Услуги[0].ДатаНачала, ""ДФ=HH:mm"")");
    СписокПараметров.Добавить("День и время", "Формат(Документ.ДокументОснование.Услуги[0].ДатаНачала, ""ДФ='dd MMMM HH:mm'"")");
    СписокПараметров.Добавить("Сотрудник", "Документ.ДокументОснование.Услуги[0].Сотрудник");
    СписокПараметров.Добавить("Услуга", "Документ.ДокументОснование.Услуги[0].Номенклатура");
    СписокПараметров.Добавить("Структурная единица", "Документ.ДокументОснование.СтруктурнаяЕдиница");
    СписокПараметров.Добавить("Дата окончания срока действия полиса", "Формат(Документ.ДокументОснование.ДатаОкончания, ""ДФ='dd MMMM yyyy'"")");
            
    Результат = СписокПараметров.НайтиПоЗначению(Наименование);
    
    Если Результат <> Неопределено Тогда
        Возврат Результат.Представление;
    Иначе
        Возврат Наименование;
    КонецЕсли;
    
КонецФункции
Кажется ошибка в том что Документ.ДокументОснование не существует.
0
Dethmontt
Модератор
Эксперт 1С
2686 / 2466 / 429
Регистрация: 10.03.2011
Сообщений: 8,850
Записей в блоге: 1
Завершенные тесты: 1
06.06.2017, 18:03 7
Цитата Сообщение от Vlad69ik Посмотреть сообщение
Кажется ошибка в том что Документ.ДокументОснование не существует.
Ну видишь как все просто...
0
Vlad69ik
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 52
07.06.2017, 10:30  [ТС] 8
Цитата Сообщение от Vlad69ik Посмотреть сообщение
СписокПараметров.Добавить("День и время", "Формат(Документ.ДокументОснование.Услуги[0].ДатаНачала, ""ДФ='dd MMMM HH:mm'"")");
Почему реквизит ДокументОснование может не ссылаться на другой документ?
0
Dethmontt
Модератор
Эксперт 1С
2686 / 2466 / 429
Регистрация: 10.03.2011
Сообщений: 8,850
Записей в блоге: 1
Завершенные тесты: 1
07.06.2017, 10:56 9
Цитата Сообщение от Vlad69ik Посмотреть сообщение
Почему реквизит ДокументОснование может не ссылаться на другой документ?
Значит этот документ создан НЕ на основании другого документа

Добавлено через 2 минуты
Vlad69ik, посмотри тип значения реквизита ДокументОснование и из этого документа можно создать твой документ на Основании
0
07.06.2017, 10:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2017, 10:56

1C - автозаполнение через запрос
Всем привет, подскажите что не так? Процедура ДоговорыНомерСчетаПриИзменении(Элемент) Запрос=...

Автозаполнение параметров в СКД
Реально ли вообще настроить автозаполнение параметров в СКД для платформы 8.2? Суть такова, у...

Булево и Автозаполнение строк
Подскажите в чем проблема, данная процедура взята из Бухгалтерии, но выдает ошибку:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru