7.7 нужен совет по обработке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем volodya1122, 31 мар 2011.

  1. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    Здраствуйте. Нужен совет.
    Я с Украины. Пишу обработку в которой мне нужно заменить латинскую букву "i" на
    соотвествующую украинскую в справочнике "Контрагенты".(конфигурация самописная на 7.7)
    Для чего это мне нужно? Украинская и латинская буква "i" одинаковые (ля печати). Только в
    справочнике "Контрагенты" сортировка по наименованию, и естественно когда в наименовании
    контрагента есть латинская "i" то список контрагентов не отсортирован так как должен быть.
    я написал маленькую обрпботку. И она делает то что должна. Но почемуто сортировка всеравно
    не происхлодит так как должна быть.
    Опытным путем я выяснил что она на самом деле делает: Наименование изменяет, но в форме
    списка буквы всеравно не изменяются. Но когда я открываю нужного контрагента для изменения
    (в "Предприятие") то уже нужная буква стоит измененной, и только нужно нажать "Сохранить".
    Для примера я пытался изменить латинскую "s" на кирилицу "ч" . Так вот обработка прошла
    успешно, указала, что изменила символ "s" на "ч" в наименовании контрагента. Но в списке
    контрагентов я всеравно вижу наименование контрагента с буквой "s" . Открываю даного
    контрагента и вижу что в наименовании уже есть нужная "ч". Закрываю- ничего не происходит
    (символ не изменился). Если нжимаю сохранить (контрагента) то в списке контрагентов "s"
    изменился на "ч" и Контрагент встал на свое место в отсортированом списке.
    Так вот не пойму в чем проблема,




    Код:
    Процедура Выполнить()    
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("друк");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);    
    
    н=0;
    спр=СоздатьОбъект("Справочник.Контрагенти"); 
    
    Спр.ВыбратьЭлементы(0);
    Пока Спр.ПолучитьЭлемент()=1 Цикл  
    секц1=0;
    Если Спр.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли; 
    призв=сокрлп(спр.Прізвище);
    Имя=сокрлп(Спр.Імя);
    ПоБатьк=сокрлп(Спр.ПоБатькові);
    
    //----------------------------------------------------     
    Если Найти(спр.Прізвище,"s") <> 0 тогда 
    спр.Прізвище=СтрЗаменить(спр.Прізвище,"s","ч");    
    секц1=1;
    КонецЕсли;  
    
    //-----------------------------------------------------          
    
    Если секц1=1 тогда
    н=н+1;
    Спр.Записать();   
    Таб.ВывестиСекцию("Строка1"); 
    Таб.ВывестиСекцию("Строка2");    
    Таб.ВывестиСекцию("Пуста");   
    КонецЕсли;    
    
    КонецЦикла;
    
    Таб.ПараметрыСтраницы(1,,,,,,,,,1);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("обробка користувачів","");
    КонецПроцедуры
    
    
    
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Дело в том, что сортировка происходит по реквизиту "Наименование". Поэтому и менять нужно его
    Код:
    Если Найти(спр.Прізвище,"s") <> 0 тогда 
    спр.Прізвище=СтрЗаменить(спр.Прізвище,"s","ч");    
    секц1=1;
    КонецЕсли; 
    
    
    Замени на
    Код:
    Если Найти(спр.Наименование,"s") <> 0 тогда 
    спр.Наименование=СтрЗаменить(спр.Наименование,"s","ч");    
    секц1=1;
    КонецЕсли; 
    
    
  3. TopicStarter Overlay
    volodya1122
    Offline

    volodya1122 Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    96
    Симпатии:
    1
    Баллы:
    26
    Вот что значит профи. Даже не видя моей конфигугации, разобраля что и к чему. Спасибо.

Поделиться этой страницей