|   |   | 
| 
 | Получить последнюю цену из регистра сведений | ☑ | ||
|---|---|---|---|---|
| 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) нужно еще отбор на тип цен ставить,     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |