Имя: Пароль:
1C
1С v8
Посчитать количество купонов
, ,
0 informts
 
28.11.11
19:51
Помогите еще разобраться, стоит задача подсчета количества купонов для выдачи.
Критерии выдачи таковы:
Выдаем купоны по следующей схеме:
1коэ-20% от стоимости
2коэ-30% от стоимости
4коэ-40% от стоимости
6коэ-50% от стоимости
7коэ-20% от стоимости
8коэ-20% от стоимости
10коэ-50% от стоимости
Делаю так:
мСтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
   Отбор = Новый Структура;
   Отбор.Вставить("Номенклатура", мСтрокаТЧ.Номенклатура);
   Отбор.Вставить("Склад", Склад);
   Конструктор = РегистрыСведений.ПоказателиКонструкторовУслоувий;
   Коэфф = Конструктор.ПолучитьПоследнее(ТекущаяДата(), Отбор);
   Для каждого т из товары цикл
   Если (Коэфф.КонструкторУсловий.Наименование="1") ИЛИ (Коэфф.КонструкторУсловий.Наименование="7") ИЛИ (Коэфф.КонструкторУсловий.Наименование="8")  Тогда
   
КолКуп_20 = ОКР(мСтрокаТЧ.цена/100*20/200);
КонецЕсли;                                                      
Если Коэфф.КонструкторУсловий.Наименование="2" Тогда
КолКуп_30 = ОКР(мСтрокаТЧ.цена/100*30/200);
КонецЕсли;
Если Коэфф.КонструкторУсловий.Наименование="4" Тогда
КолКуп_40 = ОКР(мСтрокаТЧ.цена/100*40/200);
КонецЕсли;
Если Коэфф.КонструкторУсловий.Наименование="10" Тогда
  КолКуп_50 = ОКР(мСтрокаТЧ.цена/100*50/200);
КонецЕсли;
КонецЦикла;

И с моим опытом для меня тупик, как теперь посчитать общее кол-во? И что тут я не так делаю??
1 Лефмихалыч
 
28.11.11
20:10
опиши критерии нормально. В том, как ты это делат собираешься разбираться ни кто не будет
2 informts
 
28.11.11
20:17
Лефмихалыч, спасибо что остались не равнодушны!
Критерии выдачи таковы:
1купон равен 200 рублям
Для товара с коэффициентом 1 выдаем 20% от стоимости товара
2коэффициент-30% от стоимости
4коэффициент-40% от стоимости
6коэффициент-50% от стоимости
7коэффициент-20% от стоимости
8коэффициент-20% от стоимости
10коэффициент-50% от стоимости
Пример товар с 1 коэффициентом стоит 5000 рублей
5000/100*20%/200 = 5 Нужно выдать человеку 5 купонов номиналом по 200 рублей
В табличной части может быть несколько товаров с разными коэффициентами, не могу сообразить как посчитать ИТОГ
3 Лефмихалыч
 
28.11.11
20:24
1. Регистр сведений с измерением "Коэффициент" и ресурсом для хранения процента купонов
2. В номенклатуре реквизит "Коэффициент"
3. при реализации соединяешь ТЧ документа с регистром п.1 и нехитрыми арифметическими операциями получаешь количество купонов

коэффициент я бы наверное сделал перечислением или справочником и назвал как-нить иначе (чтобы путаницы не было и с индексами заморочек)
4 informts
 
28.11.11
20:31
Коэффициент и есть в регистре сведений, на каждом филиале на одну и ту же номенклатуру они могут быть разными.
5 Лефмихалыч
 
28.11.11
20:32
(4) процент купонов по коэффициентам тоже должен быь в регисте, но в другом
6 informts
 
28.11.11
20:34
т.е. вы предлагаете создать еще один регистр?
7 Лефмихалыч
 
28.11.11
20:37
я настаиваю
8 informts
 
28.11.11
20:38
а как дальше это в коде будет? :)
9 Лефмихалыч
 
28.11.11
20:47
(8) Как-то так
ВЫБРАТЬ
Док.Номенклатура,
Док.Сумма,
ВЫРАЗИТЬ(Рег.ПроцентКупонов*Док.Сумма/100 как Число(15,0)) КАК КоличествоКупонов
ИЗ Документ.РасхднаяНакладная.Товары КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТвойНовыйРегистр.Срезпоследних как Рег
ПО Рег.КоэффициентНоменклатуры = Док.Номенклатура.Коэффициент
ГДЕ Док.Ссылка = &СсылкаНаДокумент
10 informts
 
28.11.11
20:56
а мои соображения что совсем не катят
мСтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
   Отбор = Новый Структура;
   Отбор.Вставить("Номенклатура", мСтрокаТЧ.Номенклатура);
   Отбор.Вставить("Склад", Склад);
   Конструктор = РегистрыСведений.ПоказателиКонструкторовУслоувий;
   Коэфф = Конструктор.ПолучитьПоследнее(ТекущаяДата(), Отбор);
   Для каждого т из товары цикл
   Если (Коэфф.КонструкторУсловий.Наименование="1") ИЛИ (Коэфф.КонструкторУсловий.Наименование="7") ИЛИ (Коэфф.КонструкторУсловий.Наименование="8")  Тогда
   
КолКуп_20 = ОКР(мСтрокаТЧ.цена/100*20/200);
КонецЕсли;                                                      
Если Коэфф.КонструкторУсловий.Наименование="2" Тогда
КолКуп_30 = ОКР(мСтрокаТЧ.цена/100*30/200);
КонецЕсли;
Если Коэфф.КонструкторУсловий.Наименование="4" Тогда
КолКуп_40 = ОКР(мСтрокаТЧ.цена/100*40/200);
КонецЕсли;
Если Коэфф.КонструкторУсловий.Наименование="10" Тогда
  КолКуп_50 = ОКР(мСтрокаТЧ.цена/100*50/200);
КонецЕсли;
КонецЦикла;
11 informts
 
28.11.11
20:58
просто не хотелось бы добавлять регистр, мне кажется тут все очень просто и запрос не нужен...
как максимально просто все написать?
12 Лефмихалыч
 
28.11.11
21:00
(10) в код такие вещи зашивать - безмозглое решение
13 informts
 
28.11.11
21:03
такие вещи просто нужны кассирам на время акции - на одну неделю
14 informts
 
28.11.11
21:04
а для этого создавать регистр тоже не вижу смысла...
15 Лефмихалыч
 
28.11.11
21:05
(13) ага, регистр добавлять на одну неделю - плохо, а быдлокода навалить кучу - хорошо, хотя и то, и другое - навечно. При том, что коэффициент номенклатуры по разным филиалам у тебя уже в отдельном регистре хранится
16 informts
 
28.11.11
21:08
тоже верно, и всетаки )) в моем варианте все считает правильно, но выводит количество по разным коэффициентам отдельно, как вывести итого по всем строкам?
17 informts
 
28.11.11
21:46
ап
Закон Брукера: Даже маленькая практика стоит большой теории.