AnryMc @ Сегодня, 17:20
необходимо зарегистрироваться для просмотра ссылки
,
Нет, к несчастью. Он может быть вида %X%/%Y%/%Z%, может вида ХХХХХ, может ХХХХХ-12, может %X%/%Y%. Я не вижу вариантов как по другому, кроме посимвольно. При том, что если в артикуле есть "-", к примеру МММММ-12/ООООО58 артикулы брать МММММ и ООООО58.
Сейчас так.
Для каждого Зап Из ТЗ Цикл
Зап.Артикул = Зап.Номенклатура.Артикул;
СтрокаАртикулы = "";
Если Зап.Артикул <> "" Тогда
Если Найти(Зап.Артикул,"-") > 0 ИЛИ Найти(Зап.Артикул,"/") > 0 Тогда
СтрокаАртикулы = "";
ПредСимвол = 0;
Для Инд = 1 По СтрДлина(Зап.Артикул) Цикл
Симв = Сред(Зап.Артикул,Инд,1);
Если Симв = "/" ТОгда
Если ПредСимвол <> -1 Тогда
СтрокаАртикулы = СтрокаАртикулы + Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол)+" ";
мАртикулы.Добавить(Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол));
НовЗапАрт = тАрт.Добавить();
НовЗапАрт.Номенклатура = Зап.Номенклатура;
НовЗапАрт.Артикул = Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол);
ПредСимвол = Инд;
Иначе
ПредСимвол = Инд;
КонецЕсли;
КонецЕсли;
Если Симв = "-" Тогда
СтрокаАртикулы = СтрокаАртикулы + Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол)+" ";
мАртикулы.Добавить(Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол));
НовЗапАрт = тАрт.Добавить();
НовЗапАрт.Номенклатура = Зап.Номенклатура;
НовЗапАрт.Артикул = Сред(Зап.Артикул,ПредСимвол+1,Инд - 1 - ПредСимвол);
ПредСимвол = -1;
КонецЕсли;
КонецЦикла;
Если ПредСимвол <> -1 Тогда
СтрокаАртикулы = СтрокаАртикулы + Сред(Зап.Артикул,ПредСимвол+1,СтрДлина(Зап.Артикул)-ПредСимвол)+" ";
мАртикулы.Добавить(Сред(Зап.Артикул,ПредСимвол+1,СтрДлина(Зап.Артикул)-ПредСимвол));
НовЗапАрт = тАрт.Добавить();
НовЗапАрт.Номенклатура = Зап.Номенклатура;
НовЗапАрт.Артикул = Сред(Зап.Артикул,ПредСимвол+1,СтрДлина(Зап.Артикул)-ПредСимвол);
КонецЕсли;
Иначе
СтрокаАртикулы = Зап.Артикул;
мАртикулы.Добавить(Зап.Артикул);
НовЗапАрт = тАрт.Добавить();
НовЗапАрт.Номенклатура = Зап.Номенклатура;
НовЗапАрт.Артикул = Зап.Артикул;
КонецЕсли;
Зап.Рез = СтрокаАртикулы;
КонецЕсли;
КонецЦикла;
Talkman @ Сегодня, 17:26
необходимо зарегистрироваться для просмотра ссылки
,
1. Если нет "-" и "/" берем весь артикул.
2. Парсим посимвольно. Если есть "-" - берем артикул до"-" от предыдущего начального символа. Запоминаем что следующая "/" будет начальной.
3. Если "/", тогда проверяем, не было ли раньше "-". Если не было - берем артикул от начального символа до "/". Ставим нач символ на позицию "/". Если "-" был, просто ставим нач. символ на позицию "/".
и т.д
4. -1 - показатель, что артикул уже взят и его еще раз брать не нужно.