1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
kachesov 10.10.16 - 14:22 | Добрый день!
Пытаюсь получить значение закупочной цены в УПП. Написал следующую функцию с запросом: Функция ПолучитьЗакупочныеЦены(ДатаЦен, Номенклатура) Экспорт ЗакупочнаяЦена = 0; Закупка = "Закупка"; Запрос = Новый Запрос("ВЫБРАТЬ | Цены.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &Дата, | ТипЦен = &Закупка | И Номенклатура = &Номенклатура) КАК Цены"); Запрос.УстановитьПараметр("Дата", ДатаЦен); Запрос.УстановитьПараметр("Закупка", Закупка); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); ЗакупочнаяЦена = Выборка.Цена; Возврат ЗакупочнаяЦена; КонецФункции; Не работает. Ковыряю отладчиком. При вычислении строки Запрос.Выполнить().Выбрать().Цена в поле "Значение" выдаёт "Ошибка чтения значения".. Подскажите пожалуйста, куда дальше копать? Почему может возникать такая ошибка? | ||
polosov 1 - 10.10.16 - 14:24 | Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); ЗакупочнаяЦена = Выборка.Цена; | ||
SadrArt 2 - 10.10.16 - 14:28 | |||
Ёпрст 3 - 10.10.16 - 14:28 | |||
1dvd 4 - 10.10.16 - 14:31 | сразу видно семёрошника | ||
DmitriyDI 5 - 10.10.16 - 14:31 | (0) потому что следующий возвращает позиционирование на следующей записи выборки, и возвращает Ложь или Истину.
А вот когда запись выбралась т.е. следующий равно истина, тогда в выборке появляются данные. все это можно посмотреть в СП | ||
kachesov 6 - 10.10.16 - 14:41 | |||
1dvd 7 - 10.10.16 - 14:46 | (6) а у тебя в регистре сведений ЦеныНоменклатуры ТипЦен точно строковый? | ||
kachesov 8 - 10.10.16 - 14:53 | (7) в регистре сведений ЦеныНоменклатуры ТипЦен - это измерение с типом СправочникСсылка.ТипыЦенНоменклатуры | ||
kachesov 9 - 10.10.16 - 14:57 | (7) и тут я начал подумывать что недостаточно просто написать Запрос.УстановитьПараметр("Закупка", "Закупка")
=) | ||
1dvd 10 - 10.10.16 - 14:59 | |||
kachesov 11 - 10.10.16 - 15:01 | (10) спасибо большое, пойду дальше ковыряться.. | ||
kachesov 12 - 10.10.16 - 16:44 | Функция ПолучитьЦеныДляПФ(Номенклатура) Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ
| Цены.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &Дата,
| ТипЦен = &ТипЦен
| И Номенклатура = &Номенклатура) КАК Цены");
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТипЦен", ТипЦенДляПФ);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.Цена;
КонецФункции;
Так выглядит конечный вариант.
ТипЦенДляПФ - реквизит с типом СправочникСсылка.ТипыЦенНоменклатуры
Моя ошибка была в этом. Я пытался явно указать название созданного типа цен.. | ||
Timon1405 13 - 10.10.16 - 16:49 | |||
kachesov 14 - 10.10.16 - 16:59 | (13) это кусочек. так там три метода. Все они в форме документа.
Первый - кнопка, второй - построчная обработка табличной части, третий - заполнение нужным значением. У меня в запросе каждый раз лишь одна номенклатурная позиция, мне не нужна проверка (3). Процедура КоманднаяПанельЗаполнитьЦеныДляПФ(Кнопка)
Если ЗначениеЗаполнено(ТипЦенДляПФ) Тогда
ЗаполнитьЦеныДляПФ();
Иначе
Сообщить("Не заполнен поле ТипЦенДляПФ!");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьЦеныДляПФ() Экспорт
Для Каждого Строка Из Товары Цикл
Строка.ЦенаДляПФ = ПолучитьЦеныДляПФ(Строка.Номенклатура);
КонецЦикла;
КонецПроцедуры
Функция ПолучитьЦеныДляПФ(Номенклатура) Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ
| Цены.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &Дата,
| ТипЦен = &ТипЦен
| И Номенклатура = &Номенклатура) КАК Цены");
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТипЦен", ТипЦенДляПФ);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.Цена;
КонецФункции; | ||
notebug 15 - 10.10.16 - 17:23 | Я бы через массив номенклатуры сделал, нежели запрос в цикле | ||
Cumpuciy 16 - 10.10.16 - 17:25 | Если Выборка.Следующий() тогда Возврат Выборка.Цена иначе Возврат 0 КонецЕсли |
|
Список тем форума
|