Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:56

Помогите написать обработку

Автор Pavel779, 20 июн 2012, 19:37

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

cska-fanat-kz

Если вы создали реквизит обработки с типом "ссылка на документ", то обращаетесь к нему

&НаКлиенте
Процедура ИмяКонтрагента(Команда)
      НайденныйКонтрагент = ИмяКонтрагентаНаСервере(Объект.СсылкаНаДокумент);
      Сообщить(НайденныйКонтрагент);
КонецПроцедуры

а если это реквизит формы, то просто по имени


&НаКлиенте
Процедура ИмяКонтрагента(Команда)
      НайденныйКонтрагент = ИмяКонтрагентаНаСервере(СсылкаНаДокумент);
      Сообщить(НайденныйКонтрагент);
КонецПроцедуры
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Вот хоть убейте не пойму, как обратиться к реквизиту формы в управляемом приложении.

Напишите полную цепочку.

Как получить реквизит документа из обработки в управляемом приложении!!!
Я тут общался с человеком об этом и он сказал.
Что надо форму получить на сервере, потом только обратиться к этой форме где будут доступны реквизиты.

Вот в обычном приложении можно на прямую обращать к реквизиту документа.
Пример:
Имя = Дукументы.ПоступлениеТоварИУслуг.Контрагент
Таким образом я получу "Имя поставщику" в перменную "ИМЯ"

Вот как мне обратиться к реквизиту документа в ОБработке в управляемом приложении!!!!!!

sadovod

Да вы все сделали почти правильно, давайте сначала, итак:

Цитировать1.Сделал реквизит "Документ" Тип=ДокументСсылка.ПоступлениеТоваров
2.Сделал команду "ИмяКонтрагента"
3.Процедура
1 - создан реквизит, ему назначен верный тип - Ссылка на Документ 'ПоступлениеТоваров'.
Важное замечание: нужно ещё перетащить реквизит на форму, чтобы в пользовательском режиме с ним можно было работать. Перетащив его на форму, мы получили элемент формы 'Документ', источником данных которого является наш реквизит (свойство 'ПутьКДанным')
2 - можно и команду создать, но тогда придется лишний раз нажимать кнопку, чтобы запустить эту команду.
На мой взгляд удобней использовать обработчик события 'ДокументПриИзменении'. Для этого в конструкторе формы (левое окно) на элементе 'Документ' правый клик мышки и выбрать 'События -> ПриИзменении' попадаешь в процедуру ДокументПриИзменении(Элемент) и там пишете свой код, вот этот:
&НаКлиенте
Процедура ДокументПриИзменении(Элемент)
Сообщить(ИмяКонтрагентаНаСервере(Документ));
КонецПроцедуры

То есть после выбора Документа автоматом запускается процедура для отображения Контрагента (Но, безусловно, можно это делать и по кнопке, как у вас).
Ну и повторю код, который возвращает Контрагента
&НаСервереБезКонтекста
Функция ИмяКонтрагентаНаСервере(Документ)
   Возврат Документ.Контрагент;
КонецФункции

Вот, как-то так.

PS
С толстым клиентом я наверное вас запутал, прошу извинить... В моем понимании толстый клиент - это такой переходной вариант платформы от 8.1 к 8.2, и поэтому в нем возможны 'фишки', которые были в 8.1, и которые не работают в 8.2...

sadovod

Цитата: Pavel779 от 21 июн 2012, 23:02
Вот хоть убейте не пойму, как обратиться к реквизиту формы в управляемом приложении.
...
Вот в этой строке
   Сообщить(ИмяКонтрагентаНаСервере(Документ));
Мы как раз обращаемся к реквизиту 'Документ' управляемой формы, напомню, что его тип - Ссылка на Документ 'ПоступлениеТовара'. Передаем эту ссылку как параметр в функцию ИмяКонтрагентаНаСервере(Документ), и в этой функции можем получить любой реквизит этого Документа. В нашем примере мы получаем Контрагента.

Pavel779

А если я хочу это в переменную получить то как это сделать?

cska-fanat-kz

ИмяКонтрагентаНаСервере = ИмяКонтрагентаНаСервере(Документ);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Скажите, а почему вот так нельзя получить ссылку на документ.

&НаКлиенте
Процедура ИмяКонтрагента(Команда)

ИмяКонтрагентаНаСервере(Документ);

 
КонецПроцедуры



&НаСервереБезКонтекста
Функция ИмяКонтрагентаНаСервере(Документ)


    Документы.ПоступлениеТоваров.ПолучитьСсылку(Документ);
       
КонецФункции



Выдает вот такую ошмбку


{Обработка.ИмяПоставщика.Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (ПолучитьСсылку)
       Документы.ПоступлениеТоваров.ПолучитьСсылку(Документ);
по причине:
Несоответствие типов (параметр номер '1')
Несоответствие типов (параметр номер '1')

cska-fanat-kz

Убедительная просьба...

ОЧИСТИТЕ СВОЙ РАЗУМ!

Зачем вам получать ссылку на документ (ПолучитьСсылку()), если у вас она уже есть?!
И отстаньте уже от "Документы.ПоступлениеТоваров" - это МЕНЕДЖЕР документов этого вида и содержит свойства и методы, относящиеся КО ВСЕМ документам данного вида.
Вам же надо просто получить значение реквизита определенного документа.
Как это сделать - вам написали...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

А как тогда в модуле объекта документа, обратиться к табличной части и получить список номенклатуры подобранный в табличной части.

Pavel779

Забыл и при Записи документа вывести его в сообщении?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск