7.7 Ошибка при передаче параметров в процедуру 1С 7.7

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем user_tech, 25 авг 2008.

  1. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1
    Имеется код, реализованный в виде отдельной обработки:
    Код:
    Перем Глоб;
    Процедура Тест(Пар1,Пар2,Пар3) Экспорт
    Глоб = Глоб + Пар1+Пар2+Пар3;
    Возврат;
    КонецПроцедуры
    Глоб = 123;
    
    Тест (5,6,7);
    
    Вызов процедуры идет по нажатию кнопки на форме.
    В результате выполнения вываливается ошибка:

    Тест(<<?>>)
    Недостаточно фактических параметров

    Подскажите, в чем здесь ошибка ?
  2. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    в процедуру должны передаваться 3 параметра... у тебя их видимо нету или их меньше... Тест (5,6,7) вот этот текст у тебя должен быть в свойствах кнопки
  3. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1
    О.. а тогда другой вопрос - а как эти параметры можно передать в свойства кнопки через код (чтобы в дальнейшем не прописывать свойства, а работать только через код обработки) ?? И еще - а что нужно в коде дописать, чтобы после нажатия кнопки увидеть визуально результат ??
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Сообщить(<?>,);
    Синтаксис:
    Сообщить(<Текст_сообщения>,<ИмиджМаркера>)
    Назначение:
    Вывести строку в окно сообщений. Перед сообщениями можно отображать специальные пиктограммы, которыми можно помечать сообщения различной важности.
    Параметры:
    <Текст_сообщения> - cтрока текста сообщения.
    <ИмиджМаркера> - необязательный параметр. Строковое выражение, которое задает тип пиктограммы выводимой перед сообщением. Возможные значения:
    I,
    !,
    !!,
    !!!,
    ''.'' - обычное сообщение,
    ' ' (символ пробел) - без маркера.

    Использовать либо переменные, либо реквизиты формы/элементов
  5. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А в целом по вопросу: а где ты пишешь этот код? Если в глобальном модуле, то где ты кнопку нашел? если в какой либо форме, то при объявлении процедуры не надо писать "Экспорт".

    Я у себя попробовал именно этот пример, у меня работает ;)
  6. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1

    Я писал не в самом Гл.модуле, а попробовал реализовать через созданную обработку.
  7. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Я тоже. Запускай отладчик, ставь точку останова на строку "Глоб = 123;" и по шагам пройди. Этот код пройдет один раз при запуске обработки (только "Экспорт" убери).

    А в формулу кнопки что пишешь?
  8. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1
    В свойства кнопки вписано вот что:
    Дополнительно->Формула-> Тест()
  9. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    :) вот и ответ

    когда жмешь кнопку, вызывается функция, и ей надо передать 3 параметра, а у тебя ни одного
  10. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    ага... называется читаем мой пост от вчера... он тут кстати второй в ветке...
  11. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1
    Сделал (не без помощи форумчан) вот как:

    Процедура Тест(Пар1=0,Пар2=0,Пар3=0) Экспорт
    Глоб = Глоб + Пар1+Пар2+Пар3;
    Возврат;
    Сообщить(Глоб)
    КонецПроцедуры

    Глоб = 123;

    Тест (5,6,7);

    ..и все работает. Я тольк не совсем понял - а что можно еще это действие реализовать как-то через задание Формулы в свойствах кнопки ? - можно поподробнее об этом способе и расскажите а в чем разница то ?
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А что за способ? Сздесь как то не правильно:
    1. убери слово "экспорт". Если не знаешь для чего - не пользуйся (читай справку)
    2. Убери оператор "Возврат". Он прерывает процедуру, и НИКОГДА не исполнится оператор "Сообщить" в твоей процедуре.
    3. Установив значения по умолчанию, ты просто разрешил не передавать в процедуру значения, и теперь пропущенные параметры равны нулю. Не думаю что результат тебя устроит, при прежней обработке формулы кнопки.

    2 Stado_adama, я просто пытался вывести user_tech к логическому пониманию, где у него ошибка, но не уверен, что это получилось :(
  13. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1

    Переделал в соответствии с полученными рекомендациями. Вот что получилось:
    Поставил в свойствах кнопки Дополнительно->Формула-> Тест(Пар1,Пар2,Пар3)
    Поправил Код:

    Код:
    Перем Глоб;
    Процедура Тест()
    Глоб=Пар1+Пар2+Пар3;
    Сообщить(Глоб)
    КонецПроцедуры
    Тест(5,6,7);
    
    В результате выдается ошибка типа:

    Глоб=Пар1<<?>>+Пар2+Пар3;
    {D:\WORK\1C\TEST_BD\1С_ЗИК\EXTFORMS\TEST.ERT(7)}: Переменная не определена (Пар1)
    Тест(<<?>>5,6,7);
    {D:\WORK\1C\TEST_BD\1С_ЗИК\EXTFORMS\TEST.ERT(11)}: Слишком много фактических параметров
  14. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура Тест(Пар1,Пар2,Пар3)
    Глоб=Пар1+Пар2+Пар3;
    Сообщить(Глоб)
    КонецПроцедуры
    
  15. TopicStarter Overlay
    user_tech
    Offline

    user_tech

    Регистрация:
    2 июл 2008
    Сообщения:
    46
    Симпатии:
    0
    Баллы:
    1
    Вот блин... работает!!
    Причем все практически то же самое что я вчера писал (см. в самом верху), за исключением
    команды "Возврат;"
    Причем работает даже без задания параметров в свойствах кнопки, т.е. Дополнительно-Функция-Тест()
  16. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    пользуйся отладчиком, он облегчит понимание работы алгоритмов.

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