Имя: Пароль:
1C
1C 7.7
v7: ТиС. Как в запросе обратится к периодическому реквизиту ?
0 raykom
 
05.09.14
20:00
Обращаюсь зпросом к ТЧ документа.
Надо из номенклатуры получить цену (не из документа, а именно из номенклатуры)
Черканите просто строку. Спасибо.
1 raykom
 
05.09.14
20:03
Шо ? Топоры точите ?
2 ДенисЧ
 
05.09.14
20:08
Конечный период на нужную дату и лезь в справочник цен.
Кстати. ты найдёшь и ещё одну полезную вещь....
3 КонецЦикла
 
05.09.14
20:09
Период с ДатаНач по <вот на эту дату будет брать>
4 raykom
 
05.09.14
20:38
(2)>Конечный период
ДА, я в инете видел где то тему на айтике помоему, там чел решал такой же вопрос и Епрст ванговал ему скорое увольнение ))

Но вот тут то и дилемма, мне нужна цена на дату конкретного документа в периоде запроса, а не на конечную дату запроса.
ТАк что маленько не айс.

(3)О ... Кому верить ? В (2) все наоборот.
Но в целом оба ответа не решают проблемы, что цена нужна на дату конкретного документа в периодею

))
5 raykom
 
05.09.14
20:49
ЕСть глобальная функция, которая цену возвращает, но в нее кучу параметров надо передать, таких как "Номенклатура", "ТипЦены", ДАта, и проч.
Все это тоже надо из запроса извлекать налету. ХЗ, как.
6 DGorgoN
 
05.09.14
20:52
Сделай подзапрос - не парь мозг
7 raykom
 
05.09.14
20:53
(6)Ды я бы ... Но это ... Каг ?
8 DGorgoN
 
05.09.14
20:56
(7) Я в общем неделю работаю с конструктором и уже разобрался. Работай с конструктором запросов. Все там очень просто. Создай 1 запрос - создание виртуальной таблицы цен.
2 запрос - выбирает тч и берет данные из 1-й таблицы и выводит куда тебе нужно.
9 raykom
 
05.09.14
20:59
(8)Понял. Через неделю вернусь )))
10 raykom
 
05.09.14
20:59
Короче, никак. ПОнятно.
11 DGorgoN
 
05.09.14
21:01
(10) Ну на самом деле за вечер решается просто.
12 raykom
 
05.09.14
21:10
(8)>2 запрос - выбирает тч и берет данные из 1-й таблицы и выводит куда тебе нужно.

Я не понимаю, в чем смысл такой конструкции ? Все равно выбирать вторым запросом.
Тогда вопрос, зачем виртуальная таблица, можно же просто из справочника и второй вопрос - как в семерке запросом к ТЗ обращаться без сторонней компоненты ?
13 floody
 
05.09.14
21:28
в запросе можно вызывать глобальные функции же? цена = глвернутьцену(). ЕМНИП
14 Zhuravlik
 
05.09.14
21:33
Если имеется в виду черный запрос, то можно использовать функцию, насколько я помню.
Блин, я почему-то не могу архив своих тем открыть, помню сам возился года два назад, находил решение.
15 DGorgoN
 
05.09.14
21:38
(12) ну типа того.
16 raykom
 
05.09.14
21:39
(13)Ну, если так, то вообще все красиво. Но ... Так ли это - я вот не представляю, например. Погуглю, конечно.
(14)Да. Черный. Ну как в текст запроса вставить синюю строку - понятно. Или штатно как то можно ?
Тооже не представляю.
17 raykom
 
05.09.14
21:40
+(16)И в нее еще кучу параметров из того же запроса надо передать. Уже писал.
18 Zhuravlik
 
05.09.14
21:46
(16) Что значит "в текст запроса вставить синюю строку"? Я насколько помню, там непосредственно из запроса идет вызов внешней функции, и все. Также можно еще таблицу значений в запросе использовать (ток как - не помню уже, но тема была у меня, глючит форум что-то). Как вариант, если известен список номенклатуры заранее с датами, замесить тз с ценами, и получать из нее значение цены в запросе. Или обрабатывать выборку, насколько я понимаю по скорости - практически то-же самое будет. Даже нет, с выборкой будет быстрее, поскольку использование внешних функций черные запросы тормозят.
19 raykom
 
05.09.14
21:49
(18)>Я насколько помню, там непосредственно из запроса идет вызов внешней функции

Я вот ни на сколько не помню. Ну предположим, вызов внешней функции из запроса есть.

А как параметры брать для передачи в функцию ? Переменные запроса то могут  использоваться ?
20 raykom
 
05.09.14
21:53
Чето не гуглится ничего по поводу использования внешних функций в черных запросах ...
21 borozavr
 
05.09.14
21:54
Вот образец, отчет недавно делал аж под ТИС 8.6

Функция Закупка(Товар)
    СпрЦены.ИспользоватьВладельца(Товар);
    Если СпрЦены.НайтиПоРеквизиту("КатегорияЦены",Закупочная,0)=1 Тогда
        Возврат СпрЦены.Цена;
    Иначе
        Возврат 0;
    КонецЕсли;    
КонецФункции
Функция Продажа(Товар)
    СпрЦены.ИспользоватьВладельца(Товар);
    Если СпрЦены.НайтиПоРеквизиту("КатегорияЦены",Розничная,0)=1 Тогда
        Возврат СпрЦены.Цена;
    Иначе
        Возврат 0;
    КонецЕсли;    
КонецФункции


//САМ ЗАПРОС
|ПЕРИОД С ДатаНачала По ДатаКонца;
|Товар=Регистр.ПартииТоваров.Товар;
|ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара;
|Функция ЗакСтоимость=Сумма(Закупка(Товар)*ОстатокТовара);
|Функция РозСтоимость=Сумма(Продажа(Товар)*ОстатокТовара);
22 Zhuravlik
 
05.09.14
21:56
(19)
Переменные запроса то могут  использоваться ?
Да.
(21) Опередил, стер свои ваяния =)
23 Zhuravlik
 
05.09.14
21:58
Только все-равно, лучше обрабатывать выборку имхо. Особенно если речь о ценах идет (о периодике).
24 Zhuravlik
 
05.09.14
21:58
А база файловая?
25 Zhuravlik
 
05.09.14
22:00
А то это, вот: https://snegopat.ru/1sqlite/index - крутая штукенция...
26 raykom
 
05.09.14
22:03
(21)Вооо ... То, что доктор прописал. Не буквально, конечно - но все понятно, как мне пристроить этот пример.
(22)Да, уже увидел из (21)
(23)Скорость не критична. Главно шоб попроще. Еще группировать все это надо по хитрому и таблицу выводить. Так что пусть.
(24)Да
(25)Уже лишнее.

Ну, усе, братцы. Вопрос снят. Спасибо.
27 raykom
 
05.09.14
22:23
Да ... Рано радовался.

Вот такая строка в запросе

|Цена    = глВернутьЦену(Номенклатура, ТипЦены, ДатаЦены);


Возвращает вот такую ошибку.

Цена =  <<?>> глВернутьЦену(Номенклатура, ТипЦены, ДатаЦены);
Запрос[14] : Неверно заданный путь 'глВернутьЦену'

Функция глобальная.

Шо делать ?
28 Zhuravlik
 
05.09.14
22:33
(27) Переписать ее в текущий модуль, без слова "ЭКСПОРТ" =)
29 raykom
 
05.09.14
22:39
(28)Дак вот уже, но что то пока не айс. Щас отпишусь
30 LazyStranger
 
05.09.14
22:40
(27) переменную запроса так нельзя объявить, только функцию:
|Функция Цена = глВернутьЦену(Номенклатура, ТипЦены, ДатаЦены);
31 raykom
 
05.09.14
22:41
(30)Уже сообразил, но вот всеравно

Функция СуммаКонОст = КонОст( <<?>> ВернутьЦену(Номенклатура, ТипЦены, ДатаЦены = 0, ЦенаЦены = 0, ЕдЦены = 0, ВалЦены = 0, НаценкаЦены = 0, НайденнаяЦена = 0));
Запрос[21] : Переменная  'ВернутьЦену' не опеределена
32 raykom
 
05.09.14
22:42
Функция ВернутьЦену()
Тут же в модуле
33 borozavr
 
05.09.14
22:54
КонОст работает только для ресурса остатка, надо использовать Сумма
34 raykom
 
05.09.14
23:00
(33)Медленно медленно я начал подзревать про это )))
Спасибо
35 raykom
 
05.09.14
23:01
+(34)
Я уже для убеждения твой запрос подпилил под ТиС 9.4 - все работает ) Вот и заподозрил ...
36 borozavr
 
05.09.14
23:09
Пожалуйста, был рад помочь.