![]() |
![]() |
![]() |
|
Нужна помощь с экзаменом | ☑ | ||
---|---|---|---|---|
0
AlexSoul
22.10.15
✎
18:03
|
Всем привет. Если кто-то сможет помочь с моим вопросом, буду очень благодарен.
На экзамене было задание, вот пытаюсь понять как его решить, на экзамене не смог. - Есть фирма, есть документы с приходом и расходом товара. В конце месяца фирма подсчитывает оборот денег по каждому из товаров и каждому товару присваивает "рейтинг"(рейтинг хранится в табличной части документа "расход" и соответственно отображается напротив каждого из товаров) - 1 (от 10к рублей), 2 (от 5к до 10к) и 3 (до 5к). Через запрос я могу получить данные из виртуальной таблицы (ПродажиОбороты) моего регистра. Функция ВозвратТЗ() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиОбороты.Номенклатура КАК Номенклатура1, | ПродажиОбороты.ВыручкаОборот |ИЗ | РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты"; Т = Запрос.Выполнить().Выгрузить(); Возврат Т; КонецФункции Но вот как быть дальше, не могу понять. Даже если я сейчас соединю 2 таблицы (чтобы сюда попала также запись из табличной части - рейтинг) и добавлю условие по циклу (Если оборот > 10к тогда рейтинг = 1 и тд), то как мне выгрузить полученное значение в реквизит табличной части - "рейтинг". Долго искал в интернете, но ничего толкового найти не могу. Хотя бы понять как делать эту часть задания. |
|||
1
Лодырь
22.10.15
✎
18:27
|
(0) а зачем тебе хранить рейтинг в табличной части?
|
|||
2
Лодырь
22.10.15
✎
18:28
|
в общем, текст задания нужен нормальный, а не обрывочный.
|
|||
3
Михаил Козлов
22.10.15
✎
18:31
|
В запросе нужно сформировать поле "Рейтинг". Что-то типа
ВЫБОР КОГДА ВыручкаОборот>10 000 ТОГДА 1 ИНАЧЕ... КАК рейтинг. Создаете новый документ "расход". Загружаете в ТЧ "рейтинг" результат запроса. Документ записываете. Только обратите внимание на то, что это делается ежемесячно, поэтому обороты в РН "Продажи" нужно брать за месяц. |
|||
4
AlexSoul
22.10.15
✎
19:16
|
Спасибо, этот момент более или менее понятен, но как мне загрузить результат запроса в нужный реквизит? Что-то я не могу найти как это сделать. Перечитал кучу разных материалов по запроса, но про выгрузку результатов в реквизит ни слова.
|
|||
5
Лодырь
22.10.15
✎
19:19
|
(4) Документ.Расход.Загрузить(Запрос.Выполнить.Выгрузить());
|
|||
6
Лодырь
22.10.15
✎
19:20
|
Но по прежнему непонятно зачем именно загружать рейтинг в табличную часть. Чтобы отобразить его на форме, вовсе необязательно его хранить в документе.
|
|||
7
AlexSoul
22.10.15
✎
19:26
|
Ну задание такое было. Это к преподу вопрос)))
Ок, спасибо большое. Сейчас пробую выполнить. |
|||
8
AlexSoul
22.10.15
✎
20:16
|
Что-то я всё равно понять не могу))) Работаю я в модуле объекта. Создал функцию и передаю её событию при записи (пока так, для проверки делаю).
Таблица значений у меня правильная выходит и рейтингу присваиваются верные значения. Но как выгрузить рейтинг в табличное поле документа ОказаниеУслуги, таблица ПереченьНоменклатуры, реквизит рейнинг называется я всё равно не доганяю. Ни оджного толквого объяснения на формах. Ни разу с таким не сталивался, вот в чём проблема. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиОбороты.Номенклатура КАК Номенклатура1, | ПродажиОбороты.ВыручкаОборот, | ВЫБОР | КОГДА ПродажиОбороты.ВыручкаОборот > 10000 | ТОГДА 1 | ИНАЧЕ 2 | КОНЕЦ КАК Рейтинг |ИЗ | РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры | ПО ПродажиОбороты.Номенклатура = ОказаниеУслугиПереченьНоменклатуры.Номенклатура"; Т = Запрос.Выполнить().Выгрузить(); Возврат Т; КонецФункции |
|||
9
Sanek_gal
22.10.15
✎
20:50
|
(8) Зачем в запросе соединение с тч документа, если ее данные не используются? Тз если верная то грузи ее в нужную ТЧ, выше писали как, только следи чтобы названия полей совпадали
|
|||
10
AlexSoul
23.10.15
✎
17:59
|
В общем наверное можно закрывать) Такой вот код вышел. Дальше уже доработаю и всё ок будет.
Функция ВозвратТЗ() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиОбороты.Номенклатура КАК Номенклатура, | ПродажиОбороты.ВыручкаОборот, | ВЫБОР | КОГДА ПродажиОбороты.ВыручкаОборот > 10000 | ТОГДА 1 | КОГДА ПродажиОбороты.ВыручкаОборот < 10000 | И ПродажиОбороты.ВыручкаОборот > 5000 | ТОГДА 2 | КОГДА ПродажиОбороты.ВыручкаОборот < 5000 | ТОГДА 3 | КОНЕЦ КАК Рейтинг, | ОказаниеУслугиПереченьНоменклатуры.Количество, | ОказаниеУслугиПереченьНоменклатуры.Цена, | ОказаниеУслугиПереченьНоменклатуры.Сумма |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ПродажиОбороты | ПО (ПродажиОбороты.Номенклатура = ОказаниеУслугиПереченьНоменклатуры.Номенклатура) |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца (ТекущаяДата())); Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ТекущаяДата())); Т = Запрос.Выполнить(); ПереченьНоменклатуры.Загрузить(Т.Выгрузить()); //Т = Запрос.Выполнить().Выгрузить(); Возврат Т; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |