7.7 проблемка с УСТАНОВИТЬОТБОР()

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ZEMA, 17 апр 2008.

  1. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Привет всем.вот я коснулась такой проблемы.При открытии справочника им. реквизит только "товар".При открытии формы списка им. многострочная часть, где выводится товар и остаток товара(остаток товара находится с помощью функции которая "повешана" на этот столбец
    Код:
    Функция Остаток()
    Ост=Рег.СводныйОстаток(Товар,Склад,,"ОстатокТовара");   
    Рзв=Регистр.РезервыТоваров.СводныйОстаток(Товар,Склад,,,"РезервТовара");  
    Если Склад.Выбран()=1 Тогда
    Ост=Рег.СводныйОстаток(Товар,Склад,,"ОстатокТовара");   
    Рзв=Регистр.РезервыТоваров.СводныйОстаток(Товар,Склад,,,"РезервТовара");    
    Иначе
    Ост=Рег.СводныйОстаток(Товар,,,"ОстатокТовара");
    Рзв=Регистр.РезервыТоваров.СводныйОстаток(Товар,,,,"РезервТовара");
    КонецЕсли;  
    Если СмотримПоОтветХранению=1 Тогда
    Рзв=0;
    КонецЕсли;  
    Возврат Формат(Ост-Рзв,"Ч14.3. ");  
    КонецФункции)
    
    //И вот вопрос:Надо установитьОтбор по остатку.
    //Если я выбираю закладку "Нули" то высвечивается товар с остатком 0 иначе без 0.  
    //ВОТ ЧТО Я ПИШУ
    Процедура ПриВыбореЗакладки(Ном,Зн)    
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
    Сер=СоздатьОбъект("Справочник.Товары");
    Ост=Рег.СводныйОстаток(Сер.ТекущийЭлемент(),Склад,,"ОстатокТовара");
    Сер.ПорядокКодов();     
    Если Зн="0" Тогда
    Если ост=0 Тогда  
    ИерархическийСписок(0);
    УстановитьОтбор("товары",ост);-ЭТО НЕВЕРНО.
    КонецЕсли;    
    иначеЕсли Зн<>"0" Тогда 
    Если ост<>0 Тогда
    ИерархическийСписок(0);
    УстановитьОтбор("Товар",ост);-ЭТО НЕВЕРНО
    КонецЕсли;    
    КонецЕсли;
    КонецПроцедуры
    
    
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Остатки БЕЗ 0");
    Форма.Закладки.ДобавитьЗначение("0");
    
    Можно чно-нибуди сделать или никак????????
  2. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    В этом случае надо сначала сформировать список нужных элеметов (т.е. тех, у которых остаток ноль) и использовать метод ИспользоватьСписокЭлементов().
  3. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Это видимо так надо
    Код:
    Функция УстановитьФильтр(ВыбПризнак)
    Список.СоздатьОбъект("СписокЗначений");
    Буфер = СоздатьОбъект("Справочник.Главн");
    // отбираем только те элементы, которые могут отображаться в текущем списке
    Буфер.ИспользоватьРодителя(ИспользоватьРодителя());
    Буфер.ВключатьПодчиненные(0);
    Буфер.ВыбратьЭлементы();
    Пока Буфер.ПолучитьЭлемент() = 1 Цикл
    // отбираем только те элементы, которые удовлетворяют заданному признаку
    Если (Буфер.Признак = ВыбПризнак) Тогда
    Список.ДобавитьЗначение(Буфер.ТекущийЭлемент());
    КонецЕсли;
    КонецЦикла;
    ИспользоватьСписокЭлементов(Список);
    КонецФункции
    
    и потом отобразить эту функцию в процедуре ПриВыбореЗакладки()

    !НЕ ЗАБЫВАЕМ использовать тэг
    Код:
    
    
  4. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Слушайте,я все перепробывала у меня появляется пустой список
    Код:
    Функция ЗагрузитьТовар()
    //   тз=СоздатьОбъект("ТаблицаЗначений"); 
    //   тз.НоваяКолонка("Товар","Справочник.Товары");
    //    тз.НоваяКолонка("Остаток","Регистр.ОстаткиТоваров");
    
    Список=СоздатьОбъект("СписокЗначений");
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
    
    Сер=СоздатьОбъект("Справочник.Товары");
    Сер.ПорядокКодов();     
    Сер.ВыбратьЭлементы();
    Пока Сер.ПолучитьЭлемент()=1 Цикл
    Если Рег.СводныйОстаток(Сер.ТекущийЭлемент(),Склад,,"ОстатокТовара")=0 Тогда
    Продолжить;
    иначе
    //тз.НоваяСтрока();  
    //ТЗ.Товар=СЕР.НАИМЕНОВАНИЕ;
    //тз.остаток=рег.остатоктовара;
    
    Список.ДобавитьЗначение(Сер.Наименование);
    
    -
    Код:
           КонецЕсли;
    КонецЦикла;                        
    //пер=тз.количествострок();    
    //Тз.ВыбратьСтроки();
    //Пока тз.получитьСтроку()=1 цикл
    
    ИспользоватьСписокЭлементов(список);
    КонецФункции
    
    
    
    
    
  5. Snake-84
    Offline

    Snake-84 Опытный в 1С

    Регистрация:
    28 янв 2007
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Используй "ВыгрузитьИтоги()" и "УстановитьЗначениеФильтра()"
  6. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    а Установитьфильтрзначений(товар,склад,,"Остаткитовара")-как здесь указать что остатки товара <>0??? Ведь остаткитовара в регистре это ресурс, а установитьзначениефильтра() работает с измерениями:unsure: B)
  7. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    подскажите кто-нибудь,пожалуйста.
    Код:
    Функция Остаток()                          
    Если СмотримПоОтветХранению=1 Тогда
    Ост=Регистр.ТоварыНаОтветХранении.СводныйОстаток(ТекущийЭлемент(),Склад,,"ОстатокТовара");
    Рзв=0;
    Иначе
    Рег=СоздатьОбъект("Регистр.ОстаткиТоваров"); 
    Сер=СоздатьОбъект("Справочник.Товары");
    Рег.ВыбратьИтоги();
    Пока Рег.ПолучитьИтог()=1 Цикл  
    ост1=0;
    Ост1=Рег.СводныйОстаток(ТекущийЭлемент(),Склад,,"ОстатокТовара"); 
    Если ост1=0 тогда
    Наименование=" ";-//это реквизит(текущийэлемент)
    продолжить;
    иначе
    Ост=Рег.СводныйОстаток(ТекущийЭлемент(),Склад,,"ОстатокТовара"); 
    Рзв=Регистр.РезервыТоваров.СводныйОстаток(ТекущийЭлемент(),Склад,,,"РезервТовара");   
    Возврат Формат(Ост-Рзв,"Ч14.3. ");
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецФункции
    
    
    эта функция присоединена к столбцу "остаток"(здесь если у товара остаток= 0,то ничего не выводить в этот столбец и наименование пустое,иначе выводить остаток).И что написать чтобы если остаток = 0 и наименование =" ",то удалить всю строчку или скрыть.в результате у меня выходной результат будет только те строки у которых есть остаток.)
  8. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    Не издевайтесь над машинкой, используйте запросы.

Поделиться этой страницей