Проблема с работой таблицы значений

Новая тема
"Работаю в Аналит: Аптека 5.0 проф. релиз 4.08, в прайс лист попросили вставить дополнительное поле "Срок годности". Казалось бы чего проще, написал модуль, но вот в чем загвозка, почему то на некоторые товары модуль не срабатывает. Перепробовал казалось бы все...Может что то не так сделал..Подскажи те плиз...
Функция ВывестиГоденДо()

Партия = СоздатьОбъект("Справочник.Партии");
Таб = СоздатьОбъект("ТаблицаЗначений");
Таб.НоваяКолонка("Наименование",,,,,,,);
Таб.НоваяКолонка("ГоденДо","Дата",,,,,"Дата",);
Таб.НоваяКолонка("Остаток",,,,,,,);

Партия.ИспользоватьВладельца(Товар.ТекущийЭлемент());

Партия.ВыбратьЭлементы();
Пока Партия.ПолучитьЭлемент() = 1 Цикл
     Если Партия.Владелец.Наименование = Товар.Наименование Тогда
     Если (Регистр.ОстаткиТоваров.СводныйОстаток(Партия.Владелец,,Партия.ТекущийЭлемент),"Остаток") > 0) и (Партия.ПометкаУдаления() = 0)  Тогда
Таб.НоваяСтрока();
Таб.Наименование = Партия.Владелец.Наименование;
Таб.ГоденДо = Партия.ГоденДо;
Таб.Остаток = Регистр.ОстаткиТоваров.СводныйОстатокПартия.Владелец,,Партия.ТекущийЭлемент(),"Остаток")
   Иначе
Таб.НоваяСтрока();
Таб.Наименование = Партия.Владелец.Наименование;
Таб.ГоденДо = 0;
Таб.Остаток = Регистр.ОстаткиТоваров.СводныйОстаток(Партия.Владелец,,Партия.ТекущийЭлемент(),"Остаток")

КонецЕсли;
КонецЕсли;
КонецЦикла;

Таб.Сортировать("ГоденДо");
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку() = 1 Цикл
    Если  Таб.Остаток <= 0 Тогда
         Если Таб.КоличествоСтрок() > 1 Тогда
              Таб.УдалитьСтроку();
 КонецЕсли;
    КонецЕсли;
КонецЦикла;

Таб.ПолучитьСтрокуПоНомеру(1);
Возврат Формат(Таб.ГоденДо,"ДДД.ММ.ГГ");
КонецФункции

Вообщем нужно, чтобы если нулевой остаток по складу он не выбирал "Срок годности", если же существует несколько партий товаов, тогда нужно выбрать наиболее ранний и показать его.
"
"Перед
Таб.Сортировать("ГоденДо");

Поставил Таб.Свернуть("ГоденДо");

И получилось!!!:-)"
"Следующий кусок кода не корректен:

Таб.Сортировать("ГоденДо");
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку() = 1 Цикл
   Если  Таб.Остаток <= 0 Тогда
        Если Таб.КоличествоСтрок() > 1 Тогда
             Таб.УдалитьСтроку();
КонецЕсли;
   КонецЕсли;
КонецЦикла;
//----------------------------------------------------
Если нужно выбрать самый ранний срок, то делаем так:

Таб.Сортировать("ГоденДо");
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку() = 1 Цикл
   Если  Таб.Остаток > 0 Тогда
       возврат(.....); // Выход с возвращением самой ранней даты
   КонецЕсли;
КонецЦикла;
// Если мы здесь, то либо нет товара, либо его остаток = 0
"
"Дело в том, что почему то со всеми значениями не работает, некоторорые значения не берет. А вот как я сделал все работатет
Таб.Свернуть("ГоденДо",);
Таб.Сортировать("ГоденДо");
Таб.ВыбратьСтроки();
   Пока Таб.ПолучитьСтроку() = 1 Цикл
        Если  Таб.ГоденДо = 0 Тогда
            Если Таб.КоличествоСтрок() > 1 Тогда
                 Таб.УдалитьСтроку();
            КонецЕсли;  
        КонецЕсли;
   КонецЦикла;  

Таб.ПолучитьСтрокуПоНомеру(1);
Возврат Формат(Таб.ГоденДо,"ДДД.ММ.ГГ");  

Теперь вот возник другой вопрос:
- Можно ли изменить чвет шрифта, или фона ячейки, если дата срока годности близиться к завершению.
"
Дело в том, что почему то со всеми значениями не работает, некоторорые значения не берет. --- Забираю свои слова назад!!! Все работает и так как мне предложили..и как сделал я....Большое спасибо!!!!
"Можно. Смотрите в сторону секций и областей таблицы

вместо: таб.ВывестиСекцию("имя_1")
используем:
В секции задаём имена областям (Гл. меню -> Таблица -> имена)

ск = таб.ПолучитьСекцию("имя_1")
обл = таб.имя_области;
а далее с областью делай всё что душе угодно.
потом: таб.ВывестиСекцию(ск);
"
На сколько я понял это применяется при печати отчетов..а мне нужно сдесь же в справочнике...или я что то не так понял?
Я нашел решение этой проблемы..всем спасибо!!!
Читают тему
(гостей: 1)

Быстрый переход