Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 07:17
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как переделать функцию  (Прочитано 1872 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tmpnikl

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-24
  • Сайт: 
есть функция (утриравано, сократил, чтоб не отвлекаться на мелочи)

если ПроверкаДублейКонтрагентов() = 0 Тогда

Функция ПроверкаДублейКонтрагентов()
Если НайтиЗначение(Контр, СтрокаТек, "Контр") = 1 Тогда
Возврат 0;
иначе
Возврат 1;
КонецЕсли;
Мне надо, чтоб не только возвращался 1 или 0, но и СтрокаТек
как это сделать?, если записать внутри скобок, ПроверкаДублейКонтрагентов(Параметр_СтрокаТек), то будет ли передаваться 0-1, непонятно...



Оффлайн Mitay_D

  • **
  • Сообщений: 85
  • РЕПУТАЦИЯ: 14
  • КПД: 16%
  • Регистрация: 2011-02-02
  • Сайт: 
  • Профессия: Программист 7.7
Цитировать
Перем Стр;   
 //***************************************************
Функция  ВашеИмяФункции (Параметр1,Параметр2,Стр )
   
    Параметр1 = Параметр1 + 10;
    РезультатФункции = Параметр1+Параметр2;
    Стр = "Что нибудь";     
    Возврат РезультатФункции;   
КонецФункции
//*******************************************************
Процедура  Сформировать()
   
    ПередаваемыйПараметр1 = 15;       
    Результат =  ВашеИмяФункции (ПередаваемыйПараметр1,10,Стр);     
    Сообщить(ПередаваемыйПараметр1);
    Сообщить(Стр);
КонецПроцедуры
что-то такое надо?

Оффлайн tmpnikl

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-24
  • Сайт: 
Спасибо, не совсем понятно с переменой "Стр"
Перем Стр;
Функция  ВашеИмяФункции (Параметр1,Параметр2,Стр )
Т.к. она объявляется в блоке переменных, то она видна во всех ниже расположенных функциях и передавать её это лишнее(напишите, если это не так),
Как я заметил, вызываемая функция должна располагаться выше процедуры откуда происходит вызов
....нет, ничего не понятно.. :-(
если бы было вроде этого
Сообщить(ПередаваемыйПараметр1);  //Передали 15 а на выходе получили 25
"Результат" стал = "Возврат РезультатФункции;"
не, не понятно....
т.е. передали Параметр1=""
в функции изменили его, получили Параметр1="....", и какой-то результат (1-0), правильно или нет?

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Можно записать возвращаемые параметры в структуру, и возвращать структуру.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMB

Оффлайн tmpnikl

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-24
  • Сайт: 
Можно записать возвращаемые параметры в структуру, и возвращать структуру.
А можно показать на примере?

Оффлайн fipolaz

  • *
  • Сообщений: 47
  • РЕПУТАЦИЯ: 8
  • КПД: 17%
  • Регистрация: 2015-03-29
    • Skype: fipolaz
  • Компания: ИП
  • Профессия: Программист 7.7
Непонятно изложенно, но попробуем разобраться. Есть функция:
Функция ПроверкаДублейКонтрагентов()
//
Если НайтиЗначение(Контр, СтрокаТек, "Контр") = 1 Тогда
Возврат 0;
Иначе
Возврат 1;
КонецЕсли;
КонецФункции//ПроверкаДублейКонтрагентов
Упрощаем:
Функция ПроверкаДублейКонтрагентов()
//
Возврат ?(НайтиЗначение(Контр,СтрокаТек,"Контр")=1,0,1);
КонецФункции//ПроверкаДублейКонтрагентов
Функция возвращает 0 или 1, а надо чтобы возвращался не только 1 или 0, но и СтрокаТек определённая в функции.

Функцию вызывает:
Если ПроверкаДублейКонтрагентов()=0 Тогда

Воспользуйся советом Mitay_D и добавь перед вызовом:
СтрокаТек=0;
расширь вызов функции:
Если ПроверкаДублейКонтрагентов(СтрокаТек)=0 Тогда
расширь функцию:
Функция ПроверкаДублейКонтрагентов(СтрокаТек)
в итоге:
Функция ПроверкаДублейКонтрагентов(СтрокаТек)
//
Возврат ?(НайтиЗначение(Контр,СтрокаТек,"Контр")=1,0,1);
КонецФункции//ПроверкаДублейКонтрагентов

СтрокаТек=0;
Если ПроверкаДублейКонтрагентов(СтрокаТек)=0 Тогда
// в СтрокаТек значение вычисленное в функции ПроверкаДублейКонтрагентов

Добавлено: 13 Апр 2015, 13:24

Можно по совету
Дмитрий@ записать возвращаемые параметры в структуру, используя в качестве структуры базовые виды структур: СписокЗначений или ТаблицаЗначений - или же структуру Структура внешней компоненты 1СРР.dll.

Последний раз редактировалось: fipolaz; 13 Апр 2015, 13:24. Причина: Объединение сообщений

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
А можно показать на примере?
СтруктураПроверки = ПроверкаДублейКонтрагентов();
если СтруктураПроверки.Значение = 0 Тогда
СтрокаТек = СтруктураПроверки.СтрокаТек;

Функция ПроверкаДублейКонтрагентов()
Структура = Новый Структура;
Если НайтиЗначение(Контр, СтрокаТек, "Контр") = 1 Тогда
Структура.Вставить("Значение",0);
Структура.Вставить("СтрокаТек",СтрокаТек);
иначе
Структура.Вставить("Значение",1);
Структура.Вставить("СтрокаТек",СтрокаТек);
КонецЕсли;
Возврат Структура;
КонецФункции
Ссылка на примеры работ https://yadi.sk/d/ksVluPMB

Оффлайн tmpnikl

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-24
  • Сайт: 
спасибо

Оффлайн fipolaz

  • *
  • Сообщений: 47
  • РЕПУТАЦИЯ: 8
  • КПД: 17%
  • Регистрация: 2015-03-29
    • Skype: fipolaz
  • Компания: ИП
  • Профессия: Программист 7.7
Дмитрий@, по поводу:
Цитировать
Функция ПроверкаДублейКонтрагентов()
Структура = Новый Структура;
//          ^^^^^
//             \
//             это
Если НайтиЗначение(Контр, СтрокаТек, "Контр") = 1 Тогда
поясни как это работает в 7.7?

Оффлайн ProSoft

  • Владимир
  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-04-29
  • Сайт: info-egrul.ru
  • Профессия: Программист 8.1
Спасибо, разъяснили
Выписки из ЕГРЮЛ http://info-egrul.ru/


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
AIFrame
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 118
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal