Имя: Пароль:
1C
1С v8
Остатки и цены
,
0 artprog
 
15.11.11
18:59
Добрый день.

Будьте добры, подскажите - каким запросом можно получить значение последней цены и остатка, используя уид номенклатуры?
1 Шапокляк
 
15.11.11
19:01
По уиду найти ссылку и запросом, запросом...
2 artprog
 
15.11.11
19:10
Так вот каким, каким?.. )))
3 echo77
 
15.11.11
19:13
запрос по регистру накоплений партии товаров на складах(упр/бух/нал), если речь идет о покупаемой номенклатуре
4 Шапокляк
 
15.11.11
19:13
Откуда ж знать, что у вас там за конфа - вы ж не пишете. А народу лень догадки строить, счас последние по домам разбегутся.
5 artprog
 
15.11.11
19:14
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
InformationRegister.ЦеныНоменклатуры.SliceLast.СрезПоследних(ТекущаяДата(), Номенклатура = &Ном И   ТипЦен = ТипЦены")
КАК ЦеныНоменклатурыСрезПоследних";
6 artprog
 
15.11.11
19:14
УТ у нас :)
7 Шапокляк
 
15.11.11
19:18
(5) ТипЦен = &ТипЦены - так лучше. Ну вот, с ценой справились, осталось с остатком разобраться :)
8 artprog
 
15.11.11
19:20
zapros_cena.Текст =
                     @"ВЫБРАТЬ
                        ЦеныНоменклатурыСрезПоследних.Цена
                       ИЗ
                        InformationRegister.ЦеныНоменклатуры.SliceLast.СрезПоследних(ТекущаяДата(), Номенклатура = &Ном И   ТипЦен = &ТипЦены)
                       КАК ЦеныНоменклатурыСрезПоследних";
                       zapros_cena.УстановитьПараметр("Ном", uid);
                       zapros_cena.УстановитьПараметр("ТипЦены", baza.Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000016"));
                       result_cena = zapros_cena.Выполнить().Выбрать();
9 artprog
 
15.11.11
19:21
к сожалению, привыполнении запроса:

result_cena = zapros_cena.Выполнить().Выбрать();

у меня выпадает: null reference exception : В экземпляре объекта не задана ссылка на объект
10 Жан Пердежон
 
15.11.11
19:22
кстати, из УТ в Битрикс грузится номенклатура с последней ценой и остатком
11 artprog
 
15.11.11
19:25
(10) да, но работа не с Бритиксом.
(7) я уже очень долго не могу победить ошибку при выполнении запроса "null reference exception"

Другой запрос выборки номенклатуры из регистра работает нормально, а вот остатки/цены не могу никак получить
12 Шапокляк
 
15.11.11
19:27
zapros_cena.УстановитьПараметр("Ном",Справочники.Номенклатура.ПолучитьСсылку(uid)) может, попробовать
13 artprog
 
15.11.11
19:29
пробовал :( без изменений..
14 artprog
 
15.11.11
19:30
как я только не обзывал эту номенклатуру уже )))
15 artprog
 
15.11.11
19:30
но я практически уверен, что собака в передаче параметров зарыта. как раз этой номенклатуре..
16 artprog
 
15.11.11
19:33
и так не хочет:
zapros_cena.УстановитьПараметр("Ном", baza.Справочники.Номенклатура.НайтиПоКоду("00000024300"));
17 Михаил Козлов
 
15.11.11
19:48
Скажите, а построитель запроса на "InformationRegister.ЦеныНоменклатуры.SliceLast.СрезПоследних(" не ругается?
Как-то подозрительно SliceLast.СрезПоследних.
18 Рыжий Лис
 
15.11.11
19:51
(8) текущаядата() не для запроса функция. Нужно или передавать ее параметром или не заполнять вообще этот параметр
19 hhhh
 
15.11.11
20:06
да, почему два раза срез последних?
20 artprog
 
15.11.11
20:42
(17), (18) извиняюсь - косячник :) Менял СрезПоследних на английское представление и забыл убрать ненужное )))

Изменил на:

zapros_cena.Текст =
                     @"ВЫБРАТЬ
                        ЦеныНоменклатурыСрезПоследних.Цена
                       ИЗ
                        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Ном И   ТипЦен = &ТипЦены)
                       КАК ЦеныНоменклатурыСрезПоследних";
                       zapros_cena.УстановитьПараметр("Ном", nomenk);
                       zapros_cena.УстановитьПараметр("ТипЦены", baza.Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000016"));
                       result_cena = zapros_cena.Выполнить().Выбрать();
                       string price = baza.String(result_cena);

Больше не ругается, но вместо цены пустая строка. В базе на этот товар цены есть - проверил. Может это от отсутствия параметра дата?
21 artprog
 
15.11.11
20:45
Или я неправильно конвертирую объект в строку?
22 artprog
 
15.11.11
20:57
Сам додумался. Нужно добавить result_cena.Следующий();
23 artprog
 
15.11.11
21:00
Уважаемые, подскажите пожалуйста последний запрос - получение остатков. Буду премного признателен))
24 DrShad
 
15.11.11
21:18
конструктор запросов то открой
25 hhhh
 
15.11.11
21:22
(23) как-то так

@"ВЫБРАТЬ
                        ОстаткиНаСкладе.КоличествоОстаток КАК Остаток
                       ИЗ
                        РегистрНакопления.ТоварыНаСкладе.Остатки(, Номенклатура = &Ном) КАК ОстаткиНаСкладе";
26 artprog
 
15.11.11
21:46
(25) нулевые((
27 hhhh
 
15.11.11
21:55
(26)

result_cena.Следующий();
Сообщить(result_cena.Остаток);
28 artprog
 
16.11.11
10:36
(27) com object не содержит определения для Остаток
29 artprog
 
16.11.11
10:59
dynamic zapros_ostatok = baza.NewObject("Запрос");
                       zapros_ostatok.Текст =
                     @"ВЫБРАТЬ
                        ОстаткиНаСкладе.КоличествоОстаток КАК Остаток
                       ИЗ
                        РегистрНакопления.ТоварыНаСкладе.Остатки(, Номенклатура = &Ном И Склад = &Склад)
                       КАК ОстаткиНаСкладе";
                       zapros_ostatok.УстановитьПараметр("Ном", nomenk);
                       zapros_ostatok.УстановитьПараметр("Склад", baza.Справочники.Склады.НайтиПоКоду("000000001"));
                       dynamic result_ostatok = zapros_ostatok.Выполнить().Выбрать();
                       result_ostatok.Следующий();
                       String ost =baza.String(result_ostatok.Остаток);  

При выполнении запроа вновь ничего не возвращается. null reference exception
30 Михаил Козлов
 
16.11.11
11:51
Остатка нет, результат запроса - пустой. Что будет в выборке после Следующий()?
31 artprog
 
16.11.11
11:56
не ТоварыНаСкладе, а товарыНаСкладах.. Всем спасибо)
32 FIXXXL
 
16.11.11
11:56
(0)открой для себя отчет "Стоимостная оценка склада в ценах номенклатуры"
33 Buster007
 
16.11.11
11:58
жесть какая-то...
открой 1С, напиши запрос который возвращает тебе нужный результат и перенеси куда-то в твой код, а не сиди тыкай там пальцами непонятно что...