|
Выборка из регистра сведений, где ресурс - шкала | ☑ | ||
---|---|---|---|---|
0
i_rodionov
16.07.12
✎
23:11
|
Есть справочник Диапазоны, с реквизитом Предел. Справочник заполнен условно так: 00000 - "0", 00001 - "10000", 00002 - "50000", 00003 - "99999999"
Нужно взять срез последних запросом из такого регистра сведений КурсПоШкале: измерения Контрагент и Диапазон (спр. Диапазоны), ресурс - КурсУЕ. Запросом получить КурсУЕ, используя только параметры виртуальной таблицы КурсПоШкалеСрезПоследних? |
|||
1
i_rodionov
16.07.12
✎
23:13
|
+(0) Значение предела берется из временной таблицы в этом пакете запросов. Пусть называется ОборотКонтрагента.СуммаУЕОборот
|
|||
2
andrewks
16.07.12
✎
23:13
|
про справочник не понял
|
|||
3
Stim
16.07.12
✎
23:14
|
выбрать 1
курсУЕ, максимум(Диапазон) из РС.СрезПоследних сгруппировать по курс уе |
|||
4
i_rodionov
16.07.12
✎
23:15
|
(2) Справочник - это тип одного из ресурсов регистра.
|
|||
5
andrewks
16.07.12
✎
23:17
|
(4) это я понял. у тебя элементы записаны криво, подумал сначала, что это диапазоны
|
|||
6
i_rodionov
16.07.12
✎
23:17
|
(3) Не годится. Нужно обратиться к значению предела сначала. Писал выше, откуда значение
|
|||
7
andrewks
16.07.12
✎
23:18
|
(3) а кто тебе прогарантировал, что первый элемент выборки и будет искомым?
|
|||
8
andrewks
16.07.12
✎
23:19
|
(6) показывай, что у тебя получилось, и что ещё нет
|
|||
9
i_rodionov
16.07.12
✎
23:20
|
(5) Практическая мысль такова: найти курс УЕ для контрагента с вычисленным ранее оборотом (ОборотКонтрагента.СуммаУЕОборот - уже есть во временной таблице) по шкале. Курс дифференцируется от ОборотКонтрагента.СуммаУЕОборот. Всего участвуют: Справочник, виртуальная таблица оборотов по регистру бухии и Регистр сведений
|
|||
10
H A D G E H O G s
16.07.12
✎
23:21
|
(3) Сории за офф, Stim выйди в аську.
|
|||
11
andrewks
16.07.12
✎
23:22
|
ты запрос-то показывай. а то складывается ощущение, что ты не можешь сделать элементарное соединение таблиц
|
|||
12
i_rodionov
16.07.12
✎
23:22
|
Для очень опытных - это задача 2.20 из задачника. В сети есть решение, но мне оно не нравится, так как используется условие соединения
|
|||
13
i_rodionov
16.07.12
✎
23:32
|
"ВЫБРАТЬ
| УправленческийОборотыДтКт.СуммаУЕОборот |ПОМЕСТИТЬ ОборотКонтрагента |ИЗ | РегистрБухгалтерии.Управленческий.ОборотыДтКт(&НачалоМесяца, &МоментВремени, , СчетДТ = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), &СубконтоДТ, СчетКТ = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СубконтоДт1 = &Контрагент) КАК УправленческийОборотыДтКт |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОборотКонтрагента.СуммаУЕОборот, | ШкалаКурсовСрезПоследних.Значение |ИЗ | ОборотКонтрагента КАК ОборотКонтрагента, | РегистрСведений.ШкалаКурсов.СрезПоследних(&МоментВремени, Контрагент = &Контрагент) КАК ШкалаКурсовСрезПоследних | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Диапазоны КАК Диапазоны | ПО ШкалаКурсовСрезПоследних.Диапазон = Диапазоны.Ссылка" Нужно добиться того, чтобы полное соединение давало только одну строку в результате |
|||
14
i_rodionov
16.07.12
✎
23:39
|
Поставим вопрос по другому. Как сделать так, чтобы этот запрос был без последнего соединения, а в параметрах РегистрСведений.ШкалаКурсов.СрезПоследних было (&МоментВремени, (Контрагент = &Контрагент) И (?????????) ) Давало одну запись этого регистра
|
|||
15
andrewks
16.07.12
✎
23:40
|
(13) это не запрос, а произвольный набор инструкций
|
|||
16
i_rodionov
16.07.12
✎
23:44
|
(15) Нет. Он выбирает обороты между двумя счетами, выбирает все ресурсы из регистра сведений для контрагента на момент времени. Вопрос: Как получить запрос, который выбирает значение из справочника Диапазоны для Контрагента и Оборота?
|
|||
17
andrewks
16.07.12
✎
23:45
|
во-первых, для чего ты делаешь полное соединение со спр.Диапазоны? во-вторых, подумай получше над условием соединения. в-третьих, что за ШкалаКурсовСрезПоследних.Значение?
|
|||
18
i_rodionov
16.07.12
✎
23:49
|
(17) Согласен, полное соединение - ошибка. ШкалаКурсовСрезПоследних.Значение это значение из регистра сведений. Структура: Измерения - Контрагент, Диапазон. В зависимости от диапазона (объем продаж), есть ресурс - курсУЕ.
|
|||
19
i_rodionov
16.07.12
✎
23:51
|
+(18) Нужно получить из запроса только одну строку - по какому курсу продать товар данному контрагенту с данным оборотом с начала месяца. Значение курса находится в регистре ШкалаКурсов, периодическом
|
|||
20
andrewks
16.07.12
✎
23:53
|
теперь выясняется, что регистр периодический. про ШкалаКурсовСрезПоследних.Значение я так и не понял. и как же, всё-таки, называется регистр - ШкалаКурсов или КурсПоШкале?
|
|||
21
i_rodionov
16.07.12
✎
23:57
|
(20) Мне думалось, если человек видит ШкалаКурсовСрезПоследних, подразумевается, что периодический. Называется шкала курсов. Но интересна только виртуальная таблица ШкалаКурсовСрезПоследних
|
|||
22
i_rodionov
17.07.12
✎
00:04
|
Постановка задачи: расчеты с покупателями ведутся в уе. Делается проводка Дт "Покупатели" - Кт "Прибыли и убытки"
Текущий курс рассчитывается при проведении "Расходной накладной" в соответствии со шкалой, устанавливаемой пользователем для каждого контрагента. Шкала продаж написана в (0). Данные шкалы могут меняться помесячно. Курс берется в зависимости от объема продаж этому контрагенту с начала периода (месяца) |
|||
23
andrewks
17.07.12
✎
00:11
|
вот так находишь нужный диапазон
ВЫБРАТЬ | | УправленческийОборотыДтКт.СубконтоДт1 как Контрагент, | УправленческийОборотыДтКт.СуммаУЕОборот | макс(Дипазоны.Ссылка) как Диапазон |ПОМЕСТИТЬ ОборотКонтрагента |ИЗ | РегистрБухгалтерии.Управленческий.ОборотыДтКт(&НачалоМесяца, &МоментВремени, , СчетДТ = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), &СубконтоДТ, СчетКТ = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СубконтоДт1 = &Контрагент) КАК УправленческийОборотыДтКт | левое соединение Справочник.Диапазоны как Диапазоны | где Диапазоны.Диапазон>=УправленческийОборотыДтКт.СуммаУЕОборот | сгруппировать по УправленческийОборотыДтКт.СубконтоДт1, УправленческийОборотыДтКт.СуммаУЕОборот |; дальше дело техники - соединяешь со срезом последних |
|||
24
andrewks
17.07.12
✎
00:13
|
макс(Дипазоны.Диапазон) , конечно
|
|||
25
i_rodionov
17.07.12
✎
00:17
|
(23) Иными словами, получить оборот, присоединить значение из справочника Диапазоны, соотвествующее обороту с помощю условия. Сделать левое соединение со Шкалой Курсов.
|
|||
26
i_rodionov
17.07.12
✎
00:19
|
+(23) Спасибо, мне это больше нравится, но я думал, есть метод, когда делается не объединение, а параметры виртуальной таблицы отбрасывают ненужное
|
|||
27
i_rodionov
17.07.12
✎
00:28
|
(24) Спрашиваю из любопытства... Вы видели решение этой задачи в сети?
|
|||
28
i_rodionov
17.07.12
✎
01:10
|
Если кому-то интересно решение задач 1С:Специалист, могу поделиться моим решением задачи 1.46
|
|||
29
i_rodionov
17.07.12
✎
06:35
|
ап
|
|||
30
andrewks
17.07.12
✎
08:07
|
(27) не видел ни задачу, ни решение.
если есть демо-база для этой задачки - выкладывайте, поищем оптимальные решения. а то руктями мета- и прочие данные забивать лень |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |