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