|
Получить последнюю цену из регистра сведений | ☑ | ||
---|---|---|---|---|
0
tabarigen
02.10.15
✎
11:10
|
Здравствуйте друзья.
Пробую получить цену из регистра сведений. Хотелось бы обойтись без запроса. Полный код процедуры такой. &НаСервере Процедура ДобавитьСтрокуНеИзДокумента(СсылкаНоменклатура) НовСтрока = Объект.Товары.Добавить(); НовСтрока.Номенклатура = СсылкаНоменклатура; НовСтрока.Номер = Объект.Товары.Количество(); НовСтрока.Производитель = СсылкаНоменклатура.Производитель; НовСтрока.Страна = СсылкаНоменклатура.УАС_СтранаПроизводителя; НовСтрока.ЕдиницаИзмерения = СсылкаНоменклатура.ЕдиницаИзмерения; НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовСтрока.Количество = 1; //НовСтрока.Цена = 0; Отбор = Новый Структура; Отбор.Вставить("Номенклатура", СсылкаНоменклатура); Дата = ТекущаяДата(); НовСтрока.Цена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор); КонецПроцедуры Однако Цена не получается. Что делаю не так? |
|||
1
eklmn
гуру
02.10.15
✎
11:12
|
всё
|
|||
2
xaozai
02.10.15
✎
11:14
|
(0) Посмотри, что вот это возвращает:
РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор) |
|||
3
ibreiter
02.10.15
✎
11:27
|
По этой номенклатуре в регистре есть вообще записи?
|
|||
4
Maniac
02.10.15
✎
11:28
|
РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор);
вернет массив записей. тк по этой номенклатуре может быть еще валом записей - типа разные характеристики, типы цен и так далее |
|||
5
eklmn
гуру
02.10.15
✎
11:34
|
(4) а если у него самописка с 1 измерением? )
|
|||
6
Maniac
02.10.15
✎
11:35
|
(5) судя по тому что автор такую фигню пишет - то самописка там еще та.
|
|||
7
Maniac
02.10.15
✎
11:35
|
в любом случае метод не возвращает ни в коем случае значение ресурса. НИКАК
|
|||
8
Одинесю
02.10.15
✎
11:36
|
(4) Структуру, а не массив )
|
|||
9
Альбатрос
02.10.15
✎
11:37
|
(8) +1
|
|||
10
Альбатрос
02.10.15
✎
11:39
|
И я бы юзал СрезПоследних(), но она тоже возвращает ТЗ
|
|||
11
Одинесю
02.10.15
✎
11:44
|
Посмотри, что у тебя в РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор); в Отборе.
|
|||
12
tabarigen
02.10.15
✎
11:45
|
(11) Обработка внешняя, точка останова не срабатывает почему то.
|
|||
13
Альбатрос
02.10.15
✎
11:47
|
(12) СП открой и почитай
|
|||
14
User_Agronom
02.10.15
✎
11:48
|
(5) Всё равно массив вернёт. С одним элементом.
|
|||
15
zhig75
02.10.15
✎
11:50
|
Цены = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор);
НоваяСтрока.Цена = Цены.Цена; |
|||
16
zhig75
02.10.15
✎
11:51
|
+(15) ПолучитьПоследнее возвращает массив.
|
|||
17
zhig75
02.10.15
✎
11:52
|
+(16) Брррр Структуру.
|
|||
18
Альбатрос
02.10.15
✎
11:53
|
(16) Млять...
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>) ПолучитьПоследнее (GetLast) Синтаксис: ПолучитьПоследнее(<КонецПериода>, <Отбор>) Параметры: <КонецПериода> (необязательный) Тип: Дата; МоментВремени; Граница. Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра. <Отбор> (необязательный) Тип: Структура. Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение. Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение. Если параметр не указан, то отбор не используется. Возвращаемое значение: Тип: Структура. Возвращает структуру, содержащую значения ресурсов. |
|||
19
Maniac
02.10.15
✎
11:53
|
Пипец. Все обкуренные чтоли.
|
|||
20
zhig75
02.10.15
✎
11:54
|
(19) Пятница!!!
|
|||
21
ibreiter
02.10.15
✎
11:54
|
(12) База на сервере?
|
|||
22
tiago
02.10.15
✎
12:21
|
(0)Может так:
РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор).ЦЕНА (или что-то там...) ? |
|||
23
tabarigen
02.10.15
✎
12:52
|
(21) да.
|
|||
24
tiago
02.10.15
✎
12:58
|
(23) написанное в (11) читал/проверял? Что возвращает?
|
|||
25
ibreiter
02.10.15
✎
12:58
|
(23) Тогда нужна отладка на сервере или в файловой копии отлаживайте
|
|||
26
tabarigen
02.10.15
✎
13:17
|
(11) посмотрел в отладчике на файловой копии. в отборе ссылка на номенклатуру,
|
|||
27
tabarigen
02.10.15
✎
13:19
|
В возвращаемом массиве нулевая цена,
https://yadi.sk/i/XN9ZZK9yjU2YA хотя розничная цена у него 12 руб |
|||
28
MSOliver
02.10.15
✎
13:20
|
а может всё таки запросом...
|
|||
29
tixis
02.10.15
✎
13:25
|
(0) почему не хотите запросом?
РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор); - Это по сути тоже запрос. |
|||
30
tiago
02.10.15
✎
13:26
|
(27) Откуда информация про 12 руб.? Может стоит в пользовательском в регистре глянуть, может хотели поставить 12, а документ(регистратор) забыли провести?
|
|||
31
Одинесю
02.10.15
✎
13:28
|
А какая структура у регистра, в самом регистре есть цена номенклатуры в 12 рублей?
|
|||
32
tabarigen
02.10.15
✎
13:36
|
(28) Запросом так запросом, просто хотелось упростить немного.
|
|||
33
tabarigen
02.10.15
✎
13:37
|
(29) Вообще без разницы как, интересно просто. Почему не получилось через регистр.
|
|||
34
Альбатрос
02.10.15
✎
13:39
|
(33) Самописка у тебя?
|
|||
35
tabarigen
02.10.15
✎
13:40
|
(34) Нет Управление Аптечной Сетью, по сути та же УТ11.
|
|||
36
Одинесю
02.10.15
✎
13:45
|
(33) А у тебя не получится и через запрос, надо с регистром разобраться и с записью в 12 рублей.
|
|||
37
tabarigen
02.10.15
✎
13:57
|
(36)И в самом деле, через запрос тоже Null дает,
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЗапроса, Номенклатура = &СсылкаНаНоменклатуру) КАК ЦеныНоменклатурыСрезПоследних"; Запрос.УстановитьПараметр("ДатаЗапроса", КонецДня(ТекущаяДата())); Запрос.УстановитьПараметр("СсылкаНаНоменклатуру", СсылкаНоменклатура); Результат = Запрос.Выполнить().Выгрузить(); Может из за того что Серии не указываю? |
|||
38
Альбатрос
02.10.15
✎
13:58
|
(37) Может из-за того, что в РС действительно нет цены для этой позиции?
|
|||
39
Одинесю
02.10.15
✎
13:59
|
(37) Ты должен все измерения, которые используешь передать в запрос, поэтому и говорю - посмотри структуру регистра
|
|||
40
Альбатрос
02.10.15
✎
13:59
|
(39) Зачем?
|
|||
41
tabarigen
02.10.15
✎
14:00
|
||||
42
tabarigen
02.10.15
✎
14:01
|
(39) Тогда помогите передать в запрос Серию.
Надо из справочника СерииНоменклатуры, передать последнию серию. Исходные данные ссылка номенклатуры. |
|||
43
Альбатрос
02.10.15
✎
14:02
|
(42) не надо туда ее передавать
|
|||
44
Альбатрос
02.10.15
✎
14:03
|
(41) Это точно одна и та же номенклатура?
|
|||
45
1sanekmaloi1
02.10.15
✎
14:03
|
Ветку в пятничную надо переименовать
|
|||
46
Альбатрос
02.10.15
✎
14:05
|
(45) Мне уже самому интересно, почему у него цена не выходит. Я уже даже на работе ради истины задержался
|
|||
47
tabarigen
02.10.15
✎
14:05
|
(44) одна и та же. Без сомнений. А что не так?
|
|||
48
tabarigen
02.10.15
✎
14:05
|
(46) Залетай по тимвьюверу)
|
|||
49
Одинесю
02.10.15
✎
14:05
|
(43) Если у него несколько серий - он нескольких серий и выдаст цены
|
|||
50
Альбатрос
02.10.15
✎
14:06
|
(47) Может это дубли. Коды позиций в (41) во всех строчках одинаковые?
|
|||
51
Альбатрос
02.10.15
✎
14:06
|
(49) Он у него вообще ни одной цены не выдает. А без указаний серий должен все выдать
|
|||
52
tabarigen
02.10.15
✎
14:12
|
(51) Коды одинаковые. Видно же что в регистре цены по одному товару. Цена производителя, Цена закупки и розничная Цена.
|
|||
53
tixis
02.10.15
✎
14:14
|
(51) ты подключался по тимвиверу или предположения высказываешь?
|
|||
54
Альбатрос
02.10.15
✎
14:14
|
(53) Предположения. У нас тимвиверы запрещены
|
|||
55
tixis
02.10.15
✎
14:15
|
(52) Консоль запросов есть? Давай тимвивер
|
|||
56
tixis
02.10.15
✎
14:15
|
мне уже тоже еинтересно
|
|||
57
Альбатрос
02.10.15
✎
14:16
|
(56) Сдаю смену ))) я домой, потом зайду из дома, гляну, чего вы выяснили
|
|||
58
tixis
02.10.15
✎
14:17
|
(57) так ТС пока молчит, может тоже уже дома))
|
|||
59
tabarigen
02.10.15
✎
14:20
|
||||
60
tabarigen
02.10.15
✎
14:20
|
лови, я тут еще)
|
|||
61
tabarigen
02.10.15
✎
14:21
|
298 747 121
9f52px |
|||
62
tixis
02.10.15
✎
14:27
|
Время кончилось
|
|||
63
tixis
02.10.15
✎
14:27
|
все работает
|
|||
64
tixis
02.10.15
✎
14:27
|
все показывает
|
|||
65
Одинесю
02.10.15
✎
14:27
|
(63) и че было?
|
|||
66
tixis
02.10.15
✎
14:28
|
(61) у тебя же возвращается таблица значений и первая строка тебе и показывает цеу
|
|||
67
tixis
02.10.15
✎
14:29
|
(65) все там показывает, просто Запрос.Выполнить.Выгрузить() и видать пытался сразу цену получить без обхода. Я точно не знаю, у меня тим вивер 5 минут и выкинул
|
|||
68
tixis
02.10.15
✎
14:32
|
ТС ты где, в чем проблема то? запрос же все верно возвращает
|
|||
69
Одинесю
02.10.15
✎
14:34
|
(67) Т.е. он берет первую цену в коллекции, я же говорил, что надо все измерения в отбор делать, тогда он найдет нужную.
|
|||
70
tixis
02.10.15
✎
14:37
|
(69) Я успел увидеть только то, что запрос работает, и правильно возвращает цену (12 рублей) и в результате, который получается Результат = Запрос.Выполнить.Выгрузить() одна строка с ценой 12 рублей, про какой null говорил ТС не знаю.
|
|||
71
magicSan
02.10.15
✎
14:39
|
НовСтрока.Цена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата+1, Отбор); попробуй
|
|||
72
kudlach
02.10.15
✎
14:43
|
Интересно, в Отборе кроме Номенклатуры был ли тип цен ?...
Регистр посуточно фиксит или по времени записи ?.... Про пачку измерений сказали.. |
|||
73
tabarigen
02.10.15
✎
15:52
|
&НаСервере
Процедура ДобавитьСтрокуНеИзДокумента(СсылкаНоменклатура) НовСтрока = Объект.Товары.Добавить(); НовСтрока.Номенклатура = СсылкаНоменклатура; НовСтрока.Номер = Объект.Товары.Количество(); НовСтрока.Производитель = СсылкаНоменклатура.Производитель; НовСтрока.Страна = СсылкаНоменклатура.УАС_СтранаПроизводителя; НовСтрока.ЕдиницаИзмерения = СсылкаНоменклатура.ЕдиницаИзмерения; НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; НовСтрока.Количество = 1; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЗапроса, Номенклатура = &СсылкаНаНоменклатуру) КАК ЦеныНоменклатурыСрезПоследних |ГДЕ | ЦеныНоменклатурыСрезПоследних.Номенклатура = &СсылкаНаНоменклатуру"; Запрос.УстановитьПараметр("ДатаЗапроса", КонецДня(ТекущаяДата())); Запрос.УстановитьПараметр("СсылкаНаНоменклатуру", СсылкаНоменклатура); // еще раз Результат = Запрос.Выполнить().Выгрузить(); // останови и покажи параметры которые устанавливаешь Если Не Результат.Количество() = 0 Тогда НовСтрока.Цена = Результат[0].Цена; Иначе НовСтрока.Цена = 0; КонецЕсли; НовСтрока.Сумма = НовСтрока.Цена * НовСтрока.Количество; КонецПроцедуры Всем спасибо за помощь. Расходимся)) |
|||
74
Tatitutu
02.10.15
✎
16:25
|
(73) тебя уволят. Бред написан
|
|||
75
Tatitutu
02.10.15
✎
16:26
|
(73) скриншот раскрытого регистра "ЦеныНоменклатуры" дай глянуть
зачем два условия |
|||
76
tixis
02.10.15
✎
17:24
|
(73) нужно еще отбор на тип цен ставить,
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |