Имя: Пароль:
1C
 
Равноценны ли эти строки?
0 SKD
 
21.10.04
08:03
Код 1:
Спр=СоздатьОбъект("Справочник.Цены");
   Спр.ИСпользоватьВладельца(ВыбНоменклатура);
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент()=1 Цикл
       Цена=Спр.Цены;
   КонецЦикла;    
Код 2:
   "//{{ЗАПРОС(Сформировать)
   |Цена=Справочник.Цены.Владелец;
   |Группировка Цена;
   |"//}}ЗАПРОС
   ;              

Равноценны ли эти два кода или нет?
1 427
 
21.10.04
08:07
Цена и Владелец ?
2 SKrin
 
21.10.04
08:10
Нет.
В коде1: идет выборка циклом ВСЕХ значений ПОДРЯД
В коде2: идет выборка запросом с группировкой по цене
3 SKD
 
21.10.04
08:10
Нет. Сформулирую подругому. Как мне в запросе сделать тоже самое, что и в коде 1 или это не возможно?
4 Nekrutoy
 
21.10.04
08:12
пр Задов отдыхает!
в запросе
| Владелец=Справочник.Цены.Владелец
|Цена=Справочник.Цены.ТекущийЭлемент;
|Условие (Владелец= ВыбНоменклатура);

тогда еще можно говорить о похожести какой-то, да здесь не хватает еще и обработки запроса...
я тест Здал?
5 SKrin
 
21.10.04
08:16
(3)
"//{{ЗАПРОС(Сформировать)
|Цена=Справочник.Цены.Владелец;
|"//}}ЗАПРОС

вар1:Запрос.Выполнить(...);
      Пока запрос.Группировка()=1 Цикл
       ...


вар2: Запрос.Выгрузить(ТабЗнач);
     //далее действия с ТабЗнач
6 SKD
 
21.10.04
08:16
(4) Код обработки запроса будет таким :
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;            
   КонецЕсли;
   
   Пока Запрос.Группировка("Цена")=1  Цикл
       Цена=Запрос.Цена;        
   КонецЦикла;

или нет??? :(((
7 SKrin
 
21.10.04
08:18
(6) Нет.
Пока Запрос.Группировка()=1  Цикл
8 SKd
 
21.10.04
08:19
Сейчас попробую
9 SKD
 
21.10.04
08:27
Вот такой код написал
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   Запрос = СоздатьОбъект("Запрос");
   Спр=СоздатьОбъект("Справочник.Цены");
//часть1
   Спр.ИСпользоватьВладельца(ВыбНоменклатура);
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент()=1 Цикл
       Цена=Спр.Цена;
   КонецЦикла;    
//часть 2
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с '20.10.04' по '20.10.04';
   |Цена=Справочник.Цены.Владелец;
   |Группировка Цена;
   |"//}}ЗАПРОС
   ;              
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;            
   КонецЕсли;
   
   Пока Запрос.Группировка()=1  Цикл
       Цена=Запрос.Цена;        
   КонецЦикла;

КонецПроцедуры

Когда выполняется часть 1 то цена товара=5 - это правильно!
Когда выполняется часть два, тогда цены выводит название товара, а не его цену
10 SKrin
 
21.10.04
08:34
(9) потому что Цена=Справочник.Цены.Владелец
а вообще забей на запрос, используй выборку
11 SKD
 
21.10.04
08:42
(10) Блин, мне тут внешний отчет дали с кодом с большим там запрос. Этот запрос выводит остатки товара в таблицу. В таблице нет колнки цена. Вот мне ее и нужно сделать:((( Как же я забью на запрос?
Вот код отчета:
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбКонПериода по ВыбКонПериода;
   |Номенклатура = Регистр.ПартииНаличие.Номенклатура, Регистр.РезервыТМЦ.Номенклатура;
   |Резерв = Регистр.РезервыТМЦ.Количество;
   |Клиент = Регистр.РезервыТМЦ.ДоговорПокупателя.Владелец;
   |СтатусПартии=Регистр.ПартииНаличие.СтатусПартии;
   |Поставщик=Регистр.ПартииНаличие.Партия.Поставщик;
   |Колво = Регистр.ПартииНаличие.Количество;
   |Функция КолвоКонОст = КонОст(Колво);    
   |Функция ХранениеКонОст = КонОст(Колво) когда (СтатусПартии=Перечисление.СтатусыПартии.Т_Хранение);
   |Функция РезервКонОст = КонОст(Резерв);
   |Группировка Номенклатура;
   |"//}}ЗАПРОС
   ;              
   
   Если ВыбНоменклатура.Выбран()=1 Тогда
       ТекстЗапроса=ТекстЗапроса+"Условие(Номенклатура в ВыбНоменклатура);";
   КонецЕсли;          
   
   
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;            
   КонецЕсли;


   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Номенклатура

       Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
           Уровень=Запрос.Номенклатура.Уровень();
           Таб.ВывестиСекцию("Группа"+Уровень);
       Иначе
           Таб.ВывестиСекцию("Номенклатура");
       КонецЕсли;
       
   КонецЦикла;


   // Заполнение полей "Итого"
   //Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы  
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Остатки на "+ВыбКонПериода, "");
12 SKrin
 
21.10.04
08:49
(11) ну и в чем проблема?
Пока Запрос.Группировка(1) = 1 Цикл
      // Заполнение полей Номенклатура

      Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
          Уровень=Запрос.Номенклатура.Уровень();
          Таб.ВывестиСекцию("Группа"+Уровень);
      Иначе
          //******
          // вот тут и используй выборку цены
          //******

          Таб.ВывестиСекцию("Номенклатура");
      КонецЕсли;
       
  КонецЦикла;
13 Nekrutoy
 
21.10.04
08:50
Господи! Когда по русски научитесь разговаривать?
На 11! (одиннадцатом) ответе наконец становится известно, что нужно, да я бы и не дождался, если бы не триндычил в это время на другом сайте
14 SKD
 
21.10.04
09:00
Написал вот так вот:
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Номенклатура
       Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
           Уровень=Запрос.Номенклатура.Уровень();
           Таб.ВывестиСекцию("Группа"+Уровень);
       Иначе  
           Ценна=Запрос.Цена;
           Таб.ВывестиСекцию("Номенклатура");
       КонецЕсли;

Это верно?
15 SKD
 
21.10.04
09:01
Но цену все равно пишет равной 0, хотя цена = 5
16 SKrin
 
21.10.04
09:02
(14) А где у тебя в запросе определена переменная "цена"?
ЗЫ. "Цена" пишеться с одной "н"
17 SKD
 
21.10.04
09:06
(16) В запросе у меня написано вот что:
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбКонПериода по ВыбКонПериода;
   |Номенклатура = Регистр.ПартииНаличие.Номенклатура, Регистр.РезервыТМЦ.Номенклатура;
   |Цена=Справочник.Цены.Владелец;

Или нужно писать |Цена=Справочник.Цены.Цена; ???

Я знаю как пишется слово Цена!;)
18 SKD
 
21.10.04
09:13
Написал...    Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Номенклатура
       Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
           Уровень=Запрос.Номенклатура.Уровень();
           Таб.ВывестиСекцию("Группа"+Уровень);
       Иначе  
           Таб.ВывестиСекцию("Номенклатура");
           СпрЦена.ИспользоватьВладельца(Запрос.Номенклатура);
           СпрЦена.ВыбратьЭлементы();
               Пока СпрЦена.ПолучитьЭлемент()=1 Цикл
                    Цена=СпрЦена.Цена;
               КонецЦикла;
И все заработало. Всем спасибо:)
19 SKrin
 
21.10.04
09:14
Цена=Справочник.Цены.Владелец возвращает владельца справочника "Цена" т.е. "Номенклатуру"!
короче, я бы сделал так:

Пока Запрос.Группировка(1) = 1 Цикл
 // Заполнение полей Номенклатура
 Если Запрос.Номенклатура.ЭтоГруппа()=1 Тогда
   Уровень=Запрос.Номенклатура.Уровень();
   Таб.ВывестиСекцию("Группа"+Уровень);
 Иначе  
   СпрЦ=СоздатьОбъект("Справочник.Цены");
   СпрЦ.ИспользоватьВладельца(Запрос.Номеклатура);
   СпрЦ.ВыбратьЭлементы();
   Пока СпрЦ.ПолучитьЭлемент()=1 Цикл
      Таб.ПрисоеденитьСекцию("Цена"+СпрЦ.Код); //пример
   КонецЦикла;
   Таб.ВывестиСекцию("Номенклатура");
 КонецЕсли;
20 SKrin
 
21.10.04
09:15
Ну наконец то :)))
21 SKD
 
21.10.04
09:46
Уж извините, что так долго мурыжил Вас:)
Как долго занимаетесь программирование 1С?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший