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

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

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

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

Pavel779

Здраствуйте помогите разобраться!

Поставил себе задачу написать обработку. Задача такова:
Надо чтоб из документа поступления обработка выдавала сообщение с "Наименованием" поставщика в этом документе.



Что я с делал:

Создал обработку

1.Сделал реквизит "Документ" Тип=ДокументСсылка.ПоступлениеТоваров
2.Сделал команду "ИмяКонтрагента"
3.Процедура


&НаКлиенте
Процедура ИмяКонтрагента(Команда)
        ИмяКонтрагентаНаСервере(Документ);
КонецПроцедуры



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


Выборка = Документы.ПоступлениеТоваров.Выбрать(Документ);

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

Пробую запустить, чтоб убедиться, что переменная "Выборка" содержит мой документ.

А программа выкидывает мне ошибку:

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

ПОМОГИТЕ РАЗОБРАТЬСЯ!!!

sadovod

Неправильно задан параметр.
ЦитироватьСинтаксис-помощник:
Документы.<ИмяДокумента>.Выбрать(<ДатаНачала>, <ДатаОкончания>, <Отбор>, <Порядок>)
Вам для получения Поставщика не нужно использовать метод Выбрать(), ведь ссылка на Документ у вас уже есть, значит можно так (если у документа соответствующий реквизит называется 'Контрагент'):

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


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

Pavel779

А почему я немогу на прямую обратиться к реквизиту:

ИмяКонтрагента = Документы.ПоступлениеТоваров.Контагент

sadovod

Цитата: Pavel779 от 20 июн 2012, 22:36
А почему я немогу на прямую обратиться к реквизиту:

ИмяКонтрагента = Документы.ПоступлениеТоваров.Контагент
Можете, но только в толстом клиенте, даже несмотря на то, что при компиляции система будет ругаться на ошибку, можно запустить пользовательский  режим в толстом клиенте и конструкция ПоступлениеТоваров.Ссылка.Контрагент будет доступна.
Но только имейте ввиду, что "Документы.ПоступлениеТоваров" - это не ссылка на Документ (в 1С это такой специальный тип данных - ДокументМенеджер), поэтому прежде чем обратиться к реквизиту Документа (к Контрагенту, например) нужно сначала получить ссылку на какой-либо документ, например с помощью метода НайтиПоКоду() или с помощью выбора из списка на форме, как вы сделали...

sadovod

Ой, только не 'НайтиПоКоду', а 'НайтиПоНомеру'   

Pavel779

А можете написать, подробно.
Как в модуле документа обратиться к его реквизиту и этот реквизит получить в переменную.

И еще как здесь вывести имя Контрагента в сообщение

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

Андрей Федотов

Вот функция ИмяКонтрагентаНаСервере (Документ) Вам и выдаст ссылку на контрагента.
Вызов функции вы же вызываете на клиенте. Процедура должна быть следующая:


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

Что-нибудь из этой серии, если Вас интересует вывод в табло. Если же иной вывод - напишите какой Вам нужен
С уважением,
Андрей Федотов
Future IT Solutions

Pavel779

Забыл сказать речь идет об управляемом приложении.
Я так понял в УП, в модуле менеджера документа напрямую к реквизиту через "." обратиться нельзя.
Там надо получить форму.
Скажите, как в данном случае обратиться к реквизиту.

cska-fanat-kz

надо получить не форму, а объект (или ссылку) на конкретный документ.
а это делается именно так, как вам написали - например с помощью НайтиПоНомеру().
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

А если я нехочу искать а создал реквизит в котором уже выбираю документ.
И вот как мне в этом документе получить реквизит

Теги:

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

Рейтинг@Mail.ru

Поиск