Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 08:46

Подскажите с решение пары вопросов в программировании 1С

Автор Dlopoel, 02 июн 2013, 15:35

0 Пользователей и 1 гость просматривают эту тему.

Dlopoel

Вопрос 1:

Есть справочник "Клиент", в  этом справочнике есть поля "Имя", "Фамилия", "Отчество" и автоматически  создаваемое "Наименование". Нужно чтобы когда заносишь данные в первые 3  поля, в наименовании автоматически формировалось "ФИО".
Пример:
Имя: Иван
Фамилия: Иванов
Отчество: Андереев
Итого в Наименовании: Иванов И.А.



Вопрос 2:

Есть справочник "скидка", есть документ "продажа", сейчас я скидку каждому покупателю выбиваю сам, независимо не от чего, а надо, чтобы скидка автоматически вносилась в зависимости от суммы покупки, причем было 3 вычисляемых поля:

1: Сумма покупки

2: Процент скидки (причем если скидки нет, то поле было всегода = 0) (скидка будет 5% > 5000 руб. 10% > 10000 руб. 15% > 20000 руб.)

3: Сумма со скидкой

Заранее спасибо за помощь

Dethmontt

1.
Наименование = Фамилия+" "+Лев(Имя,1)+". "+Лев(Отчество,1)+".";
2.
Перем ПроцентСкидки;
Если Сумма < 5000 Тогда
   ПроцентСкидки = 0;
ИначеЕсли Сумма >= 5000 и Сумма < 10000 Тогда
   ПроцентСкидки = 5;
ИначеЕсли Сумма >= 10000 и Сумма < 20000 Тогда
   ПроцентСкидки = 10;
Иначе
   ПроцентСкидки = 15;
КонецЕсли;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dlopoel

Все получилось, спасибо большое!
А еще можно как-то в строке скидки, после числа поставить знак "%" Например: Скидка: 10 %
Попробовал так:
ПроцентСкидки = 0+"%";
Соответственно не получилось, тогда программа перестает считать итог

Dethmontt

Конечно, "%" это строка и по ней не получиться считать итог (И вообще что либо посчитать)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Это у вас в табличной части? Или реквизит на форме?
Обычные формы или Управляемые?
Добавлено: 02 июн 2013, 18:56


Примерно так у вас должно получиться
ПроцентСкидки = 15;
ПредставлениеСкидки = ""+ПроцентСкидки+"%";
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Besart

если форма управляемая то &НаКлиенте
Процедура ОтчествоПриИзменении(Элемент)
Объект.Составной = "";
Объект.Составной = Объект.Фамилия + "." +Лев(Объект.Имя,1) + Лев(Объект.Отчество,1);
КонецПроцедуры

&НаКлиенте
Процедура ИмяПриИзменении(Элемент)
Объект.Составной = "";
Объект.Составной = Объект.Фамилия + "." +Лев(Объект.Имя,1) + Лев(Объект.Отчество,1);
КонецПроцедуры

&НаКлиенте
Процедура ФамилияПриИзменении(Элемент)
Объект.Составной = "";
Объект.Составной = Объект.Фамилия + "." +Лев(Объект.Имя,1) + Лев(Объект.Отчество,1);
КонецПроцедуры



Codokopatel

Можно попробовать вариант полной автоматизации с контролем на заполненность поля "Фамилия"

// В данном примере код исполняется в режиме "Управляемое приложение" 1С8.2
// В обычном будет попроще (без вызова сервера), но алгоритм одинаков
// для обоих режимов

// 1-ый БЛОК
// В этом блоке Происходит автоматическое заполнение поля "Наименование"
// при внесении или изменении значения в соответствующем поле ФИО.
// Если поле "Фамилия" не заполнено, то нет смысла заполнять поле
//"Наименование", поэтому вызов процедуры автозаполнения
// поля "Наименование" происходит только при заполненном поле "Фамилия"
&НаКлиенте
Процедура ИмяПриИзменении(Элемент)
Если СокрЛП(Объект.Фамилия) <> "" Тогда
ЗаполнениеНаименования();
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ФамилияПриИзменении(Элемент)
Если СокрЛП(Объект.Фамилия) <> "" Тогда
ЗаполнениеНаименования();
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтчествоПриИзменении(Элемент)
Если СокрЛП(Объект.Фамилия) <> "" Тогда
ЗаполнениеНаименования();
КонецЕсли;
КонецПроцедуры

// 2-ой БЛОК
// Так как данная процедура запускается только при условии заполнения поля
// "Фамилия", то осталось заполнить поле "Наименование" с учетом значений
// в полях "Имя " и "Отчество"
// Может быть четыре варианта заполнения:
// 1-ый - заполнено только поле "Фамилия", соответственно в поле "Наименование"
// будет внесено только значение поля "Фамилия"
// 2-ой - кроме поля "Фамилия" заполнено поле "Имя"
// соответственно в поле "Наименование" будут внесены только значения поля "Фамилия"
// и поля "Имя"
// 3-ий - кроме поля "Фамилия" заполнено поле "Отчество"
// соответственно в поле "Наименование" будут внесены только значения поля "Фамилия"
// и поля "Отчество"
// 3-ий - заполнены все три поля
// соответственно в поле "Наименование" будут внесены значения всех трех полей
&НаСервере
Процедура ЗаполнениеНаименования()
// СокращенноеИмя и СокращенноеОтчество это переменные
СокращенноеИмя = Лев(СокрЛП(Объект.Имя),1);
СокращенноеОтчество = Лев(СокрЛП(Объект.Отчество),1);

// подготовка значения поля "Имя" для записи в поле "Наименование"
Если СокращенноеИмя <> "" Тогда
СокращенноеИмя = СокращенноеИмя + ". " ;
Иначе
СокращенноеИмя = "";
КонецЕсли;

// подготовка значения поля "Отчество" для записи в поле "Наименование"
Если СокращенноеОтчество <> "" Тогда
СокращенноеОтчество = СокращенноеОтчество + "." ;
Иначе
СокращенноеОтчество = "" ;
КонецЕсли;

Объект.Наименование = СокрЛП(Объект.Фамилия) +" "+ СокращенноеИмя +" "+ СокращенноеОтчество;

КонецПроцедуры // ЗаполнениеНаименования()

Dlopoel

Цитата: Dethmontt от 02 июн 2013, 18:54
Это у вас в табличной части? Или реквизит на форме?
Обычные формы или Управляемые?
Добавлено: 02 июн 2013, 18:56


Примерно так у вас должно получиться
ПроцентСкидки = 15;
ПредставлениеСкидки = ""+ПроцентСкидки+"%";


Это реквизит на форме, форма я так понимаю обычная.
Так у меня не получилось, форма не выдала ошибок, но и знак "%" не поставила

Dethmontt

Покажите скрин вашей формы в "Пофигураторе"
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Codokopatel

Если у Вас реквизит ПредставлениеСкидки имеет тип СТРОКА, то проблем с вышеприведенным кодом от Dethmontt быть не должно.

Теги:  8.1 помощь 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск