0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
1 | |
Снова новичек просит помощи. Цены и товар.18.05.2010, 10:30. Показов 30598. Ответов 29
Метки нет Все метки)
(
Доброго времени суток уважаемые специалисты. Не могу справится с задачей. Задача такова: нужно за определенный промежуток времени получить сколько и на какую сумму было продано определенного товара, как в единицах так и группами (к примеру 1 процессор Intel I3 или вся продукция Intel). У меня не получается привязаться по ТМЦ. Прошу помощи. Вот мой код(ВыбНоменклатура реквизит):
Код ( (Unknown Language)): Запрос=СоздатьОбъект("Запрос"); ТЗ.УдалитьСтроки(); ТЗ.НоваяКолонка("ТМЦ"); ТЗ.НоваяКолонка("Цена"); ТЗ.НоваяКолонка("Количество"); ТЗ.НоваяКолонка("Сумма"); РегТовары = СоздатьОбъект("Регистр.Продажи"); РегТовары.ВыбратьДвижения(НачДата, КонДата); Пока РегТовары.ПолучитьДвижение() = 1 Цикл //если ВыбНоменклатура=РегТовары.ТМЦ тогда ТЗ.НоваяСтрока(); ТЗ.ТМЦ=РегТовары.ТМЦ; ТЗ.Цена=РегТовары.ПродСтоимость; ТЗ.Количество=РегТовары.Количество; ТЗ.Сумма=РегТовары.Количество*РегТовары.ПродСтоимость; //КонецЕсли; КонецЦикла; за ранее благодарен.
0
|
|
18.05.2010, 10:30 | |
Ответы с готовыми решениями:
29
Я новичек-очень нуждаюсь в помощи БД проектирование сущности 'Товар' - 'Цены'
Купить товар без цены |
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
|
|
18.05.2010, 10:43 | 2 |
А за позднее?
Любезный, вопрос в чем? Вот, скажем, для чего вы создаете объект "Запрос", если потом его не используете?
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
18.05.2010, 10:51 | 3 |
Ну группы выбрать через движения очень сложно. Проще запросом. В принципе конструктор запроса за тебя почти всю работу сделает.
получится что-то вроде. Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "Период С НачДата по КонДата; |Товар = Регистр.Продажи.ТМЦ; |Сум = Регистр.Товары.ПродСтоимость; |Кол = Регистр.Товары.Количество; |Группировка Товар; |Функция КолВо = Сумма(Кол); |Функция ИтСумма = Сумма(Сум);"; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Пока запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("СтрокаГруппы"); Если (Запрос.товар.ЭтоГруппа() = 0) и (Запрос.КолВо <>0) Тогда Цена = Запрос.ИтСумма/Запрос.КолВо; Иначе Цена = 0; КОнецЕсли; Таб.Вывести("СтрокаЭлемента"); КонецЦикла; Таб.ВывестиСекцию("Итого"); Таб.Опции(0,0,0,0); Таб.Показать("Таблица","");
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
18.05.2010, 10:55 | 4 |
Что же вы все со своим "поздним" то =)) Запрос остался, забыл удалить... пробовал и запросом делать. Вопрос в том что мне нужно по выбранной номенклатуре получить сколько продано это номенклатуры и по какой цене за период времени. Не получается у меня сам фильтр по номенклатуре. Все продажи выводит, а по одному или группе товаров не получается.
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
18.05.2010, 11:21 | 5 |
Добавить в запрос условие
Условие (Товар в ВыбНоменклатура); ВыбНоменклатура вывести на форму . для регистра - читай УстановитьФильтр()
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
18.05.2010, 11:42 | 6 |
Мой запрос выглядел один в один как Ваш, только в условии стояло "="... и не работал так же как не работает Ваш =) Может я забыл где нибудь что нибудь указать? Руки то растут из района мозгов (а они находятся далеко не в голове =)))
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
18.05.2010, 12:11 | 7 |
Покажи полный текст запроса.
а лучше выложи внешнюю обработку
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
18.05.2010, 12:25 | 8 |
ТекстЗапроса =
" |Период с (НачДата) по (КонДата); |Количество = Регистр.Продажи.Количество; |Стоимость=Регистр.Продажи.ПродСтоимость; |ТМЦ = Регистр.Продажи.ТМЦ; |Группировка ТМЦ; |Условие (ТМЦ=ВыбНоменклатура); |Функция Сумма = Сумма(Стоимость); ";
0
|
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
|
|
18.05.2010, 12:43 | 9 |
А выполнить Запрос не забыл ?
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
18.05.2010, 12:50 | 10 |
1) лучше не называй результат выполнения функции аналогично самой функции.
2) а количество суммовать не надо? 3) " = " в условии ищет четкое соответствие, а " в " ищет вхождение в том числе и в иерархию. 4) Ставь переменные измерений в запросе аналогично их положению в регистре - они не зря стоят в таком порядке. а так всё вроде правильно - может у тебя выбноменклатура обнуляется, или объявлена в модуле как переменная? проверь отладчиком перед звыполнением запроса чему равно её значение. ![]()
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
18.05.2010, 12:58 | 11 |
да, выполнил. Внешняя обработка:
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Запрос.Выполнить(ТекстЗапроса); Пока запрос.Группировка(1) = 1 Цикл Таб.ВывестиСекцию("Строка"); Товар=Запрос.ТМЦ; Стоимость=Запрос.Стоимость; Кол=Запрос.Количество;
0
|
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
|
|
18.05.2010, 13:21 | 12 |
![]() Естественно, подобное вызывает желание сотворить каламбур. И что, не подвигло заглянуть в учебник пятого класса, чтобы понять, как грамотно написать? Хоть и НОВИЧЕК, но непростительно писать так безграмотно
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
18.05.2010, 13:23 | 13 |
Лучше сохрани отчет в внешнюю обработку, переименуй в txt и выложи на форуме, а то испорченый телефон получается. Условие однозначно должно отрабатывать, ошибка похоже не в запросе. Конфа ТИС типовая?
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
23.05.2010, 13:16 | 14 |
Прошу прощения за мою безграмотность. Мой русский язык испорчен "албанским" и другими пагубными влияниями интернета. Я вижу для многих это принципиально. Впредь постараюсь синтаксических ошибок не допускать. Теперь по делу. Количество пока суммировать не надо, так как там есть и штуки и метры и упаковки, получится черти что... Проблема в том что Запрос формируется только по группам товаров, т.е. на отдельно выбранный товар он мне ничего не выдает. Конфигурация типовая. Как и просили прикрепляю *.тхт фаил.
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
23.05.2010, 15:47 | 15 |
Всё он тебе дает - просто ты поставил вывод строчки в таблицу перед тем как определил переменные ТМЦ, колво, сумма и т.д. Разумеется на момент вывода строчки они пустые , а если выбрана группа товаров - то выводятся вообще данные с предыдущей позиции запроса.
ещё один совет - нафиг тебе что-то переназначать переменным? Вставляй в таблицу непосредственно Запрос.товар, Запрос.Колво
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
27.05.2010, 09:20 | 16 |
Спасибо за помощь, впредь буду внимательнее... Теперь у меня появилась еще одна проблема, не могу получить покупную цену по этому же товару, когда начинаю формировать отчет выдает ошибку "Значение не представляет агрегатный объект (ТипНоменклатуры):8". Кстати я забыл Вам сказать что отчет внешний. Может я не из того регистра пытаюсь получить значение? Вот код:
ТекстЗапроса = "Период С НачДата по КонДата; |Товар = Регистр.Продажи.ТМЦ; |Сум = Регистр.Продажи.ПродСтоимость; |Кол = Регистр.Продажи.Количество; |ПостТовар=Регистр.ПартииНаличие.ТМЦ; |ПостЦена=Регистр.ПартииНаличие.СуммаБух; |Группировка Товар; |Группировка ПостТовар; |Функция КолВо = Сумма(Кол); |Функция ИтСумма = Сумма(Сум); |Функция ПриходС = Приход(ПостЦена); |Условие ((Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Услуга) И (Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Работа));"; Если ВыбНоменклатура.Выбран()=1 Тогда ТекстЗапроса=ТекстЗапроса+" |Условие (Товар в ВыбНоменклатура); |"; ТекстЗапроса=ТекстЗапроса+" |Условие (ПостТовар в Товар ); |"; КонецЕсли; Запрос.Выполнить(ТекстЗапроса);
0
|
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
|
|
27.05.2010, 20:36 | 17 |
![]() |Условие ((Товар.ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Услуга) И (Товар.ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Работа));";
0
|
0 / 0 / 0
Регистрация: 10.03.2010
Сообщений: 40
|
|
30.05.2010, 07:53 | 18 |
Такая же ошибка...
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
30.05.2010, 09:33 | 19 |
Запрос не понимает явное направление в тексте запроса на ссылочные данные конфигурации типа Перечисление.Тип.ВотТакой или Константа.БлаБлаБла.
Перед выполнением запроса создай переменную, в которую пропиши нужное тебе значение, её же поставь и в условие.
0
|
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
|
|
30.05.2010, 10:45 | 20 |
![]() Я родной, а потом свой кусок кода проверил в запросе на реальной базе (ТиС9.54), вставив его в отчет "ДинамикаПродаж". Родной, потому что поленился посмотреть устройство справочника (Там ТипНоменклатуры отсутствует, а ВидНоменклатуры есть) Может, у него измерение ТМЦ имеет не тип "Справочник.Номенклатура", а просто "Справочник" ?
0
|
30.05.2010, 10:45 | |
Помогаю со студенческими работами здесь
20
Никита Михалков просит 1% от цены смартфона или ноутбука Вывести названия магазинов в порядке убывания цены на товар. Девушка просит помощи у мудрых программистов (ассемблер)....
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |