![]() |
![]() |
![]() |
|
Равноценны ли эти строки? | ☑ | ||
---|---|---|---|---|
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С? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |