Имя: Пароль:
1C
1C 7.7
v7: Как переделать код в функцию?
0 JuixyJes
 
21.05.19
12:31
Доброго времени суток! Помогите пожалуйста, есть код в процедуре, но идентичный код имеется в 6 процедурах конфигурации. Как этот код сделать функцией, чтобы к ней обращаться?

    адрес =СтрЗаменить( ТЗ.ПолучитьЗначение(стр,1).ЮрАдрес, ",",РазделительСтрок);
    Если ПустоеЗначение(адрес) = 1 Тогда
        индекс = " ";
        область = " ";
        город = " ";
        ул = " ";
        кв = "" ;
    ИначеЕсли ПустоеЗначение(СтрПолучитьСтроку(адрес,1)) = 1 Тогда
        индекс = СтрПолучитьСтроку(адрес,2)+", ";
        область = СтрПолучитьСтроку(адрес,3)+", ";
        город = СтрПолучитьСтроку(адрес,5)+", ";
        ул = СтрПолучитьСтроку(адрес,7)+" "+СтрПолучитьСтроку(адрес,8)+", ";
        кв = "кв. " + СтрПолучитьСтроку(адрес,9) + СтрПолучитьСтроку(адрес,10) ;
    Иначе
        индекс = СтрПолучитьСтроку(адрес,1)+", "+" ";
        область = СтрПолучитьСтроку(адрес,2)+", "+" ";
        город = СтрПолучитьСтроку(адрес,3)+", "+" ";
        ул = СтрПолучитьСтроку(адрес,4)+" "+ СтрПолучитьСтроку(адрес,5)+", "+" ";
        кв =  СтрПолучитьСтроку(адрес,6)  ;
    КонецЕсли;
1 Mikeware
 
21.05.19
12:44
обернуть в Функция()/КонецФункции ?
2 Йохохо
 
21.05.19
12:48
(1) так индекс то не видно снаружи будет, и область, куда потом итить?
3 trooba
 
21.05.19
12:48
(0) Только что твоя функция будет возвращать? Нужно список значений добавлять
4 JuixyJes
 
21.05.19
12:56
(3) это понятно, список значений, но как мне это сделать то, я в 7ке вообще не соображаю
5 JuixyJes
 
21.05.19
13:30
я бы и оставила так как есть, работает же, но  сильно много строчек из-за вот этого всего, ибо не только этот код повторяется.
6 mikecool
 
21.05.19
13:44
(4) если не соображаешь и работает - не трожь!!!
7 Garykom
 
гуру
21.05.19
13:44
>Если ПустоеЗначение(адрес) = 1 Тогда
нахрен не надо, инициализация пустых всегда сначала без условия

>ИначеЕсли ПустоеЗначение(СтрПолучитьСтроку(адрес,1)) = 1 Тогда
сложно просто "НомерПодстроки" сместить на 1? и писать
индекс = СтрПолучитьСтроку(адрес, НомерПодстроки)+", "+" ";
область = СтрПолучитьСтроку(адрес, НомерПодстроки+1)+", "+" ";
8 Garykom
 
гуру
21.05.19
13:45
и да вот эти +", "+" ";  хрень какая то
9 Mikeware
 
21.05.19
14:00
(2) ну дык возвращать... как и положено функции.
(4) функции в других языках сильно отличаются от функций в клюшках?
10 JuixyJes
 
21.05.19
14:11
(7) проблема в том, что адрес - разделение строки на составляющие и если у меня заполнены данные в реквизите адреса как ",,,,," то и заполнится все этими самыми запятыми. А мне оно не нужно.
11 JuixyJes
 
21.05.19
14:21
(7) Вы мне лучше подскажите как мне сделать так чтобы функция работала с той переменной которую я выбираю в процедуре
12 1Сергей
 
21.05.19
14:22
(11) передать её параметром. не?
13 Garykom
 
гуру
21.05.19
14:25
адрес =СтрЗаменить( ТЗ.ПолучитьЗначение(стр,1).ЮрАдрес, ",",РазделительСтрок);

или "адрес" в функцию или объект из колонки ТЗ + имя реквизита объекта или ТЗ + строка + колонка + имя реквизита
14 HawkEye
 
21.05.19
14:35
(11)
это функция:
Функция РазобратьАдрес(вхАдрес)
    адрес =СтрЗаменить(вхАдрес, ",",РазделительСтрок);
    Если ПустоеЗначение(адрес) = 1 Тогда
        индекс = " "



это ее вызов:
РазобратьАдрес(ТЗ.ПолучитьЗначение(стр,1).ЮрАдрес)


дальше надо понимать, что у тебя такое:
индекс, область, город, ул, кв
15 MWWRuza
 
гуру
21.05.19
14:49
+(14)И поместить ее в глобальный модуль, объявив экспортной, с помощью "Экспорт", что-бы к ней можно было из любого места конфы обращаться.
16 Garykom
 
гуру
21.05.19
14:52
(15) В ВК
17 HawkEye
 
21.05.19
15:00
(15) зачем?
18 Mikeware
 
21.05.19
15:36
(16) разместить в инете как веб-сервис
19 1Сергей
 
21.05.19
15:37
(16) Во вконтактике?
20 Mikeware
 
21.05.19
15:38
(19) а разве там порнуху не запретили?
21 MWWRuza
 
гуру
21.05.19
19:14
(17)Вот за этим: (0)есть код в процедуре, но идентичный код имеется в 6 процедурах конфигурации.