![]() |
![]() |
![]() |
|
В Регистре сведений ЦеныНоменклатуры нет поля период, как получить срез последних цен | ☑ | ||
---|---|---|---|---|
0
rassini
29.09.09
✎
10:02
|
В Регистре сведений ЦеныНоменклатуры нет поля период (есть данные по документу создавшему запись в регистре), как получить
срез последних цен по документа регистраторам данного регистра? или где еще можно найти последние установленные цены на номенклатуры? В справочнике Номенклатуры цен нет. Справочник большой более 20тыс номенклатур |
|||
1
НЕА123
29.09.09
✎
10:04
|
вот ведь он... кризис...
Период и тот уперли |
|||
2
Леха Дум
29.09.09
✎
10:05
|
если рег периодический то период есть - ищи лучше
|
|||
3
rassini
29.09.09
✎
10:06
|
Регистр периодический - В пределах дня.
Используемый запрос: Процедура КнопкаВыполнитьНажатие(Кнопка) ЗапросПример(); КонецПроцедуры Процедура ЗапросПример() Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ЦеныПокупкиСрезПоследних.Период, | ЦеныПокупкиСрезПоследних.Номенклатура.Наименование , | ЦеныПокупкиСрезПоследних.Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Ко нецПериода, ) КАК ЦеныПокупкиСрезПоследних"; Запрос.УстановитьПараметр("НачалаПериода",НачалоДн я(НачПериода)); Запрос.УстановитьПараметр("КонецПериода",КонецДня( КонПериода)); Результат=Запрос.Выполнить(); ТабличноеПоле1=Результат.Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); КонецПроцедуры Результат: Пустое табличное поле |
|||
4
degot
29.09.09
✎
10:14
|
попробуй убрать параметры ВТ
|
|||
5
Живой Ископаемый
29.09.09
✎
10:18
|
2(3) и из-за того что пустое табличное поле ты подумал что нет поля Период? где тебя так учили думать? если бы не было поля Период - у тебя бы просто запрос не выполнился бы.
|
|||
6
Живой Ископаемый
29.09.09
✎
10:20
|
и вообще - совет всем-всем-всем, у кого их копро-код возвращает пустой результат запроса - выполняйте его сначала в консоли и безо всяких условий и ограничений. и только если он и в таком случае не выполняется - идите на мисту и вопите что чего-то нет где-то
|
|||
7
Ненавижу 1С
гуру
29.09.09
✎
10:23
|
(3) у меня все работает, что я делаю не так
|
|||
8
Ненавижу 1С
гуру
29.09.09
✎
10:23
|
может и цен нет?
|
|||
9
Ненавижу 1С
гуру
29.09.09
✎
10:24
|
ты даты то заполняешь?
|
|||
10
Живой Ископаемый
29.09.09
✎
10:25
|
Часто 1Сники похожи на алкаша из анекдота, который что-то ищет ночью что-то под фонарем.. Унего милиционер интересуется: Что ищите, товарищ? -- Ключи, отвечает алкаш.. А де вы их потеряли - там, махает рукой куда-то в темноту.. А почему ищите здесь? Ну здесь же светло!
|
|||
11
rassini
29.09.09
✎
10:29
|
Цены есть, НачПериод и КонПериод через поля ввода данных.
|
|||
12
rassini
29.09.09
✎
10:35
|
Возможно нет соответствия между получаемыми данными и колнками табличной части?
|
|||
13
Andry888
29.09.09
✎
10:36
|
можете у тебя КонецПериода<минимального периода в регистре?
|
|||
14
Ненавижу 1С
гуру
29.09.09
✎
10:36
|
1. консоль попробуй
потом уже проверь, есть ли источник данных у элемента формы |
|||
15
Живой Ископаемый
29.09.09
✎
10:37
|
(14)+ и да господи - открыть форму списка РС и посмотреть есть ли в нем строки.
|
|||
16
rassini
29.09.09
✎
10:52
|
и да господи - открыть форму списка РС и посмотреть есть ли в нем строки.
есть строки |
|||
17
rassini
29.09.09
✎
10:53
|
посмотрел РС
есть там поле Период. |
|||
18
Живой Ископаемый
29.09.09
✎
10:54
|
Значит все, твоя ветка не имеет право на существование.
|
|||
19
Живой Ископаемый
29.09.09
✎
10:54
|
и кроме того ты не сделал самого главное, что было повторено многожды.
|
|||
20
DUDE
29.09.09
✎
10:59
|
Вставлю свои 5 копеек: не стоит получать наименование объекта, если, по крайней мере, не уверен, что не может быть в справочнике дублей по нему.
+ Если уж нет желания выполнять в консоли, то хотя бы делай предварительно выгрузку в ТЗ. |
|||
21
mikecool
29.09.09
✎
11:00
|
пробел в запросе в имени параметра убери :)
|
|||
22
rassini
29.09.09
✎
14:33
|
предварительно выгрузку в ТЗ
подсказать можете как это осуществить? |
|||
23
rassini
29.09.09
✎
16:09
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ЗапросПример(); КонецПроцедуры Процедура ЗапросПример() Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ЦеныПокупкиСрезПоследних.Период, | ЦеныПокупкиСрезПоследних.Номенклатура, | ЦеныПокупкиСрезПоследних.Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныПокупкиСрезПоследних | ГДЕ | ЦеныПокупкиСрезПоследних.Период >= &НачалоПериода И ЦеныПокупкиСрезПоследних.Период <= &КонецПериода | СГРУППИРОВАТЬ ПО | ЦеныПокупкиСрезПоследних.Номенклатура"; Запрос.УстановитьПараметр("НачалоПериода",НачалоДня(НачалоПериода)); Запрос.УстановитьПараметр("КонецПериода",КонецДня(КонецПериода)); Результат=Запрос.Выполнить(); ТабличноеПоле1=Результат.Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); КолСтрок=ТабличноеПоле1.Количество(); КонецПроцедуры Все работает. Но номенклатура повторяется. Через СрезПоследних выходят все записи. |
|||
24
Живой Ископаемый
29.09.09
✎
16:17
|
понятно... значит в консоли запросов так и не посмотрел... думаешь будут продолжать подсказывать? если ты не выполняешь то, что тебе говорят?
|
|||
25
rassini
29.09.09
✎
16:40
|
Окончательный вариант рабочий.
Всем спасибо за советы: хорошие и не очень :) Процедура КнопкаВыполнитьНажатие(Кнопка) ЗапросПример(); КонецПроцедуры Процедура ЗапросПример() Запрос=Новый Запрос(); Запрос.Текст="ВЫБРАТЬ | ЦеныПокупкиСрезПоследних.Номенклатура, | ЦеныПокупкиСрезПоследних.Цена, | ЦеныПокупкиСрезПоследних.ЕдиницаИзмерения, | ЦеныПокупкиСрезПоследних.ПроцентСкидкиНаценки, | ЦеныПокупкиСрезПоследних.ТипЦен | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ) КАК ЦеныПокупкиСрезПоследних"; Запрос.УстановитьПараметр("НачалоПериода",НачалоДня(НачалоПериода)); Запрос.УстановитьПараметр("КонецПериода",КонецДня(КонецПериода)); Результат=Запрос.Выполнить(); ТабличноеПоле1=Результат.Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); КолСтрок=ТабличноеПоле1.Количество(); КонецПроцедуры |
|||
26
Живой Ископаемый
29.09.09
✎
16:45
|
То есть в принципе ничем от (3) кроме отсутствия пробела в имени парметра не отличается... По-прежнему зачем-то лишний параметр.. Так и в чем же у вас была проблема? Вот если у кого-то будет аналогичная - что вы ему подскажите?
|
|||
27
rassini
30.09.09
✎
08:02
|
Параметр НачалоПериода впринципе не нужна.
Проблема все таки осталась. При выгрузке в Excell списка было обнаржено что есть дублирующиеся записи, но с разными ценами. |
|||
28
rassini
30.09.09
✎
08:18
|
Выдает дублирующиеся записи. С чем может быть связано что срезпоследних выдает все записи, из-за этого через обработку ЗагрузкаИзТабличного документа (через Excell файл) в табличную часть документа УстановкаЦенНоменклатуры не проходит. Контроль записей показывает не однозначные записи.
|
|||
29
rasswet
30.09.09
✎
08:25
|
(28) упорядочь и посмотри, что повторяется.
(24) (26) +100 |
|||
30
rassini
30.09.09
✎
08:47
|
Повторяются Наименования Номенклатуры.
В РС следующая картина, думаю что она правильная, хотя не с чем сравнить. Номенклатура повторяется (приходят товары по разным ценам, цена изменяется во времени). Отличаются строки лишь регистрирующими документами. Логично предположить что СрезПоследних должен выдать из скажем 4 повторяющихся Номенклатур одну последнюю запись (у той которой поле Период будет самой большой-поздней). Не понимаю почему у меня СрезПоследних выдает все 4 записи (из примера) с разными полями Период (получаются в результате запроса все даты, когда происходили изменения). |
|||
31
rassini
30.09.09
✎
08:48
|
упорядочь и посмотри, что повторяется.
Сгруппировать ПО Номенклатуа? |
|||
32
НЕА123
30.09.09
✎
09:02
|
(31)
тип цен разный. |
|||
33
DUDE
30.09.09
✎
09:15
|
Имхо, автору нужно немного почитать про функцию СрезПоследних, а также про структуру регистров. Функция получает последнее значение по каждой комбинации измерений регистра.
|
|||
34
rassini
30.09.09
✎
10:32
|
Что значить по комбинации?
В РС набор строк, отличающихся периодом. тип цен разный. Разный есть Розничные есть оптовые. ТО есть документ установка цен может установить только один тип цен? |
|||
35
ZZeRRo
30.09.09
✎
10:54
|
У регистра Цены номенклатуры 3 измерения: Период, Номенклатура, Тип Цен - вот по каждой паре Номенклатура/ТипЦен тебе и выдается по последней записи.
Например так: Номенклатура1, ТипЦен1, Цена1 Номенклатура1, ТипЦен2, Цена2 Номенклатура1, ТипЦен3, Цена3 Номенклатура2, ТипЦен1, Цена4 |
|||
36
ZZeRRo
30.09.09
✎
10:56
|
И еще вариант... Может у тебя номенклатура просто дублируется?
|
|||
37
rassini
30.09.09
✎
11:05
|
Т.е. РС содержит записи:
Период Номенклатура Цена 12.12.09 Спички 1 12.13.09 Спички 2 12.14.09 Спички 1 СрезПоследних какую запись выдаст? |
|||
38
rassini
30.09.09
✎
11:07
|
Если перед загрузкой я укажу всем строкам тип цен один и тот же, к примеру РОзничная. Как избавится от дублирующихся записей призагрузке через обработку ЗагрузкаИзТабличногоДокумента?
|
|||
39
rassini
30.09.09
✎
11:52
|
Возможно надо установить отбор по типу цен. В помщнике смотрел ничего не нашел. Как создать отбор по типам цен в процедуре срезпоследних?
|
|||
40
tsr
30.09.09
✎
12:06
|
(0) 8.2 юзай, там можно посмотреть стандартные реквизиты
|
|||
41
Zapal
30.09.09
✎
12:09
|
парень, программирование - это не твоё
бросай пока не поздно |
|||
42
rassini
30.09.09
✎
12:52
|
Уже поздно бросать :)
Надо сделать :) в любом случае. |
|||
43
DUDE
30.09.09
✎
15:46
|
Если ты хочешь получать последнее движение в регистре по каждой номенклатуре "не заморачиваясь" тем, как работают регистры в 8.Х, то можно сделать так:
для каждой нужной ном-ры выбирать движения из физ. таблицы, оставляя лишь последнее (просто, просто, но некрасиво), типа ВЫБРАТЬ ПЕРВЫЕ 1 РС.Номенклатура, РС.Период, РС.Цена ИЗ РегистрСведений.ЦеныНоменклатуры КАК РС ГДЕ РС.Номенклатура = &ТекущаяНом УПОРЯДОЧИТЬ ПО РС.Период УБЫВ или выбрать ВСЕ движения, упорядочить по периоду и сгруппировать по ном-ре, а потом в цикле обходить: ВЫБРАТЬ РС.Номенклатура, РС.Период, РС.Цена ИЗ РегистрСведений.ЦеныНоменклатуры КАК РС УПОРЯДОЧИТЬ ПО РС.Период УБЫВ ИТОГИ ПО РС.Номенклатура ... Пока ВыборкаПоНом.Следующий() Цикл ВыборкаПоТекНом = ВыборкаПоНом.выбрать(); Если ВыборкаПоТекНом.Следующий() Тогда // получили первую запись выборки по дан. ном-ре, обрабатываем КонецЦикла; КонецЦикла; Как-то так. |
|||
44
Живой Ископаемый
30.09.09
✎
15:50
|
(34) Ну вот тебе и отгадка... Тип цен разный.. Был бы одинаковый - показывал бы только одну запись...
Виртуальная Таблица Срез последних выдает по одной записи на КАЖДУЮ уникальную комбинацию из измерений... Номенклатура у тебя одна и таже, но типы цен - разные, значит у тебя присутствуют 4 уникальные комбинации... СрезПоследних честно их возвращает. |
|||
45
Живой Ископаемый
30.09.09
✎
15:51
|
2(39) если ты пишешь отчет конструктором, то тебе нужно стать на первую закладку, в колонку посредине на таблицу и открыть параметры виртуальной таблицы... Там будет поле условие...
Наложить условие по типу цен. |
|||
46
rassini
30.09.09
✎
16:14
|
Пишу не отчет а обработку
|
|||
47
Живой Ископаемый
30.09.09
✎
17:34
|
2(46) И что? в обработке не вызывается констурктор запросов? Что за нелепый аргумент!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |