Возврат параметра из обработки (1С:Предприятие 7.7)

22.01.15

Разработка - Механизмы платформы 1С

Следующая информация будет полезна программистам, занимающимся разработкой(доработкой) прикладных решений на платформе 1С:Предприятие 7.7
В данной статье описан не совсем очевидный но очень удобный способ возврата параметра из обработки (отчета).

Наверное, многие, кто занимался разработкой прикладных решений на платформе 1С:Предприятие 7.7, сталкивались со следующей задачей: в процессе выполнения кода нужно открыть обработку, передать в неё параметр и получить результат её работы, в виде возвращаемого параметра. С передачей параметра в обработку никаких проблем не возникает, как следует из документации:

ОткрытьФормуМодально("Обработка.МояОбработка",Параметр);

А вот с возвратом параметра у многих бывают затруднения. Одним из способов является возврат параметра через глобальную переменную, но в данной статье я опишу более изящный и неочевидный способ. В документации сказано что переданный в форму параметр будет доступен в открытой форме(обработки, отчета) через форма.параметр, но нигде не описан такой немаловажный факт, что через эту же самую конструкцию, т.е форма.параметр обработка может вернуть любой параметр в тот же модуль из которого она была вызвана! Для этого достаточно в модуле формы обработки перед ее закрытием выполнить

форма.параметр="ВозвращаемыйПараметр";

В качестве примера приведу простую обработку проверки пароля:

Вызов из программного модуля:

........

ПравильныйПароль = "12345";
ОткрытьФормуМодально("Обработка.Авторизация",ПравильныйПароль);
Если (ПравильныйПароль=0) Тогда
     Сообщить("Не угадали");
     Возврат;
КонецЕсли;

........

Обработка Авторизация:

// Пароль - поле ввода на форме

// На форме имеются две кнопки, их обработчики - процедуры Ок() и Отмена()

// Модуль формы обработки

Перем ПравильныйПароль;

Процедура ПриОткрытии()
    ПравильныйПароль=Форма.Параметр;
    Форма.Параметр=0;
КонецПроцедуры

Процедура Ок()
    Если (СокрЛП(Пароль)=ПравильныйПароль) Тогда
        Форма.Параметр=1;
        Форма.Закрыть(0);
    Иначе
        Пароль="";
        Предупреждение("Неверный пароль !");
        Активизировать("Пароль",1);
    КонецЕсли;
КонецПроцедуры

Процедура Отмена()
    Форма.Закрыть(0);
КонецПроцедуры

 

Источник: http://www.obrabotki.com/1s-returnvalue77/

обработка форма параметр 7.7

См. также

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1864    user707242_Gold_karas    18    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7803    Vortigaunt    5    

11

Механизмы платформы 1С Программист Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10482    Vortigaunt    26    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    95959    Serginio    116    

188

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    44842    95    kitminsk    18    

20

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    24253    tomvlad    5    

14

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Позволяет в открытой форме списка, выбора или подбора справочника производить динамическую фильтрацию по набранному наименованию.

02.07.2012    18985    maxpiter    62    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IamAlexy 345 17.09.09 23:56 Сейчас в теме
с немодальной формой сработает?
8. Shaman100M 1151 18.09.09 08:39 Сейчас в теме
Для немодального режима:

Код
Список   = СоздатьОбъект("СписокЗначений");
ПередаваемыйПараметр  = Список;
ОткрытьФорму("Обработка.<ИмяФормы>",ПередаваемыйПараметр);

// теперь:
// ПередаваемыйПараметр   -  контекст открытой формы
// Список  - остался списком
Показать полностью



а главное, что вызванная форма может добавлять значения в Список не только в ПриОткрытии(), а в любом другом месте, например в ПриЗакрытии(). И вызвавшая форма все это увидит при желании @ssp_ ( http://infostart.ru/profile/6755/ )

Можно еще так, через закладку открывающей формы (это тот же СЗ, и он доступен через контекст):

Код
// Открываемая форма

Если ТипЗначенияСтр(Форма.Параметр) = "ГрупповойКонтекст" Тогда
    Форма.Параметр.Форма.ИспользоватьЗакладки(1);
    СписокДляПередачи = СоздатьОбъект("СписокЗначений");
    // заполняем его ....
    Форма.Параметр.Форма.Закладки.ВставитьЗначение(1,СписокДляПередачи,"",1);
КонецЕсли;
Показать полностью
serg355; Арчибальд; +2 Ответить
11. Арчибальд 2709 18.09.09 08:55 Сейчас в теме
(8) За
<Можно еще так, через закладку открывающей формы (это тот же СЗ, и он доступен через контекст):>
Спасибо!
2. CheBurator 2712 18.09.09 00:58 Сейчас в теме
(0) некоторые еще не знают про ВыполнитьВыбор()
3. CheBurator 2712 18.09.09 01:00 Сейчас в теме
(10 вызывает немодально - запускается, активизируется, делаем в ней что надо возврат в родительскую делаем через ОткрытьФорму(), в родительской - ПриПовторномОткрытии()
4. artbear 1563 18.09.09 07:13 Сейчас в теме
Баяну кучу лет.
Тем более, что есть приколы с разницей работы модальной и немодальной формы :)
5. Ёпрст 1065 18.09.09 08:09 Сейчас в теме
(0)да уж..http://www.infostart.ru/projects/4270/

(3)Не совсем так... форму могли и закрыть...
6. salexdv 2358 18.09.09 08:33 Сейчас в теме
Вот эт Америка, блин! Цитата из описания встроенного языка: "<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы"
На мой взгляд и так все ясно ))
7. Арчибальд 2709 18.09.09 08:36 Сейчас в теме
Функция глВычислитьВнешнийОтчет(п_Файл,п_Контекст,п_Параметры) Экспорт
л_Результат = ПолучитьПустоеЗначение();
л_Файл = глПолныйПуть(п_Файл);
Если ПустаяСтрока(л_Файл) = 1 Тогда
Сообщить("Не задано имя файла внешнего отчета!");
Возврат (л_Результат);
КонецЕсли;
Если ФС.СуществуетФайл(л_Файл) = 0 Тогда
Сообщить("Не найден файл "+л_Файл+" !");
Возврат (л_Результат);
КонецЕсли;
Если ТипЗначенияСтр(п_Параметры) <> "СписокЗначений" Тогда
л_Параметры = СоздатьОбъект("СписокЗначений");
Иначе
л_Параметры = п_Параметры;
КонецЕсли;
л_Параметры.Установить("Контекст",п_Контекст);
ОткрытьФормуМодально("Отчет",л_Параметры,л_Файл);
л_Результат = л_Параметры.Получить("Результат");
Возврат (л_Результат);
КонецФункции

Это из Камина
10. coder1cv8 3477 18.09.09 08:45 Сейчас в теме
Да-а-а... И как только семерошники не изголяются... ) Над простыми вещами.
13. iov 407 27.09.09 20:14 Сейчас в теме
(10) Чтож ты так снисходительно... сантехник например не станет более крутым если будет чинить более дорогой сортир... Тут вопрос в том что он умеет. Просто простота управления и создания не гарантирует что получится шедевр (а как показывает практика по УПП и УТ наработки на 7.7 так и не учли.)
12. MishaD 14 18.09.09 20:49 Сейчас в теме
Не знаю. Именно этой методикой всегда пользовался. Тут пришло в голову, что значение можно еще и в файл сохранять. Тоже, в принципе, решение
14. artbear 1563 09.10.10 11:09 Сейчас в теме
(0) Что изменил в статье?
15. пользователь 19.03.12 07:56
Сообщение было скрыто модератором.
...
16. пользователь 19.03.12 07:56
Сообщение было скрыто модератором.
...
17. пользователь 19.03.12 07:56
Сообщение было скрыто модератором.
...
18. пользователь 19.03.12 07:56
Сообщение было скрыто модератором.
...
19. пользователь 19.03.12 07:56
Сообщение было скрыто модератором.
...
20. i132 123 22.03.12 19:41 Сейчас в теме
Передать и получить параметр можно через Список значений:

СпПараметровОбработки=СоздатьОбъект("СписокЗначений");
СпПараметровОбработки.ДобавитьЗначение(ТзОтчета,"ТаблицаЗначений");
ВремПеременная = СпПараметровОбработки; //Для сохраненния ссылки на список
ОткрытьФорму("Обработка.АнализТЗ",ВремПеременная);
//СпПараметровОбработки обработается при открытии

а если надо обрабоать момент возвращеия значения, то можно открывать форму для подбора: ссылка на статью: http://infostart.ru/public/121991/
Оставьте свое сообщение