|
v7: Соотношение закупочной и розничной цен | ☑ | ||
---|---|---|---|---|
0
Xilen
20.01.15
✎
00:04
|
Приветствую!
Дали задание, сделать соотношение цен закупочных и розничных в базе 1С. Как я понял, закупочные цены лежат в Документ.ПоступлениеТМЦ, а розничные в Справочник.Цены, который подчинен Номенклатуре. Хотя, я могу ошибаться с закупочными ценами, но в карточке номенклатуры я их не нашел. Лишь в общем журнале документах, документах поступления тмц. Соответственно в ПоступлениеТМЦ есть табличная часть, в которой указывается Номенклатура, Цена и т.д. И собственно вопрос: как правильно организовать сверку? Ибо: Процедура Сформировать() ДатаНачала = глЗначениеПоУмолчанию("ОсновнаяДатаНачалаОтчетов"); ДатаКонца = ПолучитьДатуТА(); Если глПроверкаДаты(ДатаНачала,ДатаКонца)=0 Тогда Возврат; КонецЕсли; СпрНом = СоздатьОбъект("Справочник.Номенклатура"); СпрНом.ПорядокНаименований(); СпрНом.ВыбратьЭлементы(); ДокТМЦ = СоздатьОбъект("Документ.ПоступлениеТМЦ"); ДокТМЦ.ВыбратьДокументы(); Если ((ПустоеЗначение(ДатаНачала)=0) и (ПустоеЗначение(ДатаКонца)=0)) Тогда //если не пустое значение ДокТМЦ.ВыбратьДокументы(ДатаНачала, ДатаКонца); // за указанный период Иначе ДокТМЦ.ВыбратьДокументы(,); // за весь период КонецЕсли; Пока (ДокТМЦ.ПолучитьДокумент()=1) Цикл Пока (СпрНом.ПолучитьЭлемент()=1) Цикл Если СпрНом.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Если (ДокТМЦ.Номенклатура = СпрНом.ТекущийЭлемент()) Тогда НомНам = СпрНом.Наименование; НомЦена = СпрНом.Цена; ДокЦена = ДокТМЦ.Цена; Соотн = НомЦена / ДокЦена; Сообщить(НомНам + " | " + НомЦена + " | " + ДокЦена + " | " + Соотн); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры не срабатывает. Пробовал разные варианты условия, но тоже не работают. Пришел к выводу, что не правильно обращаюсь или же условие в корне неверно задано. Помогите пожалуйста, объясните начинающему) |
|||
1
floody
20.01.15
✎
00:10
|
Под розничными ценами может подразумеваться как цена из справочника, так и цена, по которой товар переместили в розницу.
А под закупочной - как цена из поступления, так и цена из справочника. И что же на самом деле нужно? Цена кстати - реквизит периодический обычно (в типовых). |
|||
2
Xilen
20.01.15
✎
00:13
|
(1) Препод сказал так: "Возьми и сделай прогонку по справочникам, сделай соотношение розничной цены и закупочной цены". Я понял так, что взять цену, по которой магазин продает товар, и соотнести к цене, по которой он этот же товар и закупает.
|
|||
3
floody
20.01.15
✎
00:16
|
(2) Если все цены есть в справочнике "Цены", тогда можно из него все взять. Не увидел у вас правильной работы с подчиненным справочником "Цены", да еще и с периодическим реквизитом "Цена".
Торговля и склад - я правильно понял? |
|||
4
floody
20.01.15
✎
00:19
|
Если в справочнике есть цены и они актуальны, тогда в тис есть функция глПолучитьЦену(). Посмотрите ее параметры внимательно и вам этого хватит для вашего задания.
|
|||
5
floody
20.01.15
✎
00:21
|
Хотя правильней конечно же работать запросами, но написание запросов в 7.7 несколько сложновато для новичка, я считаю.
|
|||
6
Xilen
20.01.15
✎
00:22
|
(3) Да, ТиС, 1С 7.7. Нет, в справочнике Цены только те цены, по которым фирма продает товары, как я понял. Я залез в карточку номенклатуры, на форме кнопка "Справочники" -> "Цены", выдает таблицу "Тип" (Розничные) "Цена" (сумма) "Валюта" (руб) "ЕдиницаИзмерения" (пар) и "% наценки" (пусто).
Вот я и не знаю, как правильно и даже куда обратиться |
|||
7
Wirtuozzz
20.01.15
✎
00:26
|
1:2 в редком случае когда 1:3. Все понятно.
|
|||
8
Xilen
20.01.15
✎
00:27
|
(7) Соотношение то примерно так и есть) Смотрел по поступлениям тмц и по цене в карточке товара) Но это же надо как то показать)
|
|||
9
Xilen
20.01.15
✎
00:31
|
(5) Можешь подсказать тогда, как реализовать решение задачи?) А то я не совсем тебя понимаю)
|
|||
10
floody
20.01.15
✎
00:32
|
В регистре партий у измерения "партия" есть реквизит "закупочная цена".
посмотри, можешь ли его достать. тут лучше запросом. но если не знаешь пока запросы, то можно и из регистра доставать объектной техникой. хотя это запрос в цикле получится. |
|||
11
Xilen
20.01.15
✎
00:37
|
(10) Есть регистр ПартияНаличие, где в измерениях есть ЦенаПрод, в реквизитах ПродСтоимость
А с запросами я еще не знаком. |
|||
12
Xilen
20.01.15
✎
00:42
|
Изначально я думал брать из документов поступления ТМЦ по номенклатуре (реквизит в табличной части) и соотносить к цене в документе. Только реализация не получается)
|
|||
13
floody
20.01.15
✎
00:47
|
(11) В регистре ПартииНаличие есть измерение Партия, у которого есть реквизит ЗакупочнаяЦена.
Если с регистрами не знаком, доставай из документов. |
|||
14
Xilen
20.01.15
✎
00:50
|
(13) в этом регистре измерение Партия является справочником Партия с реквизитом "ЗакупочнаяЦена" )
Не знаком) Поэтому я и спросил, как обратиться к документу поступление тмц и сделать соотношение цен) |
|||
15
floody
20.01.15
✎
00:52
|
(14) Нарисуй блок-схемку сначала. Вот выберешь ты документ, в нем 5 товаров. Как-то из должен обойти. Выберешь следующий документ - в нем 3 товара из первого документа повторяется, и еще 1 товар новый. Дальше что? В общем, методом тыка думаю не получится. Подумай сначала.
|
|||
16
floody
20.01.15
✎
00:52
|
из = их*
|
|||
17
Xilen
20.01.15
✎
00:58
|
(15) Вот ты меня сейчас в тупик поставил)))
|
|||
18
Xilen
20.01.15
✎
01:14
|
Кстати, заглянул в справочник партии - он пуст)
|
|||
19
Cap_1977
20.01.15
✎
01:16
|
(18) Как смотрел пустоту справочника ?
|
|||
20
floody
20.01.15
✎
01:16
|
Если вместо последней закупочной цены устроит средняя себестомость, то возьми из регистра партий. Но тут запросом желательно.
Помочь? |
|||
21
Xilen
20.01.15
✎
01:18
|
(20) Буду признателен, а то я не соображаю как... =(
|
|||
22
floody
20.01.15
✎
01:20
|
(21) А вы вообще каким образом к 1С относитесь? Не было желания поизучать для начала? Начать с задачек простых.
|
|||
23
Xilen
20.01.15
✎
01:23
|
(22) Начал изучать. Но т.к. препод мне поменял тему курсовой на эту (ибо с прошлой он ошибся, как он сказал), а сдать надо до 24 января, то времени на основы, мягко говоря, не хватает.
Однако в университете изучал с++ |
|||
24
floody
20.01.15
✎
01:31
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Номенклатура = Регистр.ПартииНаличие.Номенклатура; |Количество = Регистр.ПартииНаличие.Количество; |СуммаРуб = Регистр.ПартииНаличие.СуммаРуб; |Функция КоличествоКонОст = КонОст(Количество); |Функция СуммаРубКонОст = КонОст(СуммаРуб); |Группировка Номенклатура без групп; |Условие(Количество <> 0); |Условие(СуммаРуб <> 0); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ДатаТА = ПолучитьДатуТА(); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Номенклатура Сообщить("Среднее отношение цен на товар: " + Запрос.Номенклатура + " равно " + глПолучитьЦену(Запрос.Номенклатура, ТипРозничнойЦены, ДатаТА)*Запрос.КоличествоКонОст/Запрос.СуммаРубКонОст); КонецЦикла; |
|||
25
floody
20.01.15
✎
01:31
|
В этом куске конечно есть недоделки, неоптимальности, и условности. Но я и не хотел за вас все решать. Дальше все в ваших руках.
|
|||
26
floody
20.01.15
✎
01:35
|
Среднее отношение на товар: Пылесос BOSCH GAS 25 равно 1.34052864950331694909
Среднее отношение на товар: Пылесос BOSCH GAS 50 равно 1.33780316980656940051 Среднее отношение на товар: Пылесос BOSCH GAS 50М равно 1.30142311462664368049 вот пример вывода |
|||
27
Xilen
20.01.15
✎
01:36
|
(25) Огромное спасибо! Завтра буду пробовать и пытаться!)
|
|||
28
Злопчинский
20.01.15
✎
01:42
|
во-первых - надо внимательно втыкнуть какая закупочная цена указывается в справочнике партий - там это указывается тупо числом. а содержит ли это число НДС или нет? скорее всего да - и с какой розничной ценой ее соотносить - ибо в общем случае розничная цена может быть как рассчитываемая динамически так и хранящаяся в базе - и эта цена в общем случае может также быть с ндс и без.
в той постановке задач - особенно фраза "ПРОГОНИ ПО СПРАВОЧНИКАМ" - подразумевает тупой перебор по выборке (или запросом) номенклатуры, для каждой номенклатуры получить цену с типом "Закупочная" и "Розничная" - посчитать соотношение ГДЕ /ЕГО МОЖНО ОПРЕДЕЛИТЬ (то есть там где одновременно определены обе цены для номенклатуры). Для гарантированной оценки пять по куросвики надо задавить препода интеллектом: 1. в случае если не определена закупочная цена - в качестве закупочной вытащить последнюю цену поступления из дока поступления, 2. в качестве розничной если она не определена - вытащить из регистра остатков по розничному складу из измерения ЦенаПрод (или вытащить из документа отчет ККМ) Вариант без задавливания препода интеллектом реализуется примерно строк в 20... и то - большая часть - красивая печтаная форма, если выводить в табо то как раз наверное строк 20... |
|||
29
Злопчинский
20.01.15
✎
01:45
|
в (24) есть тонкость в том, что будет вывод не для всей номенклатуры, а только той что есть на остатках
точно также как ив (28) - есть тонкости и недомолвки.. ;-) для корректной работы следует сделать некоторые допущения, например: что и закупочный тип цен и розничный тип цен - с НДС, в противном случае - надомодифицировать их сравненеи ну и т.д. успехов!! |
|||
30
Xilen
20.01.15
✎
01:48
|
(29) а можно по подробней про "без задавливания препода интеллектом" ?)
|
|||
31
Злопчинский
20.01.15
✎
04:15
|
Внимание, я здесь! ;-)
ПРи нечеткой постановке задачи в части исходных данных - а у тебя как раз такая ситуация - хз что имел в виду препод: 1. топать к преподу и уточнять исходные данные в части: что понимается и откуда брать закупочные и розничные цены (вангую что из справочника цен) 2. или самому принимать решения - то ли самостоятельно считать п.1 правильным, то ли шуршать по (28), (20) и т.д. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |