Имя: Пароль:
1C
1С v8
Соединить два запроса...
,
0 1C_Enigma
 
16.04.12
19:40
Есть два запроса. Один рассчитывает зрп менеджеру, согласно доходу, наценке и ставке(справочник ставок), а второй запрос высчитывает сколько в процентах продал менеджер товара из общей массы, что пришли.
Второй запрос нужно соединить с первым так, чтоб итоговый запрос рассчитывал зрп по менеджеру по конкретному товару плюс проверял, если товар пошел в убыток, то нужно высчитать, сколько менеджер продал из этой партии, высчитать проц соотношение(коэффициент), потом убыток умножить на это коэффициент и то, что получится вычесть из зрп менеджера.
Вещи, типа "вы совсем начинающий пользователь" и "читай справку", я про себя знаю, запрос с нуля ваять мне не прошу, а прошу указать, где я споткнулась или не вижу явных вещей...Спасибо.
Запрос первый

"ВЫБРАТЬ
       |    ПродажиОбороты.Регистратор.Менеджер КАК Менеджер,
       |    ПродажиСебестоимостьОбороты.Регистратор.Менеджер,
       |    ПродажиОбороты.Номенклатура.Производитель КАК Производитель,
       |    ПродажиОбороты.Номенклатура КАК Номенклатура,
       |    ПродажиСебестоимостьОбороты.Номенклатура КАК Товар,
       |    ПродажиСебестоимостьОбороты.ДокументОприходования,
       |    ШкалаСтавокЗРП.НГраница КАК НижняяГраница,
       |    ШкалаСтавокЗРП.ВГраница КАК ВерхняяГраница,
       |    ШкалаСтавокЗРП.Ставка КАК СтавкаЗРП,
       |    СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК Себестоимость,
       |    СУММА(ПродажиОбороты.СтоимостьОборот) КАК Оборот,
       |    СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК Доход,
       |    100 * ВЫБОР
       |        КОГДА СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) <> 0
       |            ТОГДА (СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)) / СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Наценка,
       |    ВЫБОР
       |        КОГДА 100 * ВЫБОР
       |                КОГДА СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) <> 0
       |                    ТОГДА (СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)) / СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)
       |                ИНАЧЕ 0
       |            КОНЕЦ МЕЖДУ ШкалаСтавокЗРП.НГраница И ШкалаСтавокЗРП.ВГраница
       |            ТОГДА ШкалаСтавокЗРП.Ставка
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Ставка,
       |    ПродажиОбороты.СтоимостьОборот * ВЫБОР
       |        КОГДА 100 * ВЫБОР
       |                КОГДА СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) <> 0
       |                    ТОГДА (СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)) / СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)
       |                ИНАЧЕ 0
       |            КОНЕЦ МЕЖДУ ШкалаСтавокЗРП.НГраница И ШкалаСтавокЗРП.ВГраница
       |            ТОГДА ШкалаСтавокЗРП.Ставка
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Зрп,
       |    ВложенныйЗапрос.ОбщОборот
       |ИЗ
       |    Справочник.ШкалаСтавокЗРП КАК ШкалаСтавокЗРП,
       |    РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажиСебестоимостьОбороты
       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажиОбороты
       |        ПО ПродажиСебестоимостьОбороты.Номенклатура = ПродажиОбороты.Номенклатура,
       |    (ВЫБРАТЬ
       |        ПродажиОбороты.СтоимостьОборот КАК ОбщОборот
       |    ИЗ
       |        РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , ) КАК ПродажиОбороты) КАК ВложенныйЗапрос
       |ГДЕ
       |    ПродажиОбороты.Регистратор.Менеджер <> &ПустойМенеджер
       |    И ПродажиСебестоимостьОбороты.Регистратор.Менеджер <> &ПустойМенеджер
       |
       |СГРУППИРОВАТЬ ПО
       |    ПродажиОбороты.Регистратор.Менеджер,
       |    ПродажиОбороты.Номенклатура.Производитель,
       |    ПродажиОбороты.Номенклатура,
       |    ПродажиСебестоимостьОбороты.Номенклатура,
       |    ПродажиСебестоимостьОбороты.Регистратор.Менеджер,
       |    ШкалаСтавокЗРП.НГраница,
       |    ШкалаСтавокЗРП.ВГраница,
       |    ШкалаСтавокЗРП.Ставка,
       |    ПродажиОбороты.СтоимостьОборот,
       |    ПродажиСебестоимостьОбороты.ДокументОприходования,
       |    ПродажиСебестоимостьОбороты.СтоимостьОборот,
       |    ВложенныйЗапрос.ОбщОборот
       |
       |УПОРЯДОЧИТЬ ПО
       |    Менеджер,
       |    Производитель,
       |    Номенклатура,
       |    Себестоимость,
       |    Оборот,
       |    Доход,
       |    Наценка,
       |    Ставка,
       |    Зрп
       |ИТОГИ
       |    СУММА(Себестоимость),
       |    СУММА(Оборот),
       |    СУММА(Доход),
       |    СУММА(Зрп)
       |ПО
       |    Менеджер,
       |    Производитель,
       |    Номенклатура";

Запрос второй

ВЫБРАТЬ
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования КАК ДокументОприходованияОст,
   ПродажиСебестоимостьОбороты.Регистратор.Менеджер КАК РегистраторМенеджер,
   ПродажиСебестоимостьОбороты.Номенклатура КАК НоменклатураСеб,
   ПродажиСебестоимостьОбороты.ДокументОприходования КАК ДокументОприходованияСеб,
   ПродажиСебестоимостьОбороты.СтоимостьОборот КАК СтоимостьОборот,
   ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход КАК СтоимостьПриход,
   100 * (ПродажиСебестоимостьОбороты.СтоимостьОборот / ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход) КАК ПроцПрод
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , Регистратор, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(, , Регистратор, ) КАК ПродажиСебестоимостьОбороты
       ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПродажиСебестоимостьОбороты.Номенклатура
           И ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования = ПродажиСебестоимостьОбороты.ДокументОприходования
ГДЕ
   ПродажиСебестоимостьОбороты.Регистратор.Менеджер <> &Менеджер
   И ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования <> &ДокументОприходования
ИТОГИ
   СУММА(СтоимостьОборот),
   СУММА(СтоимостьПриход),
   СУММА(ПроцПрод)
ПО
   ОБЩИЕ,
   РегистраторМенеджер,
   НоменклатураСеб,
   ДокументОприходованияСеб
1 dangerouscoder
 
16.04.12
20:00
(0) Могу дать глупый совет
Разбей запрос на несколько Временных таблиц и проверяй их через консоль
2 aleks-id
 
16.04.12
20:02
СКД в помощь!
3 DrShad
 
16.04.12
20:02
(1) почему же глупый? +100500
4 1C_Enigma
 
16.04.12
20:18
(1) что проверять?
5 DrShad
 
16.04.12
20:24
Результат временных таблиц
6 1C_Enigma
 
16.04.12
20:25
(5)проверила, выводят то, что нужно ;)
7 Humandra
 
16.04.12
20:27
(0) Из (0) получается, что запроса не 2, а 3, так? Убыток каком-то третьим запросом рассчитывается?
8 Humandra
 
16.04.12
20:28
(7) А, нет, вижу - в первом запросе.
9 1C_Enigma
 
16.04.12
20:29
(7) я так подозреваю, что проверку доход<0 впихнуть и в первый запрос, а как потом еще и второй запрос влепить...
10 1C_Enigma
 
16.04.12
20:30
Соединение, добавление, проверки .........
11 DrShad
 
16.04.12
20:37
(5) где временные таблицы?
12 DrShad
 
16.04.12
20:38
(11) к (6)
13 1C_Enigma
 
16.04.12
20:46
(12)в этих двух - нет, каждый из них выводит то, что нужно...разбить запрос на врем таблицы - какой из них?
14 Конфигуратор1с
 
16.04.12
20:51
(13)"    |ГДЕ
       |    ПродажиОбороты.Регистратор.Менеджер <> &ПустойМенеджер
       |    И ПродажиСебестоимостьОбороты.Регистратор.Менеджер <> &ПустойМенеджер" - а если менеджера нет?
15 1C_Enigma
 
16.04.12
20:52
(14) должен будет быть везде!!! Не будет - перепишу "где"
16 Конфигуратор1с
 
16.04.12
20:53
(13)Почему внутреннее соединение? Вдруг по продаже прошло по себестоимости нет?
17 Конфигуратор1с
 
16.04.12
20:53
(15)я имею ввиду реквизит менеджер в документе если отсуствует то там будет нулл а не пустой
18 1C_Enigma
 
16.04.12
20:54
о_О как это?
19 1C_Enigma
 
16.04.12
20:55
(18) к (16)
20 Конфигуратор1с
 
16.04.12
20:56
Кстати, в 8ке есть возможность использовать в запросах предопределенные данные, поэтому можно просто написать ГДЕ ПродажиСебестоимостьОбороты.Регистратор.Менеджер <> ЗНАЧЕНИЕ(Справочник.Менеджеры.ПустаяСсылка)
21 Конфигуратор1с
 
16.04.12
20:58
(19)Да легко. Если конфа украинская утп (за ут не скажу), то себестоимость может быть не рассчитана из-за того что продали в минус или оприходовали остаток товаров при инвентаризации по нулевой стоимости
22 1C_Enigma
 
16.04.12
20:59
(21) у нас инвентаризация не проводится =) вернее, эти вещи мы решаем по-другому. Мне не это сейчас главное.
23 dangerouscoder
 
16.04.12
21:01
ШкалаСтавокЗРП - эта таблица с чем соединена что то не пойму...
24 Конфигуратор1с
 
16.04.12
21:01
(22)Тогда запрос с помощью временных таблиц будет самое оно - по очереди выгребаешь всего по чучуть и соединяешь.
25 Конфигуратор1с
 
16.04.12
21:08
|    ПродажиОбороты.Регистратор.Менеджер КАК Менеджер,
       |    ПродажиСебестоимостьОбороты.Регистратор.Менеджер, = а это работает?
26 AlexNew
 
16.04.12
21:09
А (0) это о чем вообще?
27 AlexNew
 
16.04.12
21:12
Судя по запросу работали в основном с ЗУП?
28 1C_Enigma
 
16.04.12
21:15
(23)Это справочник, в нем ищу ставку
29 1C_Enigma
 
16.04.12
21:15
(27) неа, с торговлей всегда и везде
30 dangerouscoder
 
16.04.12
21:34
(29) так это торговля.. возвраты не учитываешь?
31 1C_Enigma
 
16.04.12
23:39
(30) и их тоже нннада...
32 Конфигуратор1с
 
16.04.12
23:41
(31)Так они же и так учитываются
33 1C_Enigma
 
16.04.12
23:57
(32) я, кста, об этом потом тоже подумала, ну после того, как написала, ну как всегда...
34 Конфигуратор1с
 
17.04.12
00:00
(33)завтра попробую что нибудь слабать и тебе выложить
35 1C_Enigma
 
17.04.12
00:01
(34) не нннада ;) мне нужно самой
36 Конфигуратор1с
 
17.04.12
00:02
(35)ну как хо. Самостийная какая. Ты тока результат выложи
37 1C_Enigma
 
17.04.12
00:03
(36) естессно!!! Пусть посмотрят те, кто меня книжки посылал для чайников читать...
38 Конфигуратор1с
 
17.04.12
00:03
(36)Просто если ты продажи и себестоимость выберешь вначале и во временную таблицу впизнешь, то избавишься от громоздких конструкций типа
      |    ВЫБОР
       |        КОГДА 100 * ВЫБОР
       |                КОГДА СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) <> 0
       |                    ТОГДА (СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)) / СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)
       |                ИНАЧЕ 0
       |            КОНЕЦ МЕЖДУ ШкалаСтавокЗРП.НГраница И ШкалаСтавокЗРП.ВГраница
       |            ТОГДА ШкалаСтавокЗРП.Ставка
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Ставка,
       |    ПродажиОбороты.СтоимостьОборот * ВЫБОР
       |        КОГДА 100 * ВЫБОР
       |                КОГДА СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) <> 0
       |                    ТОГДА (СУММА(ПродажиОбороты.СтоимостьОборот) - СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)) / СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот)
       |                ИНАЧЕ 0
       |            КОНЕЦ МЕЖДУ ШкалаСтавокЗРП.НГраница И ШкалаСтавокЗРП.ВГраница
       |            ТОГДА ШкалаСтавокЗРП.Ставка
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Зрп,
39 1C_Enigma
 
17.04.12
00:04
понимаешь, когда-то было сложно с С на С# слазить, теперь мне сложновато с 7.7 на 8.2...там по-разному запросики пишутся....
40 Конфигуратор1с
 
17.04.12
00:04
(37)не обращай внимание. Они как в армии деды - отрываются на молодых в отместку за то, что над ними насмехались когда молодыми были они ))))
41 Конфигуратор1с
 
17.04.12
00:05
(39)Понимаю. Сам год назад себя ломал((( До сих пор не полностью перестроился.
42 1C_Enigma
 
17.04.12
00:05
(38) я дошла уже до этого,только я чего-то начала во вложенные запросы это впихивать
43 Конфигуратор1с
 
17.04.12
00:07
(42)Ну вложенные запросы и временные таблицы дадут почти одинаковый результат. Поэтому можно сказать, что ты была на правильном пути.
44 Конфигуратор1с
 
17.04.12
00:10
(39)Кстати, меняю знания типовой утп на знания С#
45 1C_Enigma
 
17.04.12
00:19
(44) нууууу...сначала нужно книжки для чайников почитать))))
46 Конфигуратор1с
 
17.04.12
00:20
(45)так я тока за. Тока подскажи толковую. Задолбало меня 1сить. Буду порносайты писать
47 1C_Enigma
 
17.04.12
00:20
(44) Если что-то заумное, то нужно вспоминать и юзать я юзала ВС2005, 2008 или какой там самый последний, то я даже не знаю его фичей
48 Конфигуратор1с
 
17.04.12
00:23
(47)та мне какую нибудь книжку для чайников с примером, аля радченко
49 1C_Enigma
 
17.04.12
00:33
http://msdn.microsoft.com/ru-ru/library/dd831853.aspx
http://bookwebmaster.narod.ru/csharp.html
Хорошие книги Герберта Шилдта (я по ним училась), только версию выбирай нужную
http://www.williamspublishing.com/
Эти хорошие
50 1C_Enigma
 
17.04.12
00:39
51 1C_Enigma
 
17.04.12
00:41
52 1C_Enigma
 
17.04.12
00:44
53 Torquader
 
17.04.12
00:45
Проще тогда msdn и ask скачать - там всё описано на хорошем английском языке.
54 1C_Enigma
 
17.04.12
00:46
=)
55 1C_Enigma
 
17.04.12
00:47
у гугля переводчик есть
56 Torquader
 
17.04.12
00:51
Ну я как-то ddk без переводчика на выходных читал - в принципе,всё понятно,но когда начинаешь ковыряться - возникают вопросы,которые не описаны.
57 1C_Enigma
 
17.04.12
00:55
(56)и по-русски их проще сформулировать для гугля...да)))
58 Torquader
 
17.04.12
01:01
На самом деле - проще искать на английском языке - так как мелкомягкие много чего пишут на нём. Другое дело,что желающих писать что-то на низком уровне не так уж и много.
А идея была очень хорошая раздельный доступ к usb-hid устройствам,подключенным к компьютеру,а далее,используя usb-to-LAN переходники -с возможностью обработки сетевых команд.
59 Torquader
 
17.04.12
01:05
Ладно - это обсуждение для другого места - и вообще - пора спать - удачи вам и хорошего настроения.
Если долго мучаться - всё получится - главное - не бросить по середине.
60 1C_Enigma
 
17.04.12
01:14
хм..а если нужно передать значение одной таблички в другую...то что делать?
61 1C_Enigma
 
17.04.12
01:15
ну нашла я товар, который пошел в минус, теперь его нужно мучать в другой табличке...
62 Torquader
 
17.04.12
09:53
(61) Видимо, его сначала в список, то есть будет список товара, у которого что-то не так, а потом отбирать движения по товарам, которые есть в этом списке.
Хотя, для пользователя лучше - сначала показать то, что нашли, а уж потом пусть он сам выбирает тот товар, по которому он хочет движения посмотреть.
P.S. движения сразу по нескольким товарам выглядят не очень информативно и бух может не понять, что и к чему.
63 Конфигуратор1с
 
17.04.12
10:41
(61) МенеджерВТ = Новый МенеджерВременныхТаблиц;
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ПродажиСебестоимостьОбороты.Номенклатура,
                  |    ПродажиСебестоимостьОбороты.КоличествоОборот,
                  |    ПродажиСебестоимостьОбороты.СтоимостьОборот
                  |ПОМЕСТИТЬ ВТПродажи
                  |ИЗ
                  |    РегистрНакопления.ПродажиСебестоимость.Обороты КАК ПродажиСебестоимостьОбороты";
   Запрос.Выполнить();
   Запрос.Текст = "ВЫБРАТЬ
                  |    ВТПродажи.Номенклатура,
                  |    ВТПродажи.КоличествоОборот
                  |ИЗ
                  |    ВТПродажи КАК ВТПродажи";
64 Конфигуратор1с
 
17.04.12
10:43
Это как пример.
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ; для использования в запросе временных таблиц и таблиц значения
А потом просто в запросе используешь временную таблицу как обычную таблицу базу данных.
65 Конфигуратор1с
 
17.04.12
10:43
Кстати, Доброе утро и спасибо большое за ссылки
66 1C_Enigma
 
17.04.12
17:42
(65) Добрый вечер =)
67 Конфигуратор1с
 
17.04.12
17:57
(66)Добрый вечер. Ты что, работаешь в вечернюю смену?)))
68 1C_Enigma
 
17.04.12
23:19
Нее, бывают на работе бешенные дни, я и кассир и парочку заявок могу отбить, названия у номенклатуры меняю туда-сюда по требованию начальства, делаю заказы поставщикам, программлю в промежутках, лажу в инете и т.д
Зато книжек себе накупила по 8.2 сегодня :-)
69 Конфигуратор1с
 
17.04.12
23:47
(68)умничка. каких?
70 Конфигуратор1с
 
17.04.12
23:48
УТп, кстати, есть сертифицированный курс цсо. Там хорошие книжки идут бонусом по утп. Много чего плезного
71 1C_Enigma
 
18.04.12
00:09
Версию для обучению программированию, там книжки, технологии интеграции, разработка сложных и еще пару других. В общем, букварь, вторая и синяя :-)
72 Конфигуратор1с
 
18.04.12
10:31
(71)я начинал с радченка. Только по 81 который.