Перебор значений в цикле
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Комбинированный просмотр

  1. #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)
    тогда СотрудникСклада="Петя"



    конецЕсли;
    конецЕсли;
    конецЕсли;

    конецЕсли;
    конецЕсли;
    конецЕсли;

    конецЕсли;
    конецЕсли;
    конецЕсли;
    конецЕсли;

    Зарание спасибо.

  2. #2
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию

    Млин.
    У тебя 3 кладовщика. Значит делишь номер накладной на 3 и по значению остатка (0, 1 или 2) работаешь соответственно Петю, Ваню или Серёжу

    ПыСы. только без обид - боже, каких только быдлокодеров только не держит 1С :mad:

  3. #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

  4. #4
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию

    Нужно чтоб сдвигались накладные по кладовщикам
    Млин.
    Повторяю... "Делишь на три полный номер целиком и смотришь остаток" - если остаток "0" - это Петя, если "1" - это Вася, если "2" - это Серёжа.
    проверка
    У Пети накладные 0, 3, 6,9,12,15,18,21,24,27,30 и т.д.

  5. #5
    Гость форума

    Регистрация
    22.11.2010
    Сообщений
    7
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Спасибо.
    Реализовал как вы писали ещё в первом посте.

    x=(Формат(ПРАВ(номер,9)/3,"ЧДЦ=1"));


    если "0"=прав(x,1)
    тогда СотрудникСклада="П"
    иначе
    если "3"=прав(x,1)
    тогда СотрудникСклада="В"
    иначе
    если "7"=прав(x,1)
    тогда СотрудникСклада="С"

    ИНАЧЕ СотрудникСклада="" ;



    конецЕсли;
    конецЕсли;
    конецЕсли;
    Прошу прокомментировать. Верно или нет?

  6. #6
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию

    Верно или нет?
    (тяжело вздыхая). А прочитать про такой вид арифметических операций как "остаток от деления"

    Т.е.
    x = НомерНакладной % 3;
    Если х = 0 Тогда Кладовщик = "Петя";
    ИначеЕсли х = 1 Тогда Кладовщик = "Саша";
    ИначеЕсли х = 2 Тогда Кладовщик = "Вася";
    Иначе Кладовщик = "ПустоеМесто";
    КонецЕсли;


    ПыСы. Только НомерНакладной должно быть число, а не "текст"

  7. #7
    Гость форума

    Регистрация
    22.11.2010
    Сообщений
    7
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Спасибо за помощь.
    ПыСы. Только НомерНакладной должно быть число, а не "текст"
    Скажите, а у меня номер накладной имеет вид №ПР0000567 т.е из букв и цифр

    При том условии кода что я написал, разве работать не будет?

  8. #8
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию

    разве работать не будет?
    Не будет
    Нужно
    НомерНакладной = Число(Прав(НомерДокумента,� �лСтр(НомерДокумента)-2));

    Если знаете, что длина строки номера документа равно 9 символов, то можно сразу написать
    НомерНакладной = Число(Прав(НомерДокумента, 7));

    Или
    Х = Число(Прав(НомерДокумента, 7)) % 3;

  9. Пользователь сказал cпасибо:

    candrey (17.02.2015)

  10. #9
    Гость форума

    Регистрация
    22.11.2010
    Сообщений
    7
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Вот так лучше?
    есть преобразование к числу.

    НомерСотрудника =Формат(Число(Сред(Номер,3))/3 - Цел(Число(Сред(Номер,3))/3),"ЧДЦ=1");


    Если НомерСотрудника = "" Тогда
    СотрудникСклада="В";
    ИначеЕсли НомерСотрудника = "0,3" Тогда
    СотрудникСклада="П"
    ИначеЕсли НомерСотрудника = "0,7" Тогда
    СотрудникСклада="С"

    КонецЕсли;

  11. #10
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию

    Вот так лучше?
    Плохо.
    Плохо и в целом, и в частности (например неверный синтаксис функции Сред)

    ПыСы. Я уже дал решение, смысла дальше перетирать глупости - скучно

Страница 1 из 2 12 ПоследняяПоследняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •