Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 53
1

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

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

Author24 — интернет-сервис помощи студентам
Проблема такова есть шаблоны сообщений должны заполнятся автоматически при выборе клиента, но заполняются только Имя и Фамилия. В чем может быть проблема?
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 15:13
Ответы с готовыми решениями:

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

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

Автозаполнение реквизитов
Есть общая форма "Регистрация". При регистрации создаётся пользователь в информационной базе и ещё...

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

8
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 53
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
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
06.06.2017, 17:02 3
Vlad69ik, А где сама обработка шаблона то?
0
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 53
06.06.2017, 17:28  [ТС] 4
Цитата Сообщение от Dethmontt Посмотреть сообщение
Vlad69ik, А где сама обработка шаблона то?
Чет не могу найти. Есть предположения где может быть ? 1С: 8.3 Стоматология

Эти данные лежат в Форме и МодулеМенеджера
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
06.06.2017, 17:53 5
Vlad69ik, поиск по конфигуратору

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

Добавлено через 23 секунды
Цитата Сообщение от Vlad69ik Посмотреть сообщение
1С: 8.3 Стоматология
Я такой вообще в глаза не видел)))
0
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 53
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
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
06.06.2017, 18:03 7
Цитата Сообщение от Vlad69ik Посмотреть сообщение
Кажется ошибка в том что Документ.ДокументОснование не существует.
Ну видишь как все просто...
0
1 / 1 / 2
Регистрация: 15.09.2013
Сообщений: 53
07.06.2017, 10:30  [ТС] 8
Цитата Сообщение от Vlad69ik Посмотреть сообщение
СписокПараметров.Добавить("День и время", "Формат(Документ.ДокументОснование.Услуги[0].ДатаНачала, ""ДФ='dd MMMM HH:mm'"")");
Почему реквизит ДокументОснование может не ссылаться на другой документ?
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,670
Записей в блоге: 1
07.06.2017, 10:56 9
Цитата Сообщение от Vlad69ik Посмотреть сообщение
Почему реквизит ДокументОснование может не ссылаться на другой документ?
Значит этот документ создан НЕ на основании другого документа

Добавлено через 2 минуты
Vlad69ik, посмотри тип значения реквизита ДокументОснование и из этого документа можно создать твой документ на Основании
0
07.06.2017, 10:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2017, 10:56
Помогаю со студенческими работами здесь

Автозаполнение табличной части
Автозаполнение табличной части ПроизводствоГотовойПродукции Как сделать автозаполнение материалов...

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

Автозаполнение поле надписи
Есть справочник, с реквизитами ФИО, Фамилия,Имя,Отчество как сделать чтоб при заполнениие фамилии...

Автозаполнение табличной части
Создайте справочник &quot;Основные средства&quot;, в который пользователь может вносить все оборудование,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru