ЗиК 7.7, 288 рел. Спр.Сотрудники. Замена значения в Адресной строке.

Новая тема
"Добрый день! Ситуация следующая. У нас в спр. "Сотрудники" (после заполнения)в поле адреса вместо наименования региона стоит его код (нпр, 78, что означает Санкт-Петербург г). Так вот, хочу написать обработку, которая меняет(преобразует) этот код на наименование. Из справочника "Сотрудники" я его вытаскиваю:
----------
Сп = СоздатьОбъект("Справочник.Сотрудники");
АдресСписком = глРазложить(Сп.АдресПрописка);
Регион   = АдресСписком.ПолучитьЗначение(3); // регион
-----------
А как мне его теперь заменить на наименование в самом справочнике Сотрудники?
Пробовал  с помощью:
-----------------
Регион = СтрЗаменить(Регион, "78","Санкт-Петербург г");
------------
Да только ничего не получается..(как указать, что изменить нужно в самом справочнике?)  Может есть какая-то  функция преобразования ??? "
а 1С-ная функция глПредставлениеАдреса разве не преобразовывает АдресСписком в очеловеченное представление?
"> а 1С-ная функция глПредставлениеАдреса разве не преобразовывает АдресСписком в очеловеченное представление?
Если Адрес набит в соответствии с форматом ФНС - преобразовывает.
Но я так понимаю, что автору нужно иное. Исправить программно неверно введенный адрес.
Продолжим ваш текст:

Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
  Если Сп.ЭтоГруппа()=1 Тогда
      Продолжить;
  КонецЕсли;
  АдресСписком = глРазложить(Сп.АдресПрописка); ///разложили строку в список значений.
  АдресСписком.УстановитьЗначение(3,"Санкт-Петербург");   ///Меняете регион
  АдресНовый="," + СокрЛП(АдресСписком.ПолучитьЗначение(2)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(3)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(4)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(5)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(6)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(7)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(8)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(9)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(10));
   Сп.АдресПрописка=АдресНовый;
   Сп.Записать();
КонецЦикла;

Что-то типа этого. Не проверяла. Может надо добавить условия смены адреса. Еще проверьте индексы - должно быть так:
                       "," + СокрЛП(Индекс) +
"," + СокрЛП(Регион) +
"," + СокрЛП(Район) +
"," + СокрЛП(Город) +
"," + СокрЛП(НасПункт) +
"," + СокрЛП(Улица) +
"," + СокрЛП(Дом) +
"," + СокрЛП(Корпус) +
"," + СокрЛП(Квартира);
"
БОЛЬШОЕ СПАСИБО! Все получилось!
Странно. Если он вбит не в формате ФНС, как он в СписокЗначений раскладывается?
Просто, я так понимаю, функция глПредставлениеАдреса не просто раскладывает в список, а берет строчку, делит по запятым и к определенным позициям добавляет слова "д.","кв." и убирает первую запятую и возвращает опять строку - и если поля оказываются не на своем месте, то получается билиберда. Количество запятых может оказаться неверным и тогда на месте дома может оказаться, н-р, улица.
Именно это я имела в виду, что количество запятых и позиций элементов должно соответствовать формату ФНС.
Может я и не права, но сталкивалась с таким - особенно при экспорте справочника сотрудников из каких-либо внешних источников - сначала приходилось приводить в порядок строку адреса, а потом уж загружать
Ааа, ну может быть. Кстати... я делал однажды одну полезную штуку, которая адреса из формата ФНС преобразует в нормальный человеческий вид, то есть, адрес из формата: "НазваниеГорода г., НазваниеУлицы ул." преобразуется в тот вид, который нормальные люди используют. Для этого я добавил отдельный dbf, в котором описал правила преобразования. В общем, если кому интересно будет, поделюсь
Добрый день, Светлана! Я уже непосредственно к Вам обращаюсь, поскольку Вы в курсе наших проблем. Я, наверное, никогда с Вами не рассчитаюсь..... )))
Опять возвращаясь к нашему спр. Сотрудники, столкнулись еще с одним вопросом: в паспортных данных в поле "серия" при условии, что вид документа "Паспорт гражданина России" у нас стоит, нпр,  строка вида "4107" , а по шаблону, насколько я знаю, вид должен быть таким "41 07", т.е. через пробел. Можно ли как-то преобразовать эту строку к такому виду???
"Можно очень похоже на предыдущее:

Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
 Если Сп.ЭтоГруппа()=1 Тогда
     Продолжить;
 КонецЕсли;
 Паспорт = глРазложить(Сп.ДокументУдЛичность); ///разложили строку в список значений.
Если Паспорт.ПолучитьЗначение(1)="Паспорт гражданина России" Тогда
 Серия= Паспорт.ПолучитьЗначение(2);
 Паспорт.УстановитьЗначение(2,Лев(Серия,2)+" "+Прав(Серия,2));  
 ПаспортНовый="""";
 Для Цикл к=1 По Паспорт.РазмерСписка() Цикл   // просто не знаю, сколько там элементов
    ПаспортНовый+ Паспорт.ПолучитьЗначение(к);
 КонецЦикла
  Сп.ДокументУдЛичность=ПаспортНовый;
  Сп.Записать();
КонецЕсли;
КонецЦикла;

Я не проверяю, есть ли там на самом деле серия, считаю, что есть. Если надо вставьте проверку."
Читают тему
(гостей: 1)

Быстрый переход