Группа: Пользователи
Сообщений: 155
Спасибо сказали: 6 раз
Рейтинг: 0
Добрый вечер. В наличии 1С Предприятие 8.2, релиз Управление тороговым предприятием для Украины 1.2. Файловый вариант. Подскажите с решением проблемы, немогу составить цикл отбора кладовщиков.
Есть три кладовщика Петя. Вася. Сережа. При форматировании расходной накладной зависимости от номера накладной ( точнее её последней цифры) выбивается кладовщик который собирает товар. Решил проблему таким образом код ниже. Но столкнулся с проблемой что при такой схеме Петя за 10 собраных накладных будет собирать 4 раза, а Вася и Сережа по 3 раза. Получается дискриминация кладовщиков...
Хотелось бы решить так. При первом проходе (при сквозном создании накладных от 0 до 9) собирали Петя- 4 раза. Вася-3 раза и Сережа-3. При втором проходе (Накладные от 0 до 9) Петя-3 раза. Вася-4 раза Сережа-3 раза. При следующем проходе Петя-3 раза. Вася-3 раза. Сережа-4 раза (Накладные от 0 до 9). И так по кругу. Т.е при таком плавающем раскладе (происходит движение кладовщика перебором) все кладовщики в равных долях собирают товар. Накладные идут от 0 до 10000 по порядку.
Подскажите как изменить код чтоб выполнялось условие формирование в равных долях.?
если "0"=ПРАВ(Номер,1) тогда СотрудникСклада="Петя" иначе если "1"=ПРАВ(Номер,1) тогда СотрудникСклада="Вася" иначе если "2"=ПРАВ(Номер,1) тогда СотрудникСклада="Сережа" иначе если "3"=Прав(Номер,1) тогда СотрудникСклада="Петя" иначе если "4"=Прав(Номер,1) тогда СотрудникСклада="Вася" иначе если "5"=Прав(Номер,1) тогда СотрудникСклада="Сережа" иначе если "6"=Прав(Номер,1) тогда СотрудникСклада="Петя" иначе если "7"=Прав(Номер,1) тогда СотрудникСклада="Вася" иначе если "8"=Прав(Номер,1) тогда СотрудникСклада="Сережа" иначе если "9"=Прав(Номер,1) тогда СотрудникСклада="Петя"
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Символ = ПРАВ(Номер,1); ЕСЛИ Символ = "9" ИЛИ Символ = "0" ТОГДА СотрудникСклада="Петя"; ИНАЧЕЕСЛИ ЕСЛИ Символ = "1" ИЛИ Символ = "4" ТОГДА СотрудникСклада = "Вася"; ИНАЧЕЕСЛИ ........................... ........................... ........................... КОНЕЦЕСЛИ; Символ = ""; СотрудникСклада = "";
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 6 раз
Рейтинг: 0
Цитата(kosalex @ 17.02.15, 8:19)
Символ = ПРАВ(Номер,1); ЕСЛИ Символ = "9" ИЛИ Символ = "0" ТОГДА СотрудникСклада="Петя"; ИНАЧЕЕСЛИ ЕСЛИ Символ = "1" ИЛИ Символ = "4" ТОГДА СотрудникСклада = "Вася"; ИНАЧЕЕСЛИ ........................... ........................... ........................... КОНЕЦЕСЛИ; Символ = ""; СотрудникСклада = "";
Спасибо за ответ. Но при вашем условии получается так же как я описал выше
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 6 раз
Рейтинг: 0
Спасибо за помощь
Решил таким способом. Т.е Все кладовщики собирают накладные по очереди и все довольны))
x=(Формат(ПРАВ(номер,9)/3,"ЧДЦ=1"));
если "0"=прав(x,1) тогда СотрудникСклада="Вася" иначе если "3"=прав(x,1) тогда СотрудникСклада="ПЕтя" иначе если "7"=прав(x,1) тогда СотрудникСклада="Сережа"
Если НомерСотрудника = "" Тогда СотрудникСклада="Петя"; ИначеЕсли НомерСотрудника = "0,3" Тогда СотрудникСклада="Вася" ИначеЕсли НомерСотрудника = "0,7" Тогда СотрудникСклада="Сережа" КонецЕсли;
Если НомерСотрудника = "" Тогда СотрудникСклада="Петя"; ИначеЕсли НомерСотрудника = "0,3" Тогда СотрудникСклада="Вася" ИначеЕсли НомерСотрудника = "0,7" Тогда СотрудникСклада="Сережа" КонецЕсли;
Проверял, вроде работает как нужно.
Попробывал ваш метод выдает ошибку
Цитата
Преобразование значения к типу Число не может быть выполнено НомерСотрудника =Формат(Число(Номер)/3 - Цел(Число(Номер)/3),"ЧДЦ=1");
У меня номер накладной состоит из букв и цифр. типа №АФ00000789 Как тут поступить?
Номер = "№АФ00000789"; Пока НЕ (КодСимвола(Лев(Номер, 1)) >= 48 И КодСимвола(Лев(Номер, 1)) <= 57)Цикл Номер = Сред(Номер, 2); КонецЦикла; РезультатЧисло = Число(Номер); //789
Если НомерСотрудника = "" Тогда СотрудникСклада="Вася"; ИначеЕсли НомерСотрудника = "0,3" Тогда СотрудникСклада="Петя" ИначеЕсли НомерСотрудника = "0,7" Тогда СотрудникСклада="Сережа" КонецЕсли;
А если на склад прийдет еще какой-нибудь "Саша"... или вместо Пети прийдет Галя, и не захочет заходить в программу под Петей.. Будут Вас вызывать, править код. Деньги Вам платить. Что, в общем, хорошо, конечно..
Указанное условие должно быть где-то подано табличкой ..в справочнике, регистре сведений... находите номерсотрудника, потом в этой табличке по номерусотрудника находите соотвествующего пользователя. Без условий.
Может правильнее и без изменения структуры конфигурации: таблица значений создается и заполняется где-то при начале работы.
Сообщение отредактировал Домовик - 17.02.15, 23:17
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 6 раз
Рейтинг: 0
Всем спасибо еще раз за верную критику
Предыдущий пост дал новую идею. А если скажем появится новый кладовщик -четвертый "Александр" то мы этот код делим на 4 и всё? Или тут вступает другое правило вычисления кладовщика?
а в формуле номераСотрудника деление на КоличествоКладовщиков.
Формирование коэффициентов для пользователей можно тоже запрограммировать.( А можно и указывать вручную, если таблица не расчитываемой, а в составе конфигурации.
расчет коэффициентов: делим числа от 1 до КоличествоКладовщиков на КоличествоКладовщиков.
1
Сообщение отредактировал Домовик - 18.02.15, 10:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!