Базовый курс. Домашнее задание №1

Первое задание по 0-му блоку базового курса.

Для выполнения рекомендуется изучить следующие главы 0-го блока.
Глава 1. Развитие линейки «1С:Предприятие 8»
Глава 2. Базовые понятия
Глава 3. Установка платформы и конфигураций
Глава 4. Общие сведения о платформе
Глава 5. Список информационных баз
Глава 6. Пользовательский режим
Глава 7. Базовые приемы работы в конфигураторе
Глава 8. Средства разработчика
Глава 9. Объекты
Глава 10. База данных
Глава 11. Программный код
Глава 12. Примитивные типы данных

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.

комментариев 146 на “Базовый курс. Домашнее задание №1”

  1. Был большой загруз на работе. Буду стараться нагнать. Сделал два варианта первый по простому.
    &НаСервере
    Функция РазрешенаПродажа(ВидКлиента, ВидТовара)
     Если (ВидКлиента = “VIP”) Тогда
      Если (ВидТовара = “Высший”) Тогда
       Возврат Истина;
      Иначе
       Возврат Ложь;
      КонецЕсли;
     Иначе
      Если (ВидТовара = “Высший”) Тогда
       Возврат Ложь;
      Иначе
       Возврат Истина;
      КонецЕсли;
     КонецЕсли;
    КонецФункции // РазрешенаПродажа()
    &НаСервере
    Функция РазрешенаПродажаКоротко(ВидКлиента, ВидТовара)
     пВидКлиента = ?(ВидКлиента = “VIP”, Истина, Ложь);
     пВидТовара = ?(ВидТовара = “Высший”, Истина, Ложь);
     
     Возврат НЕ (пВидКлиента ИЛИ пВидТовара) ИЛИ (пВидКлиента И пВидТовара);
     
    КонецФункции // РазрешенаПродажа()

    &НаКлиенте
    Процедура Проверить(Команда)
     // Вставить содержимое обработчика.
     Сообщить(“VIP – Высший ” + РазрешенаПродажа(“VIP”, “Высший”)); 
     Сообщить(“Постоянный – Высший ” + РазрешенаПродажа(“Постоянный”, “Высший”));
     Сообщить(“Непостоянный – Брак ” + РазрешенаПродажа(“Непостоянный”, “Брак”));
     Сообщить(“VIP – Брак ” + РазрешенаПродажа(“VIP”, “Брак”));
     Сообщить(“Старый знакомый – Первый сорт ” + РазрешенаПродажа(“Старый знакомый”, “Первый сорт”));
     
     Сообщить(“————————————–“);
     
     Сообщить(“VIP – Высший ” + РазрешенаПродажаКоротко(“VIP”, “Высший”)); 
     Сообщить(“Постоянный – Высший ” + РазрешенаПродажаКоротко(“Постоянный”, “Высший”));
     Сообщить(“Непостоянный – Брак ” + РазрешенаПродажаКоротко(“Непостоянный”, “Брак”));
     Сообщить(“VIP – Брак ” + РазрешенаПродажаКоротко(“VIP”, “Брак”));
     Сообщить(“Старый знакомый – Первый сорт ” + РазрешенаПродажаКоротко(“Старый знакомый”, “Первый сорт”));
     
    КонецПроцедуры

    Вот такие результаты выполнения.

    • Забыл добавить результат выполнения

      VIP – Высший Да
      Постоянный – Высший Нет
      Непостоянный – Брак Да
      VIP – Брак Нет
      Старый знакомый – Первый сорт Да
      ————————————–
      VIP – Высший Да
      Постоянный – Высший Нет
      Непостоянный – Брак Да
      VIP – Брак Нет
      Старый знакомый – Первый сорт Да

  2. Dmitrij_Brohoveckij 26.02.2011 в 01:27

    Был большой загруз и на выполнение заданий времени не было. Теперь надеюсь нагнать.
     
    Функция:
     
    Функция РазрешенаПродажа1(ВидКлиента,СортТовара)
    Разрешение = Ложь;
    Если ВидКлиента = “VIP” Тогда
    Если СортТовара = “Высший” Тогда
    Разрешение = Истина;
    КонеЦесли;
    ИначеЕсли СортТовара <> “Высший” Тогда
    Разрешение = Истина;
    КонецЕсли;
     
    Возврат Разрешение;
    КонецФункции
     
    Логика :
    «VIP», «Высший»-«Истина».
    Все остальное-«Ложь».
     
    Если первый парметр – «Истина»  Тогда
    Если второй параметр «Истина» Тогда  результат – «Истина»
    Если первый параметр – «Ложь»  Тогда
    Если второй параметр «Ложь» Тогда  результат – «Истина»
     
    Во всех других случаях результат – «Ложь»

  3. Vitaly Valko 02.02.2011 в 10:27

    Сначала написал не оптимально с кучей условий и исключений. А когда увидел насколько любопытно оперировать булевой логикой, то решил задачу сначала теоретически на особеностях И, ИЛИ, НЕ и (), а потом практчески. Вышло так:
    “И” дает комбинацию “И,Л,Л,Л”
    ИЛИ  дает  “И,И,И,Л”
    НЕ (ИЛИ)    “Л,Л,Л,И”
    а (И)  ИЛИ  НЕ (ИЛИ)   дает   искомую   “И,Л,Л,И”
    Вот и вышла Функция РазрешенаПродажа(ВидКлиента,СортТовара)
    Усл1 = ВидКлиента = “VIP”;
    Усл2 = СортТовара = “Высший”;
    Возврат (Усл1 и Усл2) ИЛИ НЕ(Усл1 или Усл2);
    КонецФункции
    Функция РазрешенаПродажа(ВидКлиента,СортТовара)
    Усл1 = ВидКлиента = “VIP”
    Усл2 = СортТовара = “Высший”;
    Возврат (Усл1 и Усл2) ИЛИ НЕ(Усл1 или Усл2);
    КонецФункции

  4. Запоздал с выполнением заданий, начинаю догонять (естественно, не глядя на решение от преподавателей до выполнения задания)…
    Платформу поставил, базу создал, создал в ней обработку:
    (на форме просто кнопка)
    &НаКлиенте
    Процедура ПроверитьПродажу(Команда)
    Сообщить(РазрешенаПродажа(“Постоянный”, “Высший”));
    Сообщить(РазрешенаПродажа(“Непостоянный”, “Брак”));
    Сообщить(РазрешенаПродажа(“VIP”, “Брак”));
    Сообщить(РазрешенаПродажа(“VIP”, “Высший”));
    КонецПроцедуры

    &НаКлиенте
    Функция ИсключающееИЛИ(Значен1, Значен2)
    Возврат (Значен1 и НЕ Значен2) или (НЕ Значен1 и Значен2);
    КонецФункции

    &НаКлиенте
    Функция РазрешенаПродажа(ТипКлиента, ТипТовара)

    Возврат ИсключающееИЛИ(ТипКлиента <> “VIP” , ТипТовара = “Высший”);

    КонецФункции // РазрешенаПродажа()

  5. Всем доброго времени суток!
    На работе загруз, поэтому запоздал с началом занятий.
    Пока не глядя в авторский ответ даю свой вариант решения:
    Функция РазрешенаПродажа(Знач ВидКлиента, Знач СортТовара)

    Возврат (ВидКлиента = “VIP” И СортТовара = “Высший”) Или (ВидКлиента <> “VIP” И СортТовара <> “Высший”);

    КонецФункции // РазрешенаПродажа()

  6. Наверное поздно и не очень оптимально, на всё же:
    Возврат ((ВидКлиента=»VIP») И (СортТовара=»Высший»)) ИЛИ (НЕ(ВидКлиента=»VIP») И НЕ(СортТовара=»Высший»));

  7. Сама функция:
    Функция РазрешенаПродажа(ВидКлиента, СортТовара)
    Если (ВидКлиента =”VIP” и СортТовара = “Высший”) ИЛИ (ВидКлиента <> “VIP” И СортТовара <> “Высший”) Тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции

  8. Создал процедуру
    Если ВидКлиента = “VIP” И СортТовара <> “Высший” тогда
    Возврат Ложь
    ИначеЕсли ВидКлиента <> “VIP” И СортТовара = “Высший” тогда
    Возврат Ложь;
    Иначе
    Возврат Истина;
    КонецЕсли;

    • задание сделал, особых трудностей не возникло.
      Иду с отставанием постараюсь нагнать как можно быстрее.

  9. Добрый времени суток.
    Выполнение самого задания не вызвало трудностей, трудности возникли с управляемым интерфейсом, запуталась в свойствах конфигурации.

    Функция РазрешенаПродажа(Клиент, Сорт)

    Если Клиент = “VIP” Тогда
    СтатусКлиента = Истина;
    Иначе
    СтатусКлиента = Ложь;
    КонецЕсли;

    Если Сорт = “Высший” Тогда
    СтатусСорта = Истина;
    Иначе
    СтатусСорта = Ложь;
    КонецЕсли;

    Возврат СтатусКлиента = СтатусСорта;

    КонецФункции
    Функция РазрешенаПродажа(Клиент, Сорт)
    Если Клиент = “VIP” Тогда
    СтатусКлиента = Истина;
    Иначе
    СтатусКлиента = Ложь;
    КонецЕсли;
    Если Сорт = “Высший” Тогда
    СтатусСорта = Истина;
    Иначе
    СтатусСорта = Ложь;
    КонецЕсли;
    Возврат СтатусКлиента = СтатусСорта;
    КонецФункции

  10. Георгий 24.01.2011 в 15:21

    Легкое задание – оно не вызвало затруднений у меня.

  11. Здравствуйте. Вчера был  командировке и из Йошкар-Олы отправил свое решение ДЗ1. Сегодня вернулся в Москву и в комментариях не увидел своего решения и решил повторить его снова.
    Так как опоздал с решением даю два варианта:
    Вариант 1: Создал новую форму обработки. В ней создал два строковых реквизита: ВидКлиента и СортТовара. В модуле формы создал процедуру – ВидКлиентаПри Изменении(Элемент)
    Сообщить(РазрешенаПродажа1(ВидКлиента1, СортТовара1));
     

    КонецПроцедуры
    Сообщить(РазрешенаПродажа(ВидКлиента, СортТовара));
     
    КонецПроцедуры
    Еще одну процедуру:
     
    Процедура СортТовара1ПриИзменении(Элемент)
    Сообщить(РазрешенаПродажа(ВидКлиента, СортТовара));
    КонецПроцедуры
    На сервере создал функцию:
     
    Функция РазрешенаПродажа(ВидКлиента, СортТовара)
    Если ((ВидКлиента=”VIP”) и (СортТовара=”Высший”))  или  ((ВидКлиента <> “VIP”) и (СортТовара<>”Высший”))тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции
    Вариант2: Создал перечисления – ВидКлиента со значениями – VIP и Постоянный; СортТовара со значениями – Высший и БРАК. В форме обработки создал реквизиты ВидКлиента и СортТовара -Типа – ПеречислениеСсылка. На сервере переписал функцию:

    Функция РазрешенаПродажа(ВидКлиента, СортТовара)
    Если ((ВидКлиента=Перечисления.ВидКлиента.VIP и СортТовара=Перечисления.СортТовара.Высший) или (ВидКлиента<>Перечисления.ВидКлиента.VIP и СортТовара<>Перечисления.СортТовара.Высший))  тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
    КонецФункции

     
     

     
     

    • Ваше решение было одобрено вчера в 12:43 (Мск).
      Все ок.

  12. Здравствуйте. Конечно же, наипростейшим решением по первому заданию будет case-выбор возможных вариантов ситуаций. Т.обр код получается следующим:
    <code>
    Функция РазрешитьПродажу(ВидКлиента, СортТовара)
          Если (ВидКлиента = “Вип”)И(СотрТовара = “Высший”) Тогда
               Возврат  Истина;
          ИначеЕсли (ВидКлиента <> “Вип”)И(СортТовара<> “Высший”) Тогда
               Возврат Истина;
          Иначе
               Возврат Ложь;
          КонецЕсли;
    КонецФункции
    </code>
    Можно также последовательно вычислять и логические выражения, сохраняя промежуточные результаты в переменных, но такое решение не очень “красиво”, на мой взгляд.

  13. Доброго времени суток! ДЗ реализовала следующим образом:
    <code>
    Функция РазрешенаПродажа(X, Y)

    А = ?(X = “VIP”, Истина, Ложь);
    Б = ?(Y = “Брак”, Истина, Ложь);

    Если (А или Б) И (А <> Б) Тогда
    Возврат 1;
    Иначе
    Возврат 0;
    КонецЕсли;

    КонецФункции
    </code>
    Результат работы функции: 0,1,0,1

  14. Taranov-SI 23.01.2011 в 20:03

    Функция РазрешенаПродажа(пар1,пар2)
    В = пар1= “VIP”;
    С =пар2 = “Высший”;
    а = (не в и с) или (Не с и в);
    Возврат  НЕ а;
    КонецФункции
    Функция РазрешенаПродажа(пар1,пар2) В = пар1= “VIP”;    С =пар2 = “Высший”; а = (не в и с) или (Не с и в);      Возврат  НЕ а;   КонецФункции

  15. Здравствуйте,
    В связи с тем, что задержалась с решением реализовала несколько вариантов.
    1.Если (ВидКлиента = “VIP” и СортТовар = “Высший”) 
    тогда ПродажаРазрешена = Истина
    ИначеЕсли не (ВидКлиента = “VIP”) и не (СортТовар = “Высший”)
    тогда ПродажаРазрешена = истина
    Иначе ПродажаРазрешена = Ложь ;
    КонецЕсли;
    2.
    КлиентВип=( ВидКлиента=”VIP”);
    СортТовараВысший=( СортТовар=”Высший”);
    ПродажаРазрешена=не ((КлиентВип и не СортТовараВысший) или (не КлиентВип и СортТовараВысший) );
    3.ПродажаРазрешена = КлиентВип = СортТовараВысший;
    Возврат ПродажаРазрешена;

  16. andrew_mvs 23.01.2011 в 18:06

    Вроде все получилось

  17. Мой вариант решения был такой, но как я увидел как можно было решить поставленную задачу сразу понял, сложность своего решения.
    <code>]Возврат(?((ВидКлиента = “VIP” И СортТовара = “Высший”) Или  (ВидКлиента <> “VIP” И СортТовара <> “Высший”), Истина, Ложь))</code>

  18. К сожалению, только сегодня нашлось время досмотреть необходимые главы курса и выполнить домашнее задание.
    Проблем не возникло.

  19. Задание выполнил.
    Пока все просто и понятно.

  20. Харитонов Алексей 22.01.2011 в 09:17

    Всем доброго времени суток!
    Сначала когда читаешь задание, то вроде бы и надо то потратить на него пару минут.
    Начал исполнять и окончательно запутавшись со скобками в условии, бросил это дело.
    На следующий день пересмотрев еще раз видео по приоритетам, наконец-то понял что скобки вообще не нужны и выкинул их все из условия. Вот какое оно в итоге получилось:
    ВидКлиента = “VIP” И СортТовара = “Высший” ИЛИ ВидКлиента <> “VIP” И СортТовара <> “Высший”
    Результат исполнения обработчика события «ПриСозданииНаСервере»:
    Продать нельзя
    Продать можно
    Продать нельзя
    Продать можно
    Жду следующего ДЗ!
    Всем удачи на курсах!
    Опоздал на один день. блин.

  21. На базисе «И» «ИЛИ» «НЕ»
    В СНДФ
    1*1+0*0
    В СНКФ
    (0+1)*(1+0)
    Но так как есть функция РАВНО, ЕСЛИ.
    Можно решить так:
    &НаКлиенте
    Процедура Разрешение(Команда)
                    ВидКлиента=?(Клиент=”VIP-клиент”,1,0);
                    СортТовара= ?(Товар=”Высший” ,1,0);
    // Клиент и Товары- реквизиты формы
                    Сообщить(РазрешениеПродаж(ВидКлиента,СортТовара));
    КонецПроцедуры
    &НаКлиенте
    Функция РазрешениеПродаж(А,Б)
                    Возврат ?(А=Б,”Продать”,”Продать высший сорт”) ;
    КонецФункции 
     
    Единственное что некрасиво:
    0 0 0
    0 1 1
    1 0 1
    1 1 0 т. е. Клиент=”VIP-клиент” И Товар=”Высший” а мы ему «Просто продать»