Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 06.10.2015
Сообщений: 81
1
1C 8.x

Сломалась выборка

22.01.2019, 10:37. Показов 1053. Ответов 2
Метки нет (Все метки)

Есть такая функция
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Функция ПолучитьЦену(СсылкаНоменклатура, СсылкаТипЦены, НаДату) Экспорт
    
    Перем Цена;
    
    ТипЦеныПоУмолчанию = Справочники.ТипыЦенНоменклатуры;
    //Закупочная цена
    СсылкаТипЦеныПоУмолчанию = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закуп");
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЦеныСрезПоследних.Цена Как Цена, ЦеныСрезПоследних.Номенклатура
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату) КАК ЦеныСрезПоследних
    |ГДЕ
    |    ЦеныСрезПоследних.Номенклатура = &Номенклатура
    |    И ЦеныСрезПоследних.ТипЦен = &ТипЦен";
    
    Запрос.УстановитьПараметр("Номенклатура", СсылкаНоменклатура);
    Запрос.УстановитьПараметр("НаДату", НаДату);
    
    //Если переданная в функцию цена имеет пустую ссылку, 
    //то усанавливаем цену по умолчанию - "Закупочную"
    Если  НЕ СсылкаТипЦены.Пустая() Тогда
        Запрос.УстановитьПараметр("ТипЦен", СсылкаТипЦены);
    Иначе
        Запрос.УстановитьПараметр("ТипЦен", СсылкаТипЦеныПоУмолчанию);
    КонецЕсли;
    
    Выборка = Запрос.Выполнить().Выбрать();
 
    Цена = 0;
    Пока Выборка.Следующий() Цикл
        Цена = Выборка.Цена;
    КонецЦикла;
    
    Возврат Цена;
    
КонецФункции
В документах реализации товара и заказе покупателя работает корректно, цену находит и выводит.
При ее помощи хочу выводить цены в форму списка номенклатуры, для тестирования сделал по кнопке, параметры в нее передаю так:
1C
1
сб = ПолучитьЦену(ЭлементыФормы.Список.ТекущиеДанные.Наименование,Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Льгот"),ТекущаяДата());
Но результат выборки всегда пустой, и соответственно цену выводит 0. Если в запросе поставить отбор по
1C
1
НЕ ЦеныСрезПоследних.Номенклатура = &Номенклатура
Выводит весь список номенклатуры, в том числе и с выбранной. Т.е. почему-то не совпадает
1C
1
ЭлементыФормы.Список.ТекущиеДанные.Наименование
с
1C
1
ЦеныСрезПоследних.Номенклатура
Добавлено через 22 минуты
Тоже самое происходит и в отчете
1C
1
ЭлементОтбора.Значение = ЭлементыФормы.Список.ТекущиеДанные.Наименование;
по причине:
Неверный тип значения

Объясните в чем разница этих значений?

Добавлено через 12 минут
Вышел из ситуации так
1C
1
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ЭлементыФормы.Список.ТекущиеДанные.Наименование);
На сколько это правильно, и логично с точки зрения программирования в 1с?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2019, 10:37
Ответы с готовыми решениями:

Выборка без ключевых слов/Выборка без столбцов/Выборка с условием
Нужно сделать 2 типа выборки в отдельный столбец: #1 без ключевых слов типа "АРБУЗ, ДЫНЯ" #2 без...

Сломалась W7
Решил удалить программу кей граббер и при её удалении перехрюкнулась моя W7 x64. Меню пуск мигает,...

Дата сломалась
Господа, исправил в форме формат ввода даты (случайно). Раньше он выводил в таблицу 01.01.2012, а...

Сломалась видеокарта
Проблема с видеокартой redeon hd4670 старенькая но работала исправно.Вчера выключил комп все было...

2
Модератор
Эксперт 1С
3082 / 2768 / 523
Регистрация: 10.03.2011
Сообщений: 10,640
Записей в блоге: 1
22.01.2019, 12:44 2
Лучший ответ Сообщение было отмечено w1ld32 как решение

Решение

w1ld32,
Потому что наименование - это строка, а номенклатура это ссылка

лучше так:
1C
1
Номенклатура =ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
2
1 / 1 / 0
Регистрация: 06.10.2015
Сообщений: 81
22.01.2019, 13:09  [ТС] 3
Dethmontt, Блин, не так давно занимаюсь 1с не очень еще разбираюсь в этом, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2019, 13:09

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Сломалась Windows
Установил программу для изменения разделов дисков и слил 2 диска (1 системный , 2 простой) а потом...

Сломалась видеокарта
Сломалась видеокарта 512mb PCI- E GF9800GT 256bit ddr3 Palit RTL.Подскажите чем ее можно заменить....

Сломалась база
Здравствуйте! Сломалась база данных. При открытии VBA - вылет, нажал кнопку - вылет, пробовал...

Сломалась клавиатура
у меня не работает клавиатура когда нажимаю на одну клавишу у меня вылетает вот так" 54mn67mn67,=8 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.