Имя: Пароль:
1C
1С v8
Заполнить цены по последнему поступлению
0 Альбатрос
 
14.12.11
09:02
УТ 10.3
Задача: Заполнить закупочные цены по последним документам поступления.
Вот такой запросик:

   Запрос = Новый Запрос;
   
   Запрос.Текст =
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |   ПартииТоваровНаСкладахОбороты.Номенклатура,
   |    ПартииТоваровНаСкладахОбороты.ДокументОприходования КАК Док,
   |    ПартииТоваровНаСкладахОбороты.СтоимостьПриход КАК Цена
   |ИЗ
   |    РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&Дата,Номенклатура = &Ном)
   |   КАК ПартииТоваровНаСкладахОбороты";
   Запрос.УстановитьПараметр("Ном", Ном.Ссылка);
   Запрос.УстановитьПараметр("Дата", ТекущаяДата());


1. даже такой запрос не работает, вываливается ошибка:

по причине:
{(6, 70)}: Неверные параметры "РегистрНакопления.ПартииТоваровНаСкладах.Обороты, 1"
РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&Дата,Номенклатура <<?>>= &Ном)

Ном у меня справочникСсылка.Номенклатура

2. Собссно, что дописать в этот запрос, чтоб он отбирал только по последнему поступлению?

Уважаемые, помогите! Заранее благодарен.
1 Wobland
 
14.12.11
09:03
ВЫБРАТЬ ПЕРВЫЕ 1 без упорядочивания выбирает какой угодно
2 Wobland
 
14.12.11
09:04
в оборотах первые два параметра - дата. юзай конструктор
3 Галахад
 
гуру
14.12.11
09:06
Гм. А там нету стандартной "Установки цен номенклатуры"?
4 Ненавижу 1С
 
гуру
14.12.11
09:06
ага, еще наверное этот ЗАПРОС в цикле? тогда это КОШМАР
5 aleks-id
 
14.12.11
09:07
подозреваю что сей монструозный выверт выполняется в цикле для каждой строки...
6 Альбатрос
 
14.12.11
09:32
(1) Спс, вот так заработало.

   Запрос.Текст =
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    ПартииТоваровНаСкладахОбороты.Номенклатура,
   |    ПартииТоваровНаСкладахОбороты.ДокументОприходования КАК Док,
   |    ПартииТоваровНаСкладахОбороты.СтоимостьПриход КАК Цена,
   |    ПартииТоваровНаСкладахОбороты.ДокументОприходования.Дата КАК ДокументОприходованияДата
   |ИЗ
   |    РегистрНакопления.ПартииТоваровНаСкладах.Обороты КАК ПартииТоваровНаСкладахОбороты
   |ГДЕ
   |    ПартииТоваровНаСкладахОбороты.Номенклатура = &Ном
   |
   |УПОРЯДОЧИТЬ ПО
   |    ДокументОприходованияДата Убыв";

(2) Убрал дату ваще, так то меня весь период интересует.
(3)Есть, на данных запроса она и будет заполняться.
(4)(5) Пока пробую только для одного элемента, но вообще надо для всех. Их примерно 40000. Как оптимизировать этот запрос?
7 Альбатрос
 
14.12.11
09:33
+(6) и да, почему не работает:
|    РегистрНакопления.ПартииТоваровНаСкладах.Обороты(Номенклатура = &Ном)
8 ILM
 
гуру
14.12.11
09:34
(6) Получай сразу запросом цены по всем позициям номенклатуры...
9 Ненавижу 1С
 
гуру
14.12.11
09:51
(7) потому что надо читать мануал иногда и смотреть какие параметры и как передвать в виртуальную таблицу

РегистрНакопления.ПартииТоваровНаСкладах.Обороты(,,Номенклатура = &Ном)

подумай кстати оставлять ли пустыми первые 2 параметра
10 Альбатрос
 
14.12.11
09:57
(9)Спс, я уже сам понял =) Да, нужно оставить их пустыми, т.к. нужен весь период. Есть позиции, которые закупились четыре года назад и больше не закупались. А продаваться - продаются.
В любом случае, запрос неверный. Он выдал мне стоимость поступления + стоимость перемещения. По ходу отбор нужно делать по регистратору, отсюда еще один вопрос: Как поставить условие, что вид регистратора должен быть Поступление?
11 Ненавижу 1С
 
гуру
14.12.11
10:00
(10) послушай, есть еще регистр Закупки, может он спасет отца русской демократии?
12 Альбатрос
 
14.12.11
10:03
(11) Спасибо, щас попробую =)
13 Галахад
 
гуру
14.12.11
10:05
(6) А там нет кнопки, что то типа "Заполнить из Поступления"?
14 Альбатрос
 
14.12.11
10:22
(11) Еще раз спасибо!!! Регистр Закупки - то, что надо.
(13) Есть конечно, но ты представляешь, сколько мне вручную туда надо поступлений добавить?
15 Альбатрос
 
14.12.11
12:33
Все же не так шоколадно. В стоимость включается еще и поступление по доп. расходам. Как его исключить?

   Запрос.Текст =
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    ЗакупкиОбороты.Номенклатура,
   |    ЗакупкиОбороты.ДокументЗакупки.Дата КАК ДокументЗакупкиДата,
   |    ЗакупкиОбороты.КоличествоОборот КАК КОЛВО,
   |    ЗакупкиОбороты.СтоимостьОборот КАК Цена,
   |    ЗакупкиОбороты.ДокументЗакупки КАК Док
   |ИЗ
   |    РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты
   |ГДЕ
   |    ЗакупкиОбороты.Номенклатура = &Ном
   |
   |УПОРЯДОЧИТЬ ПО
   |    ДокументЗакупкиДата УБЫВ";
16 Альбатрос
 
14.12.11
12:43
Все же апну. Неохота подчиненные доки копать...
17 Галахад
 
гуру
14.12.11
12:48
(15) закупкиобороты.регистратор ссылка документ.потулпнеиетоваровуслуг
18 Альбатрос
 
14.12.11
12:54
(17) условие такое что ли?
19 Галахад
 
гуру
14.12.11
12:57
(18) Типа того. Только орф ошибки исправь.
20 Альбатрос
 
14.12.11
13:03
(19) В СП написано, что "Данное поле не может быть использовано в условии отбора записей."
21 Галахад
 
гуру
14.12.11
13:06
(20) Ну, хозяин барин.
22 Альбатрос
 
14.12.11
13:09
(21) Не, просто я не понял, как его использовать. Ведь в "Регистратор" хранится ссылка на конкретный док, а мне, получается надо отобрать по виду документа. Я хз, как это сделать.

ГДЕ закупкиОбороты.Регистратор = Документ.ПоступлениеТоваровУслуг.

Так что ли???
23 Галахад
 
гуру
14.12.11
13:10
ГДЕ закупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
24 sergeev-ag-1977
 
14.12.11
13:15
(0) Вопрос по постановочной части: а если в последнем поступлении цена стала ниже? В остальном можно, если не ошибаюсь, на базовом функционале допилить не дописывая ничего....
25 Альбатрос
 
14.12.11
13:15
(23)Не взлетело.

|ГДЕ
|   ЗакупкиОбороты.Номенклатура = &Ном

|   ЗакупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

по причине:
{(12, 19)}: Поле не найдено "ЗакупкиОбороты.Регистратор"
ЗакупкиОбороты.<<?>>Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг


Там вправду такого поля нет
26 sergeev-ag-1977
 
14.12.11
13:16
(24) П.С. Вы когда машину покупаете тоже руль и педали переставлять начинаете ?
27 Альбатрос
 
14.12.11
13:17
(24) Им это неважно. На базовом функционале это как?
(26) То есть?
28 sergeev-ag-1977
 
14.12.11
13:19
(27) то что это им не важно - это значит постановки нет вовсе!
На базовом, это значит что можно ничего не писать и решить поставленную задачу!
29 Галахад
 
гуру
14.12.11
13:19
А, ну да.

РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты(, , Регистратор, , )
30 sergeev-ag-1977
 
14.12.11
13:21
(28) Если заказчик одобрит - скажите что 1С, а особенно торговля, вообще отстой! Получите хотя бы бюджет в 100 миллионов рублей и напишите свою Торговлю на платформе 1С! ;-)
31 Альбатрос
 
14.12.11
13:24
(28) Вы знаете способ, как это сделать без обработки? Поделитесь, будьте добры. Я вот кроме как ручками заполнять установку цен номенклатуры по поступлениям, другого способа не знаю.
32 Альбатрос
 
14.12.11
13:25
(29) блин, не летит, я похоже жестко втупляю.

"ВЫБРАТЬ ПЕРВЫЕ 1
   |    ЗакупкиОбороты.Номенклатура,
   |    ЗакупкиОбороты.ДокументЗакупки.Дата КАК ДокументЗакупкиДата,
   |    ЗакупкиОбороты.КоличествоОборот КАК КОЛВО,
   |    ЗакупкиОбороты.СтоимостьОборот КАК Цена,
   |    ЗакупкиОбороты.ДокументЗакупки КАК Док
   |ИЗ
   |    РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты(,,Регистратор,,)
   |ГДЕ
   |    ЗакупкиОбороты.Номенклатура = &Ном
   |И
   |   ЗакупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
   |
   |УПОРЯДОЧИТЬ ПО
   |    ДокументЗакупкиДата УБЫВ";


Так не пашет.
33 sergeev-ag-1977
 
14.12.11
13:27
А Вы в документе поступления товаров и услуг посмотрите кнопочку "Ввод на основании" - есть такая! Удивит наверное до глубины души ... ;-)
34 Галахад
 
гуру
14.12.11
13:29
(32) Это я туплю. :-)
РегистрНакопления.Закупки.Обороты(, , Регистратор, , ) КАК ЗакупкиОбороты

Конечно же.
35 Альбатрос
 
14.12.11
13:34
(33) Вы предлагаете прощелкать все поступления и ввести на их основании установку цен?!? Я действительно удивлен!!! Пару недель щелкать буду, это точно. Вы наверное, не поняли, мне нужно установить цены на УЖЕ введенных доках, а их очень много. Это разовая обработка. А дальше, конечно, на основании.
36 Альбатрос
 
14.12.11
13:38
(34) И все равно не летит =)
по причине:
{(8, 1)}: Неверные параметры "РегистрНакопления.Закупки.Обороты"
<<?>>РегистрНакопления.Закупки.Обороты(, , Регистратор, , ) КАК ЗакупкиОбороты
37 sergeev-ag-1977
 
14.12.11
13:38
(35) Тогда тем более странно, что нет постановки задачи. Это меня удивляет больше всего. Вы что пишете? Скажите что пишете - объясню как!
38 Галахад
 
гуру
14.12.11
13:38
(35) Там, наверное есть обработказаполнения. По идее ее можно было бы задействовать, что бы не ваять свое.
39 sergeev-ag-1977
 
14.12.11
13:40
Да там много что есть, только молодой человек не знает что делать хочет и пытается это делать ... Так далеко не уехать ...
40 sergeev-ag-1977
 
14.12.11
13:42
Вот к примеру: есть 2 номенклатуры, и поступления:

Поступление 1:

Ном.1  10 шт 100 рублей без НДС
Ном.2  10 шт 200 рублей без НДС

Поступление 2:

Ном.1 10 шт. 118 рублей с НДС
Ном.2 10 шт. 236 рублей с НДС

Поступление 3:
Ном.1 1 шт. 1 рубль без НДС

- пусть всё в один день - какие должны быть цены ?
41 sergeev-ag-1977
 
14.12.11
13:43
Где постановка ?
42 sergeev-ag-1977
 
14.12.11
13:44
"Быстроногий Ахиллес никогда не догонит неторопливую черепаху"
43 Галахад
 
гуру
14.12.11
13:45
(40) Да какая разница? Им приблизительно надо.
44 sergeev-ag-1977
 
14.12.11
13:45
1 рубль - на всю номенклатуру! Если мало - 100 рублей !
45 sergeev-ag-1977
 
14.12.11
13:46
Тогда юзай регистр закупки!
46 sergeev-ag-1977
 
14.12.11
13:46
И в запросе функцию "Выразить"
47 sergeev-ag-1977
 
14.12.11
13:46
что бы на 0 не делить.
48 sergeev-ag-1977
 
14.12.11
13:49
ВЫБРАТЬ
   ЗакупкиОбороты.Номенклатура,
   ПРЕДСТАВЛЕНИЕ(ЗакупкиОбороты.Номенклатура),
   ЗакупкиОбороты.ХарактеристикаНоменклатуры,
   ПРЕДСТАВЛЕНИЕ(ЗакупкиОбороты.ХарактеристикаНоменклатуры),
   СУММА(ЗакупкиОбороты.КоличествоОборот) КАК КоличествоОборот,
   СУММА(ЗакупкиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
   СУММА(ЗакупкиОбороты.НДСОборот) КАК НДСОборот
ИЗ
   РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты

СГРУППИРОВАТЬ ПО
   ЗакупкиОбороты.Номенклатура,
   ЗакупкиОбороты.ХарактеристикаНоменклатуры
49 sergeev-ag-1977
 
14.12.11
13:49
Для приблизительно хватит
50 Альбатрос
 
14.12.11
14:27
(39) Вобщем, расклад такой. Конфа УТ 10.3 после переноса с ТиСа. В тисе не велся учет закупочных цен номенклатуры, соответственно, в УТ их нет тоже. У менеджеров в ТиСе была дописка на формах списка и выбора номенклатуры, суть ее заключалось в том, что текстом на форме выводилась цена с последнего поступления, с НДС вместе. Поступлений без НДС нет в принципе. Теперь, начальство в УТ хочет, чтобы были проставлены последние закупочные цены для номенклатуры, то есть так же с последнего поступления. Это последнее поступление может быть как сегодня, так и 4 года назад. Они все это понимают. Цены нужны с НДС именно с последнего поступления. Вот в принципе и все =) вся постановка.
51 Альбатрос
 
14.12.11
14:35
+(50) Вот я и хочу запросом вытянуть цены с последних поступлений, а потом на основе этих данных заполнить "Установка цен номенклатуры". И в принципе, вариант из (32) подходит, только в стоимость включается еще и стоимость доп.расходов, чего не нужно.
Потому, вопрос: как из варианта (32) убрать попавшую туда стоимость доп.расходов?
52 Альбатрос
 
14.12.11
14:40
(49) Не надо приблизительно, надо последнюю цену поступления
53 Галахад
 
гуру
14.12.11
14:46
Фигасе. Только сейчас (36) заметил.
Запятая там лишняя...

РегистрНакопления.Закупки.Обороты(, , Регистратор , ) КАК ЗакупкиОбороты
54 Альбатрос
 
14.12.11
14:52
(53) Воооот!!! Спасибо!!!
Еще просьба, посоветуйте литературу (желательно с примерчиками) по запросам в 1с8
55 Галахад
 
гуру
14.12.11
14:55
(54) Не знаю что сейчас модно, а мне вот эта нравилась
http://v8.1c.ru/metod/books/book.jsp?id=125
Закон Брукера: Даже маленькая практика стоит большой теории.