Быстрый старт. Решение задания №5.6.1
Представляем решение домашнего задания 5.6.1.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
Для универсализации вашего решения хотел бы предложить следующий код, создаем 2 шрифта и в цикле зависимости от значения свободного остатка строке присваиваем тот или иной:
ОбычныйШрифт = Новый Шрифт(,,,Ложь);
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
...
ОбластьСтрокиТаблицы.Области["СтрокаТаблицы" + СуффиксОбласти].Шрифт = ?(СтрокаТовары.ВСвободномОстатке <= СтрокаТовары.Количество, ШрифтКурсив, ОбычныйШрифт);
...
КонецЦикла
Преимущество в том, что совсем не надо править макет.
Алгоритм печати скопировал из модуля менеджера “Заказ клиента” в соответствии с примером урока.
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
Если ЕстьСвободныеОстатки(СтрокаТовары.Номенклатура, СтрокаТовары.Количество, ТекущаяДата()) Тогда
ОбластьСтрокиТаблицы = Макет.ПолучитьОбласть(“СтрокаТаблицы” + СуффиксОбласти);
Иначе
ОбластьСтрокиТаблицы = Макет.ПолучитьОбласть(“СтрокаТаблицы” + СуффиксОбласти + “Курсив”);
КонецЕсли;
Изначально хотелось как-нибудь программно изменить шрифт в выводимой области, но к сожалению ничего подобного сделать не получилось. Очень хотелось бы понять как это реализовать.
Функция получения свободных остатков:
Функция ЕстьСвободныеОстатки(Номенклатура, Количество, Дата)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СвободныеОстаткиОстатки.Номенклатура
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки(&Дата, Номенклатура = &Номенклатура) КАК СвободныеОстаткиОстатки
|ГДЕ
| СвободныеОстаткиОстатки.ВНаличииОстаток – СвободныеОстаткиОстатки.ВРезервеОстаток >= &Количество”;
Запрос.УстановитьПараметр(“Дата”, Дата);
Запрос.УстановитьПараметр(“Номенклатура”, Номенклатура);
Запрос.УстановитьПараметр(“Количество”, Количество);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции // ()
maXon, отчет принят. Эталонное решение доступно.