Базовый курс. Домашнее задание №1
Первое задание по 0-му блоку базового курса.
Для выполнения рекомендуется изучить следующие главы 0-го блока.
Глава 1. Развитие линейки «1С:Предприятие 8»
Глава 2. Базовые понятия
Глава 3. Установка платформы и конфигураций
Глава 4. Общие сведения о платформе
Глава 5. Список информационных баз
Глава 6. Пользовательский режим
Глава 7. Базовые приемы работы в конфигураторе
Глава 8. Средства разработчика
Глава 9. Объекты
Глава 10. База данных
Глава 11. Программный код
Глава 12. Примитивные типы данных
Добрый день, реализовл задание с отдельной функцией XOR. Понравилось решение преподавателя, красивое!
Привожу свой код:
<code>
&НаКлиенте
Функция XOR( Л1, Л2 )
Возврат ( Л1 И НЕ Л2 ) ИЛИ ( НЕ Л1 И Л2 ) ;
КонецФункции // XOR()
&НаКлиенте
Функция РазрешенаПродажа( ВидКлиента, СортТовара )
Возврат XOR( ВидКлиента = “VIP”, СортТовара <> “Высший” ) ;
КонецФункции // РазрешенаПродажа()
&НаКлиенте
Процедура ОбработкаЗаданияN1(Команда)
//Сообщить( РазрешенаПродажа( “Постоянный”, “Высший” ) ) ;
//Сообщить( РазрешенаПродажа( “Непостоянный”, “Брак” ) ) ;
//Сообщить( РазрешенаПродажа( “VIP”, “Брак” ) ) ;
//Сообщить( РазрешенаПродажа( “VIP”, “Высший” ) ) ;
КонецПроцедуры
</code>
красивое решение. есть куда стремиться. спасибо)
Догоняю. Точно самый последний. Прошел весь нулевой курс две недели назад, но что то затянули заботы и задание решил только сейчас. Функцию РазрешенаПродажа реализовал в виде:
<code>
&НаСервере
Функция РазрешенаПродажа(ВидКлиента, СортТовара)
Возврат (ВидКлиента = “VIP” И СортТовара = “Высший”) Или (ВидКлиента <> “VIP” И СортТовара <> “Высший”);
КонецФункции
</code>
ну нет, не самый последний) решение как у предыдущего оратора. теперь посмотрим вариант мэтров)
Нагоняйте :)
Догоняю. Наверное, самая последняя. Решала “в лоб”, почти как авторский первый вариант. Понравилось второе решение, очень изящное :).
Догоняйте :)
Догоняю догоняющих. Выполнила. Авторское решение удивило) И ведь работает!
Догоняю.
При решении сделал вид, будто не знаю, что XOR это тоже самое, что не равно, так же сделал вид, что не знаю, что в 1с есть “не равно”. Сделал всё через операторы И и ИЛИ.
Функция Ксор(П1, П2)
Возврат НЕ П1 И П2 ИЛИ П1 И НЕ П2;
КонецФункции
А Возврат товара сделал через Ксор
Функция РазрешенаПродажа(ВидКлиента, СортТовара)
Возврат Ксор(ВидКлиента = “VIP”, НЕ (СортТовара = “Высший”));
КонецФункции // РазрешенаПродажа()
Хотя на мой взгляд это всё выпендрёж и в таких случаях надо писать через “Если”. Учитывая, что код в 1с на русском языке, в этом случае программный код не отличим от псевдокода и сопровождающий лучше поймёт, о чём идёт речь.
Задание выполнено двумя способами:
1. С использованием конструкции Если Иначе.
2.С использованием операторов сравнения
Функция
Возврат (ВидКлиента=”VIP” и СортТовара=”Высший”)ИЛИ (НЕ ВидКлиента=”VIP” и НЕ СортТовара=”Высший”)
Да, к сожалению пошёл по стериотипу через Если :-(
Немного подзадержался с выполнением домашних заданий, но попробую догнать.
По первому заданию проблем не было. Решение для алгоритма XOR в процедуре ПриСозданииНаСервере() получилось совсем коротким:
Возврат (ВидКлиента = “VIP”) = (СортТовара = “Высший”);
В общем виде:
Функция XOR(Пар1, Пар2)
Возврат Не Пар1 = Пар2;
КонецФункции;
Задание выполнил с 4 условиями
Задание выполнил. Из функции РазрешенаПродажа () вызывается функция-аналог XOR : ИсключающееИЛИ()
Функция ИсключающееИЛИ(ВидКлиента, СортТовара)
X = ?(ВидКлиента = “VIP”, Истина, Ложь);
Y = ?(СортТовара = “Высший”, Истина, Ложь);
Возврат (X И НЕ Y) ИЛИ (НЕ X И Y);
КонецФункции // ИсключающееИЛИ()
Функция РазрешенаПродажа(ВидКлиента, СортТовара)
Возврат НЕ ИсключающееИЛИ(ВидКлиента, СортТовара);
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Сообщить(РазрешенаПродажа(“Постоянный”, “Высший”));
Сообщить(РазрешенаПродажа(“Непостоянный”, “Брак”));
Сообщить(РазрешенаПродажа(“VIP”, “Брак”));
Сообщить(РазрешенаПродажа(“VIP”, “Высший”));
КонецПроцедуры
Задание выполнил.
Выполнила, зачем-то отдельно запрограммировав свою функцию XOR – не сразу поняла, что РазрешитьПродажи() просто должна работать по тем же правилам.
Догоняю. Хорошее задание.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Сообщить(РазрешенаПродажа(“Постоянный”, “Высший”));
Сообщить(РазрешенаПродажа(“Непостоянный”, “Брак”));
Сообщить(РазрешенаПродажа(“VIP”, “Брак”));
Сообщить(РазрешенаПродажа(“VIP”, “Высший”));
// Вставить содержимое обработчика.
КонецПроцедуры
&НаСервере
Функция РазрешенаПРодажа(Клиент,СортТовара)
Если Клиент<>”VIP” или СортТовара<>”Высший” тогда
Возврат Ложь;
иначе
возврат Истина;
конецЕсли;
конецФункции
Тоже догоняю, ДЗ решил, как то вот так получилось, может я чего то не понял, но вроде как XOR непричем у меня получился, вот решение:
Возврат ВидКлиента = “VIP” и СортТовара = “Высший” или ВидКлиента <> “VIP” и СортТовара <> “Высший”;
Выполнил стандартно. В модуле две функции.