Имя: Пароль:
1C
1С v8
8.1 выбрать первые строки
0 informts
 
21.11.11
22:12
Есть документ корректировка конструкторов условий без колонки количества, в котором меняю цену номенклатуры и коэффициент в зарплату продавцу. Запросом добился заполнения тч товарами по номенклатурной группе и сортировкой по проценту накрутки. Вопрос в следующем, после заполнения нужно нажатием кнопки выбрать первые 30 процентов товара и установить на него определенный коэффициент, потом на остальные товары так же. Как определить максимально количество строк, колонок с количеством нету, есть только номера строки??
1 mikecool
 
21.11.11
22:15
выбрать первые 30
...
где коэффициент = 0
2 lubja
 
21.11.11
22:19
у тч есть метод количество(), который возвращает количество строк в тч. а там уже плясать...
если запросом, то
выбрать первые 30
  выбираемые поля
из....
3 mikecool
 
21.11.11
22:21
(2) чо вы там с сантой? зажгли?? ))
4 informts
 
22.11.11
19:26
а как выбрать из товары первые 30 процентов строк, потом вторые 30 процентов, потом третьи 25 процентов и последние 15, т.е в процентах??
5 lubja
 
22.11.11
19:29
(3) в какой ветке? =)
(4) ну здрасьте... количество строк - это 100%. а как найти 30% ? это ж простое уравнение! )))
6 informts
 
22.11.11
19:32
да я определяю сто процентов, потом присваиваю 4 переменным нужный процент. как потом к ним обратится?
7 informts
 
22.11.11
19:34
Для каждого м из товары Цикл
               к=к+1;
       
   Мин = 0;
   Сред = 0;
   Макс = 0;
   СуперМакс = 0;
Мин = ОКР(к/100*33);
Сред = ОКР(к/100*33);
Макс = ОКР(к/100*28);
СуперМакс = ОКР(к/100*6);

Как к стокам МИН обратится теперь??
8 lubja
 
22.11.11
19:38
что за 33, 28 и 6 ?
9 informts
 
22.11.11
19:45
это процент
10 lubja
 
22.11.11
19:54
а почему бы до цикла не узнать сколько строк составляет 30%, 25% и 15%. а в цикле проверять уже номер строки, так сказать, в какую группу попадает и проставлять соответствующий коэффициент.
что-то типа
Проц_30 = Окр(0,3 * Товары.Количество());
Проц_25 = Окр(0,25 * Товары.Количество());
Проц_15 = Окр(0,15 * Товары.Количество());
Для Каждого стр Из Товары Цикл
  Если стр.НомерСтроки <= Проц_30 Тогда
     стр.<Поле с коэффициентом> = Коэффициент_1;
  ИначеЕсли стр.НомерСтроки <= (Проц_30 + Проц_30) Тогда
     стр.<Поле с коэффициентом> = Коэффициент_2;
  ИначеЕсли стр.НомерСтроки <= Проц_25 Тогда
     ... ну и так далее
  КонецЕсли;
КонецЦикла;

ну как-то так... это если я правильно поняла задачу...
11 informts
 
22.11.11
20:01
а если в таблице нет колонки количество?
12 lubja
 
22.11.11
20:03
(11) да что ж ты так привязался к этой колонке?! )))
товары.Количество() - это МЕТОД, который возвращает количество строк в таблице!!!
13 informts
 
22.11.11
20:04
понял, щас попробую ))
14 informts
 
22.11.11
20:50
Коэф_1=Справочники.КонструкторыУсловийПродаж.НайтиПоКоду("000000001");
   Коэф_2=Справочники.КонструкторыУсловийПродаж.НайтиПоКоду("000000002");
   Проц_30 = Окр(0,3 * Товары.Количество());
Проц_25 = Окр(0,25 * Товары.Количество());
Проц_15 = Окр(0,15 * Товары.Количество());
Для Каждого стр Из Товары Цикл
  Если стр.НомерСтроки <= Проц_30 Тогда
     стр.КонструкторУсловий = Коэф_1;
  ИначеЕсли стр.НомерСтроки <= (Проц_30 + Проц_30) Тогда
     стр.КонструкторУсловий = Коэф_2;
 
  КонецЕсли;
КонецЦикла;
При нажатии вообще ничего не происходит, что не так?
15 lubja
 
22.11.11
21:05
а отладчик что говорит? смотрел?
16 lubja
 
22.11.11
21:06
и где ты используешь Проц_25 и Проц_15?
17 informts
 
22.11.11
21:08
ОО, ну я ваще..
18 informts
 
22.11.11
21:18
блин, пусто выдает.
19 lubja
 
22.11.11
21:19
(18) по отладчику посмотри, что происходит, чему равны Проц_30, Проц_25, Проц_15, вообще, количество строк...
20 informts
 
22.11.11
21:22
они равно нулю
21 lubja
 
22.11.11
21:23
(20) количество строк чему равно?
22 informts
 
22.11.11
21:25
ТОвары.количество = 42
23 informts
 
22.11.11
21:26
Без Если стр.НомерСтроки движение происходит, а с Если нет
24 lubja
 
22.11.11
21:29
(22) исправь 0,3 0,25 0,25 на 0.3 0.25 0.15 то есть вместо запятых точки поставь (это мой косяк...)
25 informts
 
22.11.11
21:31
Ептить, это чудо Леночка, работает )))
26 informts
 
22.11.11
21:31
Спасибо большое!!
27 lubja
 
22.11.11
21:31
(25) не во что, потом отдашь! ;)
28 informts
 
28.11.11
19:28
Помогите еще разобраться, стоит задача подсчета количества купонов для выдачи.
Критерии выдачи таковы:
Выдаем купоны по следующей схеме:
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);
КонецЕсли;
КонецЦикла;
И с моим опытом для меня тупик, как теперь посчитать общее кол-во? И что тут я не так делаю??