Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Автоматическая подстановка данных 8.3

Автоматическая подстановка данных 8.3
Я
   cesaku
 
29.09.21 - 10:48
Всем привет.
Суть проблемы: имеется документ НачисленияСотрудникам с табличной частью Начисления с реквизитами: Сотрудник (СправочникСсылка.Сотрудники), Должность (СправочникСсылка.Должность), Оклад (число), Премия (число). Так же имеется оборотный регистр накопления Продажи с измерением Бариста (СправочникСсылка.Сотрудники) и ресурс Стоимость (число).
Что нужно сделать: при выборе сотрудника в табличной части должна проставляться сумма ресурса Стоимость в реквизит Премия в том случае, если его должность Бариста, если кто-то другой, то в Премию проставляется 0.
   acht
 
1 - 29.09.21 - 10:51
Какая часть непонятна?
   cesaku
 
2 - 29.09.21 - 11:00
Не понятно как именно вытащить сумму ресурса Стоимость для конкретного баристы.
   mikecool
 
3 - 29.09.21 - 11:03
(2) запросом
   acht
 
4 - 29.09.21 - 11:05
(2) Необходимо написать запрос к виртуальной таблице оборотов регистра, задав в параметрах таблицы отбор по значению измерения. Или воспользоваться объектным механизмом - использовать метод Обороты менеджера регистра. Подробности - в синтакс помощнике.
   cesaku
 
5 - 29.09.21 - 11:07
(4) Хорошо, сейчас попробую.
   Ненавижу 1С
 
6 - 29.09.21 - 11:14
(0) это курсовая про барист?
   cesaku
 
7 - 29.09.21 - 11:16
(6) Почти, тему диплома взял из практики с 3 курса :)
   cesaku
 
8 - 29.09.21 - 11:19
(4) На сколько понимаю, так должно получиться?
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0)) КАК СтоимостьОборот
        |ИЗ
        |    РегистрНакопления.Продажи.Обороты(, , , Бариста = &Бариста) КАК ПродажиОбороты
        |ГДЕ
        |    ПродажиОбороты.Бариста.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Бариста", Сотрудник); 
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Если Выборка.Следующий() Тогда
        СуммаПродаж = Выборка.СтоимостьОборот;
        Если СуммаПродаж = 0 Тогда
            Премия = 0;
        Иначе
            Премия = СуммаПродаж / 100 * 10;
        КонецЕсли;
        Возврат Премия;
    КонецЕсли;
   acht
 
9 - 29.09.21 - 11:32
(8) > |ГДЕ ПродажиОбороты.Бариста.Ссылка = &Ссылка";
>...
> Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

Что это значит в терминах предметной области?

> Если Выборка.Следующий() Тогда
> ...
Если Выборка.Следующий() Тогда
    Возврат Выборка.СтоимостьОборот / 100 * 10;
КонецЕсли;

Возврат 0;
   cesaku
 
10 - 29.09.21 - 11:40
(9) Если вы говорите про деление на 100 и умножение, то я из данной функции вытаскиваю 10% от ресурса (решил установить премию - 10% от продаж).
   acht
 
11 - 29.09.21 - 11:40
(10) Я всего лишь оптимизировал твой код.
   cesaku
 
12 - 29.09.21 - 11:44
(11) Я понял это. Я говорю про ваше замечание "Что это значит в терминах предметной области?".
Кстати, не знаете почему Выборка передается пустая (хотя не должна, даже нуля нет)? Из-за этого ругается на невозможность преобразования к типу Число.
   acht
 
13 - 29.09.21 - 11:49
(12) Фрагмент кода:

>|ГДЕ ПродажиОбороты.Бариста.Ссылка = &Ссылка";
>...
> Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

Расскажи, что ты пытаешся сделать этим. В терминах предметной области - сотрудники/баристы/деньги/документы и т.п.
   acht
 
14 - 29.09.21 - 11:49
Выборка пустая потому что у тебя нет данных
   acht
 
15 - 29.09.21 - 11:50
Вернее потому что у тебя запрос написан так, что он не возвращает данные
   cesaku
 
16 - 29.09.21 - 11:52
(13) Я пытаюсь тут обратиться к конкретному Баристе, используя реквизит Ссылка. Нужно мне это для того, чтобы, при выборе в документе НачисленияСотрудникам конкретного баристы, премия проставлялась именно его, а не чья-то другая.
   cesaku
 
17 - 29.09.21 - 11:53
(15) Тогда можете помочь в исправлении запроса, если вам не тяжело?
   acht
 
18 - 29.09.21 - 12:10
(17) Нет. Я хочу чтобы ты понял, что где используешь.

К конкретному баристе ты уже обратился, когда установил по нему фильтр.
Что такое у тебя Объект и что ты пытаешся сделать наложением дополнительного отбора по значению Объект.Ссылка?
   cesaku
 
19 - 29.09.21 - 12:14
(18) Да, понял, зря обращался. Все заработало, спасибо большое за помощь.
   Anton1307
 
20 - 29.09.21 - 17:55
>>> Не понятно как именно вытащить сумму ресурса Стоимость для конкретного баристы

Результат = СУММА(КонкретныйБариста.Стоимость)

Не благодари.
   acht
 
21 - 29.09.21 - 23:24
(7) > тему диплома

А, то есть сейчас дипломы вот так вот пишутся, да?
    https://forum.infostart.ru/forum9/topic269905/
    https://forum.infostart.ru/forum9/topic269890/
    https://www.cyberforum.ru/1c-standard/thread2877065.html
    Автоматическая подстановка данных 8.3
    ...

Как далеко прогресс шагнул, раньше думать надо было.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.