ЗиК 7.7, 288 рел. Спр.Сотрудники. Замена значения в Адресной строке.
18.06.2009
11:50
#1
"Добрый день! Ситуация следующая. У нас в спр. "Сотрудники" (после заполнения)в поле адреса вместо наименования региона стоит его код (нпр, 78, что означает Санкт-Петербург г). Так вот, хочу написать обработку, которая меняет(преобразует) этот код на наименование. Из справочника "Сотрудники" я его вытаскиваю:
----------
Сп = СоздатьОбъект("Справочник.Сотрудники");
АдресСписком = глРазложить(Сп.АдресПрописка);
Регион = АдресСписком.ПолучитьЗначение(3); // регион
-----------
А как мне его теперь заменить на наименование в самом справочнике Сотрудники?
Пробовал с помощью:
-----------------
Регион = СтрЗаменить(Регион, "78","Санкт-Петербург г");
------------
Да только ничего не получается..(как указать, что изменить нужно в самом справочнике?) Может есть какая-то функция преобразования ??? "
----------
Сп = СоздатьОбъект("Справочник.Сотрудники");
АдресСписком = глРазложить(Сп.АдресПрописка);
Регион = АдресСписком.ПолучитьЗначение(3); // регион
-----------
А как мне его теперь заменить на наименование в самом справочнике Сотрудники?
Пробовал с помощью:
-----------------
Регион = СтрЗаменить(Регион, "78","Санкт-Петербург г");
------------
Да только ничего не получается..(как указать, что изменить нужно в самом справочнике?) Может есть какая-то функция преобразования ??? "
18.06.2009
12:11
#2
а 1С-ная функция глПредставлениеАдреса разве не преобразовывает АдресСписком в очеловеченное представление?
18.06.2009
15:41
#3
"> а 1С-ная функция глПредставлениеАдреса разве не преобразовывает АдресСписком в очеловеченное представление?
Если Адрес набит в соответствии с форматом ФНС - преобразовывает.
Но я так понимаю, что автору нужно иное. Исправить программно неверно введенный адрес.
Продолжим ваш текст:
Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
Если Сп.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
АдресСписком = глРазложить(Сп.АдресПрописка); ///разложили строку в список значений.
АдресСписком.УстановитьЗначение(3,"Санкт-Петербург"); ///Меняете регион
АдресНовый="," + СокрЛП(АдресСписком.ПолучитьЗначение(2)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(3)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(4)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(5)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(6)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(7)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(8)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(9)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(10));
Сп.АдресПрописка=АдресНовый;
Сп.Записать();
КонецЦикла;
Что-то типа этого. Не проверяла. Может надо добавить условия смены адреса. Еще проверьте индексы - должно быть так:
"," + СокрЛП(Индекс) +
"," + СокрЛП(Регион) +
"," + СокрЛП(Район) +
"," + СокрЛП(Город) +
"," + СокрЛП(НасПункт) +
"," + СокрЛП(Улица) +
"," + СокрЛП(Дом) +
"," + СокрЛП(Корпус) +
"," + СокрЛП(Квартира);
"
Если Адрес набит в соответствии с форматом ФНС - преобразовывает.
Но я так понимаю, что автору нужно иное. Исправить программно неверно введенный адрес.
Продолжим ваш текст:
Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
Если Сп.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
АдресСписком = глРазложить(Сп.АдресПрописка); ///разложили строку в список значений.
АдресСписком.УстановитьЗначение(3,"Санкт-Петербург"); ///Меняете регион
АдресНовый="," + СокрЛП(АдресСписком.ПолучитьЗначение(2)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(3)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(4)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(5)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(6)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(7)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(8)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(9)) +
"," + СокрЛП(АдресСписком.ПолучитьЗначение(10));
Сп.АдресПрописка=АдресНовый;
Сп.Записать();
КонецЦикла;
Что-то типа этого. Не проверяла. Может надо добавить условия смены адреса. Еще проверьте индексы - должно быть так:
"," + СокрЛП(Индекс) +
"," + СокрЛП(Регион) +
"," + СокрЛП(Район) +
"," + СокрЛП(Город) +
"," + СокрЛП(НасПункт) +
"," + СокрЛП(Улица) +
"," + СокрЛП(Дом) +
"," + СокрЛП(Корпус) +
"," + СокрЛП(Квартира);
"
18.06.2009
20:30
#6
Просто, я так понимаю, функция глПредставлениеАдреса не просто раскладывает в список, а берет строчку, делит по запятым и к определенным позициям добавляет слова "д.","кв." и убирает первую запятую и возвращает опять строку - и если поля оказываются не на своем месте, то получается билиберда. Количество запятых может оказаться неверным и тогда на месте дома может оказаться, н-р, улица.
Именно это я имела в виду, что количество запятых и позиций элементов должно соответствовать формату ФНС.
Может я и не права, но сталкивалась с таким - особенно при экспорте справочника сотрудников из каких-либо внешних источников - сначала приходилось приводить в порядок строку адреса, а потом уж загружать
Именно это я имела в виду, что количество запятых и позиций элементов должно соответствовать формату ФНС.
Может я и не права, но сталкивалась с таким - особенно при экспорте справочника сотрудников из каких-либо внешних источников - сначала приходилось приводить в порядок строку адреса, а потом уж загружать
19.06.2009
09:48
#7
Ааа, ну может быть. Кстати... я делал однажды одну полезную штуку, которая адреса из формата ФНС преобразует в нормальный человеческий вид, то есть, адрес из формата: "НазваниеГорода г., НазваниеУлицы ул." преобразуется в тот вид, который нормальные люди используют. Для этого я добавил отдельный dbf, в котором описал правила преобразования. В общем, если кому интересно будет, поделюсь
02.07.2009
12:17
#8
Добрый день, Светлана! Я уже непосредственно к Вам обращаюсь, поскольку Вы в курсе наших проблем. Я, наверное, никогда с Вами не рассчитаюсь..... )))
Опять возвращаясь к нашему спр. Сотрудники, столкнулись еще с одним вопросом: в паспортных данных в поле "серия" при условии, что вид документа "Паспорт гражданина России" у нас стоит, нпр, строка вида "4107" , а по шаблону, насколько я знаю, вид должен быть таким "41 07", т.е. через пробел. Можно ли как-то преобразовать эту строку к такому виду???
Опять возвращаясь к нашему спр. Сотрудники, столкнулись еще с одним вопросом: в паспортных данных в поле "серия" при условии, что вид документа "Паспорт гражданина России" у нас стоит, нпр, строка вида "4107" , а по шаблону, насколько я знаю, вид должен быть таким "41 07", т.е. через пробел. Можно ли как-то преобразовать эту строку к такому виду???
02.07.2009
15:30
#9
"Можно очень похоже на предыдущее:
Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
Если Сп.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Паспорт = глРазложить(Сп.ДокументУдЛичность); ///разложили строку в список значений.
Если Паспорт.ПолучитьЗначение(1)="Паспорт гражданина России" Тогда
Серия= Паспорт.ПолучитьЗначение(2);
Паспорт.УстановитьЗначение(2,Лев(Серия,2)+" "+Прав(Серия,2));
ПаспортНовый="""";
Для Цикл к=1 По Паспорт.РазмерСписка() Цикл // просто не знаю, сколько там элементов
ПаспортНовый+ Паспорт.ПолучитьЗначение(к);
КонецЦикла
Сп.ДокументУдЛичность=ПаспортНовый;
Сп.Записать();
КонецЕсли;
КонецЦикла;
Я не проверяю, есть ли там на самом деле серия, считаю, что есть. Если надо вставьте проверку."
Сп = СоздатьОбъект("Справочник.Сотрудники");
Сп.ВыбратьЭлементы(0);
Пока Сп.ПолучитьЭлемент()=1 Цикл
Если Сп.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Паспорт = глРазложить(Сп.ДокументУдЛичность); ///разложили строку в список значений.
Если Паспорт.ПолучитьЗначение(1)="Паспорт гражданина России" Тогда
Серия= Паспорт.ПолучитьЗначение(2);
Паспорт.УстановитьЗначение(2,Лев(Серия,2)+" "+Прав(Серия,2));
ПаспортНовый="""";
Для Цикл к=1 По Паспорт.РазмерСписка() Цикл // просто не знаю, сколько там элементов
ПаспортНовый+ Паспорт.ПолучитьЗначение(к);
КонецЦикла
Сп.ДокументУдЛичность=ПаспортНовый;
Сп.Записать();
КонецЕсли;
КонецЦикла;
Я не проверяю, есть ли там на самом деле серия, считаю, что есть. Если надо вставьте проверку."
Бух учет 7.70.465 как изменить печатную форму?Требуется поменять в выданной счёт-фактуре в форме ТОЛЬКО наименование продавца
Читают тему
(гостей: 1)