Вход | Регистрация

1С:Предприятие ::

Метки: 

Нужно увеличить на единицу второй символ справочника, а каким образом :(

Я
   ValleySilence
 
05.12.03 - 09:11
Граждане, проблемка, помогите, пожалуйста.
У меня есть справочник "Группа". В поле "Наименование" вбиваются наименования учебных групп, типа (А1-1,М1-1,Т2-1,А3-1). Тип реквизита
"Наименование" - строка, длина -4.
Хочу сделать обработку, которая увеличивала бы второй символ справочника на единицу, например А1-1 стал А2-1
 
  Рекламное место пустует
   gr13
 
1 - 05.12.03 - 09:16
Попробуй через функцию "Лев".
Стр. 60 Описание встроенного языка. Я думаю с помощью ее можно сделать, помучиться конечно прийдется, но можно.
Удачи, напиши потом получилось или нет
   GrayT
 
2 - 05.12.03 - 09:37
НоваяГруппа = Лев(Гр,1,1)+Число(Сред(Гр,1,1,)+1) + Сред(Гр,3)
   Puh
3 - 05.12.03 - 09:39
В обработке создаешь справочник.Группа 
Цикл по элементам
В переменную кидаешь наименование 
А=Спр.Наименование
Б=Лев(А,2// из строки с наменованием выбираем первые символы группы

В=Число(Прав(Б,1))+// берем второй символ наименования превращаем в число и увеличиваем на 1

С=Прав(Б,1)+В 
Спр.Наименование=СтрЗаменить(А,Б,С//записываем в справочник  новое наименование, которое формируется из старого наименования с заменой первых двух символов новыми.


А почему встал такой вопрос? Это учебное заведение и после начала нового учебного года изменяется нумерация групп?

PS писал без проверки  возможны ошибки :(
   ValleySilence
 
4 - 05.12.03 - 10:15
Пух, не пойму почему записывать не хочет новое наименование. Кричит :

Спр.Наименование=СтрЗаменить(А,Б,С)//записываем в справочник
{Обработка.ПереводНаГод.Форма.Модуль(11)}:Изменено Наименование! Может быть нарушена последовательность выборки!

Ошибки перед запуском обработки проверил.
   Львенок
 
5 - 05.12.03 - 10:39
На самом деле вот так (проверено, работает):

Процедура Выполнить()
    Спр=СоздатьОбъект("Справочник.Группа"); 
    Спр.ПорядокКодов();//Иначе может не работать!

    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл             
        Гр=Спр.Наименование;
        Спр.Наименование=Лев(Гр,1)+Строка(Число(Сред(Гр,2,1))+1)+Сред(Гр,3);
        Спр.Записать();
        Сообщить ("Группа изменена с "+Гр+" на "+Спр.Наименование);
    КонецЦикла;
КонецПроцедуры
___
Искренне Ваш, Львенок.
   gr13
 
6 - 05.12.03 - 10:52
вот Львенок молодец. Но знает ли он, что то что дается без труда, то и забывается в два счета?
   Puh
7 - 05.12.03 - 10:56
(4) ага я же говорю ошибки :( 
Забыл Спр.Записать()
у Львенка более корректная процедура и код короче
   ValleySilence
 
8 - 05.12.03 - 11:38
(7)Пух, строчку Спр.Записать() я давно уже добавил, а ошибка та же. А Львенок действительно М О Л О Д Е Ц
и совершенно правильно заметил, что без строки
Спр.ПорядокКодов() работать не будет.
(6)Я бы с удовольствием никого \"не грузил\" своими вопросами, если бы много программировал и располагал временем.

Благодарю всех, тема закрыта.


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует