Имя: Пароль:
1C
1С v8
v8: Вызов процедуры в Модуле Формы из Модуля Объекта
0 selestos
 
03.07.13
23:33
1.Вот что за код в модуле Объекта


&НаСервере
процедура БлокированиеТовара() Экспорт
Записать();
Движения.БлокировкаТовара.Очистить();
Для Каждого ТекСтрока Из Товары Цикл
 Движение=Движения.БлокировкаТовара.Добавить();
 Движение.ВидДвижения=ВидДвиженияНакопления.Приход;
 Движение.Период=Дата;
 Движения.Номенклатура=ТекСтрока.Номенклатура;
 Движение.Количество=ТекСтрока.Количество;
КонецЦикла;
Движения.БлокировкаТовара.Записать();


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



2.После вызываю эту процедуру в Модуле Формы


&НаКлиенте
Процедура Заблокировать(Команда)
   БлокированиеТовара();
КонецПроцедуры





3.Выдает Ошибку что процедура не определена

{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(6,2)}: Процедура или функция с указанным именем не определена (БлокированиеТовара)
<<?>>БлокированиеТовара(); (Проверка: Тонкий клиент)




как я понял ошибка и за того что сначала нужно преобразовать с помощью процедуры ДанныеФормыВЗначение()

Но как это делается никак не могу понять, сам я начинающий, если кто знает опишите подробно что нужно делать относительно моего задания
1 zak555
 
03.07.13
23:36
&НаКлиенте
Процедура Заблокировать(Команда)
   БлокированиеТовараНаСервере();
КонецПроцедуры

&НаСервере
Процедура БлокированиеТовараНаСервере()
   ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
   ОбъектДляСервера.БлокированиеТовара();
КонецПроцедуры
2 zak555
 
03.07.13
23:37
кстати, что за объект ?
3 selestos
 
03.07.13
23:57
Это Документ <<РасходнаяНакладная>> делает Движение по Регистру накопления <<БлокировкаТовара>>

Смысл в том что процедура не называется <<обработкаЗаполнения>> ---тогда создается ситуация при который документ не проведен но движения у него есть
Это важно в случае работы с большими документами, Пока пользователь заполняет такой документ, его коллеги могут перехватить товар. И при проведении документа может вдруг выяснится, что отпустить половину номенклатурных позиций уже невозможно.Они отданы другим покупателям
именно поэтому еще на этапе заполнения документа полезно каким-то образом блокировать товар, причем в указанных в документе количествах
4 zak555
 
03.07.13
23:59
(3) вынеси в модуль менеджера БлокированиеТовара
5 zak555
 
04.07.13
00:01
и из менеджера вызывай проведение документа
6 selestos
 
04.07.13
00:06
нет так не канает
в модуле менеджера уже не вдет табличную часть товары из которого заполняется регистр
В задание указанно что Именно из модуля объекта должен быть вызов
7 zak555
 
04.07.13
00:08
> уже не вдет табличную часть товары

переведи


в каком задании ?
8 selestos
 
04.07.13
00:09
ДанныеФормыВзначение ()
что-то в этом роде но как применить эту процедуру и преобразовать без понятия
9 zak555
 
04.07.13
00:10
ты опиши сначала, что нужно сделать
10 selestos
 
04.07.13
00:12
Нужно вызвать эту процедуру из Модуля Объекта<<БлокированиеТовара()>>  в Модуле Формы
11 zak555
 
04.07.13
00:14
&НаСервере
Процедура БлокированиеТовараНаСервере()
   ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
   ОбъектДляСервера.БлокированиеТовара();
   ОбъектДляСервера.Проведен = Истина; ОбъектДляСервера.Записать(); // =)
КонецПроцедуры
12 zak555
 
04.07.13
00:14
(10) зачем ?
13 zak555
 
04.07.13
00:14
нажми на кнопку провести
14 selestos
 
04.07.13
00:26
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(10)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
   ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
по причине:
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
15 selestos
 
04.07.13
00:26
просмотрел сейчас
извини что та долго
16 selestos
 
04.07.13
00:28
да я понял
17 selestos
 
04.07.13
00:28
классно спасибо
18 selestos
 
04.07.13
18:00
Zak555 спасибо за наводку, я подправил теперь все работает
вот код который получился

&НаСервере
Процедура БлокированиеТовараНаСервере()
   ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
   ОбъектДляСервера.БлокированиеТовара();
  ЗначениеВРеквизитФормы(ОбъектДляСервера,"Объект");

КонецПроцедуры
19 zak555
 
04.07.13
23:10
только неясно
зачем тебе делать движения по кнопке
20 zak555
 
04.07.13
23:11
и ещё флаг выставлять
21 selestos
 
05.07.13
16:39
Это для непроведенных товаров, чтоб узнать разные данные Исходя из регистра НакопленияОстаток прежде чем принять решения распределения номенклатурв
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn