Показано с 1 по 10 из 11
Тема: Перебор значений в цикле
-
16.02.2015, 21:37 #1
- Регистрация
- 22.11.2010
- Сообщений
- 7
- Сказал(а) спасибо
- 1
- Поблагодарили 0 раз(а) в 0 сообщениях
Перебор значений в цикле
Добрый вечер.
Подскажите с решением проблемки.
Есть три кладовщика Петя. Вася. Сережа. При форматировании расходной накладной зависимости от номера накладной ( точнее её последней цифры) выбивается кладовщик который собирает товар.
Решил проблему таким образом код ниже. Но столкнулся с проблемой что при такой схеме Петя будет за 10 собраных накладных собирать 4 раза, а Вася и Сережа по 3 раза. Получается дискриминация кладовщиков...:cool:
Хотелось бы решить так. При первом проходе цикла собирали Петя- 4 раза. Вася-3 раза и Сережа-3. при втором проходе цикла Петя-3 раза. Вася-4 раза Сережа-3 раза. При следующем проходе цикла Петя-3 раза. Вася-3 раза. Сережа-4 раза.
Т.е при таком плавающем раскладе все кладовщики в равных долях собирают товар..
Подскажите как изменить код чтоб выполнялось условие сбора в равных долях.?
код
если "0"=ПРАВ(Номер,1)
тогда СотрудникСклада="Петя"
иначе
если "1"=ПРАВ(Номер,1)
тогда СотрудникСклада="Вася"
иначе
если "2"=ПРАВ(Номер,1)
тогда СотрудникСклада="Сережа"
иначе
если "3"=Прав(Номер,1)
тогда СотрудникСклада="Петя"
иначе
если "4"=Прав(Номер,1)
тогда СотрудникСклада="Вася"
иначе
если "5"=Прав(Номер,1)
тогда СотрудникСклада="Сережа"
иначе
если "6"=Прав(Номер,1)
тогда СотрудникСклада="Петя"
иначе
если "7"=Прав(Номер,1)
тогда СотрудникСклада="Вася"
иначе
если "8"=Прав(Номер,1)
тогда СотрудникСклада="Сережа"
иначе
если "9"=Прав(Номер,1)
тогда СотрудникСклада="Петя"
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
конецЕсли;
Зарание спасибо.
-
17.02.2015, 08:18 #2
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Млин.
У тебя 3 кладовщика. Значит делишь номер накладной на 3 и по значению остатка (0, 1 или 2) работаешь соответственно Петю, Ваню или Серёжу
ПыСы. только без обид - боже, каких только быдлокодеров только не держит 1С :mad:
-
17.02.2015, 11:53 #3
- Регистрация
- 22.11.2010
- Сообщений
- 7
- Сказал(а) спасибо
- 1
- Поблагодарили 0 раз(а) в 0 сообщениях
Спасибо за ответ. Учится когда то нужно ж)))
Нужно чтоб сдвигались накладные по кладовщикам
т.е
накладные №0-9
Петя- берет накладные № 0,3,6,9
Вася-берет накладные № 1,4,7
Сережа-берет накладные № 2,5,8
Потом накладные №10-19
Петя- берет накладные № 2,5,8
Вася-берет накладные № 0,3,6,9
Сережа-берет накладные № 1,4,7
Потом накладные № 20-29
Петя- берет накладные № 1,4,7
Вася-берет накладные № 2,5,8
Сережа-берет накладные № 0,3,6,9
И так далее по накладным до 10000000
-
17.02.2015, 12:18 #4
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Нужно чтоб сдвигались накладные по кладовщикам
Повторяю... "Делишь на три полный номер целиком и смотришь остаток" - если остаток "0" - это Петя, если "1" - это Вася, если "2" - это Серёжа.
проверка
У Пети накладные 0, 3, 6,9,12,15,18,21,24,27,30 и т.д.
-
17.02.2015, 16:52 #5
- Регистрация
- 22.11.2010
- Сообщений
- 7
- Сказал(а) спасибо
- 1
- Поблагодарили 0 раз(а) в 0 сообщениях
Спасибо.
Реализовал как вы писали ещё в первом посте.
x=(Формат(ПРАВ(номер,9)/3,"ЧДЦ=1"));
если "0"=прав(x,1)
тогда СотрудникСклада="П"
иначе
если "3"=прав(x,1)
тогда СотрудникСклада="В"
иначе
если "7"=прав(x,1)
тогда СотрудникСклада="С"
ИНАЧЕ СотрудникСклада="" ;
конецЕсли;
конецЕсли;
конецЕсли;
-
17.02.2015, 17:45 #6
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Верно или нет?
Т.е.
x = НомерНакладной % 3;
Если х = 0 Тогда Кладовщик = "Петя";
ИначеЕсли х = 1 Тогда Кладовщик = "Саша";
ИначеЕсли х = 2 Тогда Кладовщик = "Вася";
Иначе Кладовщик = "ПустоеМесто";
КонецЕсли;
ПыСы. Только НомерНакладной должно быть число, а не "текст"
-
17.02.2015, 18:22 #7
- Регистрация
- 22.11.2010
- Сообщений
- 7
- Сказал(а) спасибо
- 1
- Поблагодарили 0 раз(а) в 0 сообщениях
Спасибо за помощь.
ПыСы. Только НомерНакладной должно быть число, а не "текст"
При том условии кода что я написал, разве работать не будет?
-
17.02.2015, 18:58 #8
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
разве работать не будет?
Нужно
НомерНакладной = Число(Прав(НомерДокумента,� �лСтр(НомерДокумента)-2));
Если знаете, что длина строки номера документа равно 9 символов, то можно сразу написать
НомерНакладной = Число(Прав(НомерДокумента, 7));
Или
Х = Число(Прав(НомерДокумента, 7)) % 3;
-
Пользователь сказал cпасибо:
candrey (17.02.2015)
-
17.02.2015, 23:04 #9
- Регистрация
- 22.11.2010
- Сообщений
- 7
- Сказал(а) спасибо
- 1
- Поблагодарили 0 раз(а) в 0 сообщениях
Вот так лучше?
есть преобразование к числу.
НомерСотрудника =Формат(Число(Сред(Номер,3))/3 - Цел(Число(Сред(Номер,3))/3),"ЧДЦ=1");
Если НомерСотрудника = "" Тогда
СотрудникСклада="В";
ИначеЕсли НомерСотрудника = "0,3" Тогда
СотрудникСклада="П"
ИначеЕсли НомерСотрудника = "0,7" Тогда
СотрудникСклада="С"
КонецЕсли;
-
-
18.02.2015, 07:48 #10
- Регистрация
- 29.01.2010
- Сообщений
- 1212
- Сказал(а) спасибо
- 30
- Поблагодарили 261 раз(а) в 245 сообщениях
Вот так лучше?
Плохо и в целом, и в частности (например неверный синтаксис функции Сред)
ПыСы. Я уже дал решение, смысла дальше перетирать глупости - скучно
Социальные закладки