7.7 не отображаются данные в столбце-товар

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

  1. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Код:
    тз=СоздатьОбъект("ТаблицаЗначений"); 
    тз.НоваяКолонка("ТоварИтог","Строка"); 
    тз.НоваяКолонка("ост","Число",11,3,,10);
    тз.НоваяКолонка("рзв","Число",11,3,,10);
    
    Запрос=СоздатьОбъект("Запрос");
    ТекстЗапроса="                  
    |Товар1=Регистр.ОстаткиТоваров.Товар,Регистр.РезервыТоваров.Товар,справочник.товары.текущийэлемент; 
    |Рез=Регистр.РезервыТоваров.РезервТовара;
    |Кол=Регистр.ОстаткиТоваров.ОстатокТовара;
    </span>
    |Группировка товар1 без групп; 
    |Функция КонКол= КонОст(Кол); 
    |Функция Резерв= КонОст(Рез);
    |";              
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/если')">Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
    Возврат;
    КонецЕсли;
    
    Пока (Запрос.Группировка(1) = 1)  Цикл 
    Если Запрос.КонКол=0 тогда
    продолжить
    Иначе   
    тз.НоваяСтрока();
    тз.ТоварИтог=Запрос.Товар1;
    тз.ост=Запрос.КонКол;      
    тз.рзв=Запрос.Резерв;
    КонецЕсли;    
    КонецЦикла;      
    
    ТЗ. ВыбратьСтроки();
    пОКА ТЗ.ПолучитьСтроку()=1 Цикл
    товар=тз.товарИтог;// ТОВАР ЭТО РЕКВИЗИТ КОЛОНКИ КОТОРЫЙ=СПРАВОЧНИК.ТОВАРЫ
    ост1=тз.ост-тз.рзв;
    
    КонецЦикла;    
    
    
    
    ВОТ ЗДЕСЬ тз=СоздатьОбъект("ТаблицаЗначений"); ТОВАР ПУСТ ПОЧЕМУ.НЕ ВИЖУ :unsure:
  2. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Вы уж меня изв. но я не вижу своей ошибки.
  3. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Чесно говоря, никогда не пробовал к двум регистрам обратится в одном запросе, всегда разбивал на два потом все сливал в таблицу значений, а там уже объединял. :unsure:
  4. Mirage
    Offline

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    2 ZEMA

    Попробуй убери тип значения при определении новых колонок ТЗ. Группировку в запросе можно поменять. А можно сразу выгрузить результаты запроса в ТЗ.
  5. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    Я вообще убрала тз и написала
    товар=Запрос.Товар1;
    ост1=Запрос.КонКол-Запрос.Резерв;и все равно товар и ост1 пусты,хотя запрос.товар1 выдает все что надо. НЕ я не понимаю :unsure:
  6. Mirage
    Offline

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Давай по порядку. Во-первых, что пытаешься сделать. Во-вторых, "// ТОВАР ЭТО РЕКВИЗИТ КОЛОНКИ КОТОРЫЙ=СПРАВОЧНИК.ТОВАРЫ" - реквизит колонки? где эта колонка?
  7. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

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

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Не совсем поняла про "список"... Но если имеется в виду, чтобы в списке номенклатуры (например, при подборе в документ) отображались только те позиции, которые есть на остатке, - то проще вставить рядом колонку с остатком нужного склада.

    Затем.
    Если многострочная часть - имеется в виду какой-то документ, то должно быть так
    Код:
    Иначе
    НоваяСтрока();
    Товар = Запрос.Товар1;
    ......
    
    Если выгружать будешь в ТЗ, то аналогично:
    после "Иначе" ТЗ.НоваяСтрока();...
  9. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    да-да.приподботе в документ появляется формаспискасписка справочника и в этой формев многострочной части имеется колонка товар и ост1.я пишу НоваяСтрока() все равно результат товар.наименование=0(хотя эта колонка товар имеет тип значения справочник.товары)
  10. Mirage
    Offline

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Если ты используешь в подборе уже существующий справочник "Номенклатура" - то зачем тебе заполнять в нем графу "товар"? Добавь на форму списка колонку типа текст. В нем пропиши формулу (или переменную) на расчет остатка.
    Хотя бы так:
    Код:
    Остаток = Регистр.ОстаткиТоваров.Остаток(,ТекущийЭлемент(),Склад.ТекущийЭлемент(),"ОстатокТовара")
    
    
    То есть в твоем случае:
    Ост1 = Остаток
  11. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

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

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Дело не в том, что написано, а в том, что ты хочешь сделать.

    Форму списка номенклатуры ты так не изменишь - имхо, нереально это.
    Или просто сделай колонку на расчет остатка - тогда у тебя будет виден остаток - и нулевой, и ненулевой. А уж пользователь сам решит, подбирать ли ему в документ позицию, которой нет на остатке.
    Или пиши дополнительную обработку на подбор номенклатуры в документ, прикручивай ее к какой-нибудь кнопочке в документе. По этому пункту могу помочь - пиши в личку.
  13. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    При открытии формы списка справочника формируешь список (отдельный) тех элементов, у которых остаток не 0. А потом применяешь метод
    Код:
    ИспользоватьСписокЭлементов(<СписокЗначений>)
    
    А уже в колонку "Остаток" забубениваешь формулу, которая непосредственно выводит остаток.
  14. TopicStarter Overlay
    ZEMA
    Offline

    ZEMA Опытный в 1С

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

    Mirage

    Регистрация:
    3 дек 2007
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Не в том месте метод применяешь.
  16. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    См. личку

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