Быстрый старт. Решение задания №5.6.1

Представляем решение домашнего задания 5.6.1.

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

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

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

комментария 3 на “Быстрый старт. Решение задания №5.6.1”

  1. Для универсализации вашего решения хотел бы предложить следующий код, создаем 2 шрифта и в цикле зависимости от значения свободного остатка строке присваиваем тот или иной:

        ШрифтКурсив = Новый Шрифт(,,, Истина);
        ОбычныйШрифт = Новый Шрифт(,,,Ложь);
       
    Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
        ...
        ОбластьСтрокиТаблицы.Области["СтрокаТаблицы" + СуффиксОбласти].Шрифт = ?(СтрокаТовары.ВСвободномОстатке <= СтрокаТовары.Количество, ШрифтКурсив, ОбычныйШрифт);           
        ...
        КонецЦикла

    Преимущество в том, что совсем не надо править макет.

  2. Алгоритм печати скопировал из модуля менеджера “Заказ клиента” в соответствии с примером урока.

      Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
       
       Если ЕстьСвободныеОстатки(СтрокаТовары.Номенклатура, СтрокаТовары.Количество, ТекущаяДата()) Тогда
            ОбластьСтрокиТаблицы = Макет.ПолучитьОбласть(“СтрокаТаблицы” + СуффиксОбласти);
       Иначе    
            ОбластьСтрокиТаблицы = Макет.ПолучитьОбласть(“СтрокаТаблицы” + СуффиксОбласти + “Курсив”);
    КонецЕсли; 

    Изначально хотелось как-нибудь программно изменить шрифт в выводимой области, но к сожалению ничего подобного сделать не получилось. Очень хотелось бы понять как это реализовать.
     
    Функция получения свободных остатков:
    Функция ЕстьСвободныеОстатки(Номенклатура, Количество, Дата)
     Запрос = Новый Запрос;
     Запрос.Текст =
      “ВЫБРАТЬ
      | СвободныеОстаткиОстатки.Номенклатура
      |ИЗ
      | РегистрНакопления.СвободныеОстатки.Остатки(&Дата, Номенклатура = &Номенклатура) КАК СвободныеОстаткиОстатки
      |ГДЕ
      | СвободныеОстаткиОстатки.ВНаличииОстаток – СвободныеОстаткиОстатки.ВРезервеОстаток >= &Количество”;
     Запрос.УстановитьПараметр(“Дата”, Дата);
     Запрос.УстановитьПараметр(“Номенклатура”, Номенклатура);
     Запрос.УстановитьПараметр(“Количество”, Количество);
     Результат = Запрос.Выполнить();
     Если НЕ Результат.Пустой() Тогда
     
      Возврат Истина;
      
     Иначе
      
      Возврат Ложь;
      
     КонецЕсли;
    КонецФункции // ()
        

    • Андрей Шнитов 05.07.2012 в 20:10

      maXon, отчет принят. Эталонное решение доступно.