Автор Тема: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)  (Прочитано 14372 раз)

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

OlegK

  • Пользователь
  • **
  • Сообщений: 60
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #15 : Сентябрь 06, 2020, 07:36:37 pm »
OlegK, а вы могли бы выложить свое решение задачи?
Или вы разобрали момент только с минимальными ценами?
Я не продумывал все случаи, когда надо пересчитывать минимальную цену. Наверное надо еще при изменении валюты. В МФ документа Заказ клиента:
&НаСервере
Функция ПолучитьЦенуПоОтбору(Номенклатура, Характеристика, Упаковка)
   
   СтруктураПараметровОтбора = Новый Структура;
   СтруктураПараметровОтбора.Вставить("Валюта", Объект.Валюта);
   СтруктураПараметровОтбора.Вставить("Дата", Объект.Дата);
   СтруктураПараметровОтбора.Вставить("ВидЦены", Константы.ВидМинимальноДопустимыхЦенПродажи.Получить());
   СтруктураПараметровОтбора.Вставить("Номенклатура", Номенклатура);
   СтруктураПараметровОтбора.Вставить("Характеристика", Характеристика);
   СтруктураПараметровОтбора.Вставить("Упаковка", Упаковка);
   Цена = ПродажиСервер.ПолучитьЦенуПоОтбору(СтруктураПараметровОтбора);
   
   Возврат Цена;
   
КонецФункции

&После("ОбработкаВыбораПодборНаСервере")
&НаСервере
Процедура Экз_ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
   Для каждого СтрокаТовара Из Объект.Товары Цикл
      СтрокаТовара.ПорогРентабельности = ПолучитьЦенуПоОтбору(СтрокаТовара.Номенклатура, СтрокаТовара.Характеристика, СтрокаТовара.Упаковка);   
   КонецЦикла;
КонецПроцедуры
   
&После("ТоварыУпаковкаПриИзменении")
&НаКлиенте
Процедура Экз_ТоварыУпаковкаПриИзменении(Элемент)
   ТекСтр = Элементы.Товары.ТекущиеДанные;
   ТекСтр.ПорогРентабельности = ПолучитьЦенуПоОтбору(ТекСтр.Номенклатура, ТекСтр.Характеристика, ТекСтр.Упаковка);
КонецПроцедуры
   
&После("ТоварыНоменклатураПриИзменении")
&НаКлиенте
Процедура Экз_ТоварыНоменклатураПриИзменении(Элемент)
   ТекСтр = Элементы.Товары.ТекущиеДанные;
   ТекСтр.ПорогРентабельности = ПолучитьЦенуПоОтбору(ТекСтр.Номенклатура, ТекСтр.Характеристика, ТекСтр.Упаковка);
  КонецПроцедуры
 

fm23rus

  • Пользователь
  • **
  • Сообщений: 26
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #16 : Сентябрь 07, 2020, 01:06:13 am »
Мой первый вариант тоже был такой же, но меня смущает вызов ПродажиСервер.ПолучитьЦенуПоОтбору в цикле. Хотя для сдачи этого должно хватить. Еще можно получение константы ВидМинимальноДопустимыхЦенПродажи перенести в общий модуль повт исп.

Сегодня проработал такой решение с использованием ПродажиСервер.ЗаполнитьЦены(), возможно еще не оптимальное:

В процедуру РассчитатьЦены() качестве параметра или номер строки для расчета цены, или массив строк или если ничего, то пересчет всей табличной части.
Для подбора я в ОбработкаВыбораПеред в структуре запоминаю количество строк до подбора, а в ОбработкаВыбораПосле определяю массив новых строк и передаю его для расчета. Хотя возможно это излишне.

&НаСервере
Процедура РассчитатьЦены(Строки = Неопределено)
   
   ТабТовары = Новый ТаблицаЗначений;

   Если Строки = Неопределено Тогда
      ТабТовары = Объект.Товары.Выгрузить();
   ИначеЕсли Тип("Число") = ТипЗнч(Строки) Тогда
      ПараметрыПоиска = Новый Структура("НомерСтроки");
      ПараметрыПоиска.НомерСтроки = Строки;
      ТабТовары = Объект.Товары.Выгрузить(ПараметрыПоиска);
   Иначе
      ТабТовары = Объект.Товары.Выгрузить(Строки);
   КонецЕсли;   

   ПараметрыЗаполнения = Новый Структура();
   ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
   ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
        ПараметрыЗаполнения.Вставить("ВидЦены", Константы.ВидМинимальноДопустимыхЦенПродажи.Получить());
   ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
   ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
   
   ЦеныРассчитаны = ПродажиСервер.ЗаполнитьЦены(ТабТовары,  , ПараметрыЗаполнения,   );
   Если ЦеныРассчитаны Тогда
         
         ПараметрыПоиска = Новый Структура("НомерСтроки");
         Для каждого СтрокаТовары из ТабТовары цикл
            ПараметрыПоиска.НомерСтроки = СтрокаТовары.НомерСтроки;
            
            НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыПоиска);
            
            Если НайденныеСтроки.Количество() Тогда
               НайденныеСтроки[0].Расш1_НижнийПорогРентабельности = СтрокаТовары.Цена;
            КонецЕсли;   
            
         КонецЦикла;   
      КонецЕсли;   

КонецПроцедуры
« Последнее редактирование: Сентябрь 07, 2020, 01:29:11 am от fm23rus »


OlegK

  • Пользователь
  • **
  • Сообщений: 60
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #17 : Сентябрь 10, 2020, 10:39:15 pm »
Мой первый вариант тоже был такой же, но меня смущает вызов ПродажиСервер.ПолучитьЦенуПоОтбору в цикле. Хотя для сдачи этого должно хватить.
Может хватить, а может и нет, смотря каким будет решение всего остального. Я выше писал, что даже разбирать эту задачу не планировал, не слышал, чтобы она попадалась на экзамене. Поэтому ради интереса решил на скорую руку и дорабатывать, чтобы было не в цикле - не стал. Пошел вчера на экзамен и не поверил своим глазам - именно она мне и попалась. Условие задачи на ввод данных изменили, поэтому потерял время на 1 часть и уже при решении 2 части пришлось сильно торопиться, поэтому проблему с циклом устранять было некогда. Сегодня пришел результат - 4. Но экзаменатор в комментарии указал "При обработке подбора цена получается в цикле".

fm23rus

  • Пользователь
  • **
  • Сообщений: 26
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #18 : Сентябрь 10, 2020, 10:51:12 pm »
Мой первый вариант тоже был такой же, но меня смущает вызов ПродажиСервер.ПолучитьЦенуПоОтбору в цикле. Хотя для сдачи этого должно хватить.
Может хватить, а может и нет, смотря каким будет решение всего остального. Я выше писал, что даже разбирать эту задачу не планировал, не слышал, чтобы она попадалась на экзамене. Поэтому ради интереса решил на скорую руку и дорабатывать, чтобы было не в цикле - не стал. Пошел вчера на экзамен и не поверил своим глазам - именно она мне и попалась. Условие задачи на ввод данных изменили, поэтому потерял время на 1 часть и уже при решении 2 части пришлось сильно торопиться, поэтому проблему с циклом устранять было некогда. Сегодня пришел результат - 4. Но экзаменатор в комментарии указал "При обработке подбора цена получается в цикле".

Поздравляю. А какая 1 задача попалась и что там поменяли?

OlegK

  • Пользователь
  • **
  • Сообщений: 60
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #19 : Сентябрь 10, 2020, 10:56:25 pm »
Поздравляю. А какая 1 задача попалась и что там поменяли?
Спасибо! На ввод данных была задача 1.4, но условие изменили добавив туда валюту. Причем для Трансферной и Оптовой цены - валюта, а для Розничной - рубли.

zavyzka

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: Александр
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #20 : Сентябрь 20, 2020, 12:35:00 pm »
В условиях задачи указано, что ЧАСТИ из этих менеджеров запрещено продавать товар ниже установленной цены.

Я сейчас просто сделал РС где храню пользователей которым запрещено продавать ниже порога, но не уверен, что это достаточно...

Может быть есть мысли как правильно реализовывать полномочия пользователя?

tetrapter

  • Пользователь
  • **
  • Сообщений: 48
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #21 : Сентябрь 20, 2020, 02:50:18 pm »
В условиях задачи указано, что ЧАСТИ из этих менеджеров запрещено продавать товар ниже установленной цены.

Я сейчас просто сделал РС где храню пользователей которым запрещено продавать ниже порога, но не уверен, что это достаточно...

Может быть есть мысли как правильно реализовывать полномочия пользователя?
Надо делать через роли.
Создать роли в расширении. И раздать так как считаете нужным.

Dimkis

  • Пользователь
  • **
  • Сообщений: 12
  • ФИО: Дмитрий
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #22 : Ноябрь 02, 2020, 10:39:40 pm »
Подскажите, в чем может быть проблема. Не могу открыть конструктор запроса. Говорит: "Неверный параметр "*" КурсыВалютыЦены.Курс * КурсыВалюты.Кратность". Причём в консоле запрос открывается без проблем. Может проблема в платформе? Использую 17-ю платформу и последний релиз УТ
 

      |ВЫБРАТЬ
      |   ТаблицаТовары.Номенклатура КАК Номенклатура,
      |   ТаблицаТовары.Характеристика КАК Характеристика,
      |   ТаблицаТовары.Упаковка КАК Упаковка,
      |   ТаблицаТовары.НомерСтроки КАК НомерСтроки,
      |   ТаблицаТовары.Цена КАК Цена,
      |   ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
      |   * ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0)/ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки2,1)
      |   * ВЫБОР
      |      КОГДА &Валюта <> ЦеныНоменклатурыСрезПоследних.Валюта
      |         ТОГДА ВЫБОР
      |               КОГДА ЕСТЬNULL(КурсыВалютыЦены.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалютыЦены.Курс, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Курс, 0) > 0
      |               ТОГДА
      |                  КурсыВалютыЦены.Курс * КурсыВалюты.Кратность
      |                  / (КурсыВалюты.Курс * КурсыВалютыЦены.Кратность)
      | 0
      |               ИНАЧЕ 0
      |            КОНЕЦ
      |      ИНАЧЕ 1
      |   КОНЕЦ КАК НижнийПорогРентабельности



ikalina

  • Пользователь
  • **
  • Сообщений: 50
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #23 : Ноябрь 03, 2020, 08:45:00 am »
Подскажите, в чем может быть проблема. Не могу открыть конструктор запроса. Говорит: "Неверный параметр "*" КурсыВалютыЦены.Курс * КурсыВалюты.Кратность". Причём в консоле запрос открывается без проблем. Может проблема в платформе? Использую 17-ю платформу и последний релиз УТ
 

      |ВЫБРАТЬ
      |   ТаблицаТовары.Номенклатура КАК Номенклатура,
      |   ТаблицаТовары.Характеристика КАК Характеристика,
      |   ТаблицаТовары.Упаковка КАК Упаковка,
      |   ТаблицаТовары.НомерСтроки КАК НомерСтроки,
      |   ТаблицаТовары.Цена КАК Цена,
      |   ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
      |   * ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0)/ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки2,1)
      |   * ВЫБОР
      |      КОГДА &Валюта <> ЦеныНоменклатурыСрезПоследних.Валюта
      |         ТОГДА ВЫБОР
      |               КОГДА ЕСТЬNULL(КурсыВалютыЦены.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалютыЦены.Курс, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Курс, 0) > 0
      |               ТОГДА
      |                  КурсыВалютыЦены.Курс * КурсыВалюты.Кратность
      |                  / (КурсыВалюты.Курс * КурсыВалютыЦены.Кратность)
      | 0
      |               ИНАЧЕ 0
      |            КОНЕЦ
      |      ИНАЧЕ 1
      |   КОНЕЦ КАК НижнийПорогРентабельности


Все регистры, к которым идет обращение в запросе, нужно добавить в расширение (с измерениями и ресурсами).

Dimkis

  • Пользователь
  • **
  • Сообщений: 12
  • ФИО: Дмитрий
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #24 : Ноябрь 03, 2020, 03:54:39 pm »
Подскажите, в чем может быть проблема. Не могу открыть конструктор запроса. Говорит: "Неверный параметр "*" КурсыВалютыЦены.Курс * КурсыВалюты.Кратность". Причём в консоле запрос открывается без проблем. Может проблема в платформе? Использую 17-ю платформу и последний релиз УТ
 

      |ВЫБРАТЬ
      |   ТаблицаТовары.Номенклатура КАК Номенклатура,
      |   ТаблицаТовары.Характеристика КАК Характеристика,
      |   ТаблицаТовары.Упаковка КАК Упаковка,
      |   ТаблицаТовары.НомерСтроки КАК НомерСтроки,
      |   ТаблицаТовары.Цена КАК Цена,
      |   ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки1, 1)
      |   * ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0)/ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки2,1)
      |   * ВЫБОР
      |      КОГДА &Валюта <> ЦеныНоменклатурыСрезПоследних.Валюта
      |         ТОГДА ВЫБОР
      |               КОГДА ЕСТЬNULL(КурсыВалютыЦены.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалютыЦены.Курс, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Кратность, 0) > 0
      |                  И ЕСТЬNULL(КурсыВалюты.Курс, 0) > 0
      |               ТОГДА
      |                  КурсыВалютыЦены.Курс * КурсыВалюты.Кратность
      |                  / (КурсыВалюты.Курс * КурсыВалютыЦены.Кратность)
      | 0
      |               ИНАЧЕ 0
      |            КОНЕЦ
      |      ИНАЧЕ 1
      |   КОНЕЦ КАК НижнийПорогРентабельности


Все регистры, к которым идет обращение в запросе, нужно добавить в расширение (с измерениями и ресурсами).


Всё добавлено и даже работает в пользовательском режиме, ошибок не выдаёт, но запрос не открывает к конфигураторе. Поэтому я грешу на платформу

dgchar

  • Пользователь
  • **
  • Сообщений: 30
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #25 : Ноябрь 09, 2020, 04:59:08 pm »
А кто как решил вот этот пункт:
"Данный вид цены определяется как цены закупки с наценкой в 3%"

sasha772

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Саша
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #26 : Ноябрь 29, 2020, 01:21:45 pm »
Добрый день! Используя выложенные на форуме решения, подготовил свое, с подробным описанием. И расширение и описание в вложении. Решал на релизе 11.4.12.102. Буду рад комментариям.

Dimok2018

  • Пользователь
  • **
  • Сообщений: 15
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #27 : Декабрь 17, 2020, 09:16:40 am »
Добрый день! Используя выложенные на форуме решения, подготовил свое, с подробным описанием. И расширение и описание в вложении. Решал на релизе 11.4.12.102. Буду рад комментариям.
Добрый день! Спасибо за предоставленный вариант решения. Вопрос о необходимости программно добавлять в форму колонку пороговой цены. Это дополнительная затрата времени на экзамене. Можно просто в форму на расширении добавить. Результат такой же.
« Последнее редактирование: Декабрь 17, 2020, 09:24:31 am от Dimok2018 »

sasha772

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Саша
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #28 : Декабрь 17, 2020, 10:04:06 am »
Добрый день! Используя выложенные на форуме решения, подготовил свое, с подробным описанием. И расширение и описание в вложении. Решал на релизе 11.4.12.102. Буду рад комментариям.
Добрый день! Спасибо за предоставленный вариант решения. Вопрос о необходимости программно добавлять в форму колонку пороговой цены. Это дополнительная затрата времени на экзамене. Можно просто в форму на расширении добавить. Результат такой же.

Добрый день! Спасибо за комментарий. По колонке да, но еще, я так понял, нельзя добавлять доп реквизит в вид цены в расширении, надо воспользоваться стандартным механизмом. 

Dimok2018

  • Пользователь
  • **
  • Сообщений: 15
Re: Задача 2.7 УТ 11.3 (2.8 УТ 11.4)
« Ответ #29 : Декабрь 17, 2020, 10:15:40 am »
Добрый день! Используя выложенные на форуме решения, подготовил свое, с подробным описанием. И расширение и описание в вложении. Решал на релизе 11.4.12.102. Буду рад комментариям.
Добрый день! Спасибо за предоставленный вариант решения. Вопрос о необходимости программно добавлять в форму колонку пороговой цены. Это дополнительная затрата времени на экзамене. Можно просто в форму на расширении добавить. Результат такой же.

Добрый день! Спасибо за комментарий. По колонке да, но еще, я так понял, нельзя добавлять доп реквизит в вид цены в расширении, надо воспользоваться стандартным механизмом.

Если мы заимствуем в расширение форму, почему нельзя добавить свой реквизит. Это самый обычный механизм.