Господа... Встала передо мной проблема написать обработку которая поменяет у номенклатуры артикул на схожий с кодом, за исключением того, что буквенный префикс также должен быть изменяемым (аа0001, аб0001,ав0001...). С цифрами все понятно, а вот с буквами не выходит. Если кто знает, подскажите, если можно с примером.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
По порядку. т.е. нумерация в АА0001 доходит до АА9999 и далее должно следовать АБ0001, дойдя в итоге до АЯ9999 следом вывести БЯ0001.
Сама идея у бухов родилась для сокращения разрядности кода номенклатуры, дабы вывести ее на ценники и клиентам было удобнее заниматься самообслуживанием. Дабы не выписывать из ценника ЦБ-78678326. Но код я трогать не стал, решив юзать артикул.
Сама идея у бухов родилась для сокращения разрядности кода номенклатуры, дабы вывести ее на ценники и клиентам было удобнее заниматься самообслуживанием. Дабы не выписывать из ценника ЦБ-78678326. Но код я трогать не стал, решив юзать артикул.
Предлагаю сделать так:
берёшь код номенклатуры к примеру: "8678326"
отсекаешь последнии 4 цифры и оставляешь их без изменения: "8326"
первые цифры "867" делишь на количество используемых у тебя букв (к примеру 36)
получаешь целую часть от деления - она будет соответствовать номеру первой буквы (в данном случае это 24-ая буква)
и остатком от деления у тебя будет номер второй буквы (в данном случае это 3-я буква)
потом складываешь и получаешь нужные тебе артикул:
(24-ая буква)+(3-я буква)+"8326"
если есть коды побольше то можно и 2 раза делить тем самым получить 3 буквы
берёшь код номенклатуры к примеру: "8678326"
отсекаешь последнии 4 цифры и оставляешь их без изменения: "8326"
первые цифры "867" делишь на количество используемых у тебя букв (к примеру 36)
получаешь целую часть от деления - она будет соответствовать номеру первой буквы (в данном случае это 24-ая буква)
и остатком от деления у тебя будет номер второй буквы (в данном случае это 3-я буква)
потом складываешь и получаешь нужные тебе артикул:
(24-ая буква)+(3-я буква)+"8326"
если есть коды побольше то можно и 2 раза делить тем самым получить 3 буквы
Серёга, завидую тебе. До такой степени сложное решение мне в голову не приходило:))) (Я три раза перечитал пока до меня дошел смысл). Только зачем идти таким путем когда можно просто задать символьный массив. Я просто не знаю как это в 1с реализуется...
Но все равно спасибо.
Но все равно спасибо.
Я видимо сам напустил тумана:)) Фраза "код номенклатуры" была приведена просто как предполагаемый (но отметенный) путь решения проблемы, и никакой связи между ним и предполагаемым артикулом, за исключения некой внешней схожести, не требуется.
"символьный массив", впринципе я и предполагал использовать строку типа "АБВГДЕ..." в которой с помощью функции Сред() выбираешь нужный тебе символ, только этот механизм не описывал.
по поводу связи с кодом - это наилучший вариант.
по поводу связи с кодом - это наилучший вариант.
Тебе было бы не сложно описать в общих чертах сам механизм... И если делал, что то подобное то лучше кинь кусок кода по формированию символьного массива и обращения к конкретному символу. А то я нигде это найти не смог, а то что сам додумал... не работает.
если я правильно понял, что надо, то вот:
//*******************************************
Процедура Сформировать()
стр = "абвгдеёжзиклмнопрстууфхцчшщьыъэюя";
Для к1 = 1 По 33 Цикл
Для к2 = 1 По 33 Цикл
Для к3 = 1 по 100 Цикл
арт = Сред(стр,к1,1)+Сред(стр,к2,1)+Строка(Формат(к3,"Ч(0)3"));
Сообщить(арт);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
Я имел в виду такой способ:
Код |
---|
Функция ПолучитьАртикул(пКод)
_Символы = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ";
_ЧислоСимволов = СтрДлина(_Символы);
_ЧастьКода1 = Число(Лев(пКод, СтрДлина(пКод) - 4));
_ЧастьКода2 = Прав(пКод, 4);
_НомСимвола1 = Цел(_ЧастьКода1 / _ЧислоСимволов);
_НомСимвола2 = _ЧастьКода1 - _НомСимвола1 * _ЧислоСимволов;
Возврат Сред(_Символы, _НомСимвола1, 1) + Сред(_Символы, _НомСимвола2, 1) + _ЧастьКода2;
КонецФункции
Показать полностью |
ssp_ Написал:
-------------------------------------------------------
> Господа, зачем вам массив символов? Они и так
> закодированы по
> порядку.
Знак=Симв(КодСимв("А")+НомСимвола)
>
> и всё.
> Здесь НомСимвола должен быть от 0 до 31
Идея хорошая только не все символы желательно использовать, к примеру такой код как ЙЁ1234 никому не нужен будет.
-------------------------------------------------------
> Господа, зачем вам массив символов? Они и так
> закодированы по
> порядку.
Знак=Симв(КодСимв("А")+НомСимвола)
>
> и всё.
> Здесь НомСимвола должен быть от 0 до 31
Идея хорошая только не все символы желательно использовать, к примеру такой код как ЙЁ1234 никому не нужен будет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот