Как вызвать процедуру из общего модуля.

1. furman2000 16 01.11.23 10:09 Сейчас в теме
Всем доброго времени суток!
Прошу сильно не пинать!
Есть штатная процедура в форме списка :
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ПодборТоваровКлиент.ПриАктивизацииСтрокиСпискаНоменклатуры(ЭтаФорма);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
Показать

В ней нужно сделать дозаполнение некоторых данных на форме.
Если делаю вот так:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ПодборТоваровКлиент.ПриАктивизацииСтрокиСпискаНоменклатуры(ЭтаФорма);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

	//МояВставка
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		РММ_ЗаполнитьСебестоимость(Элемент.ТекущиеДанные.Ссылка);
	Иначе
		ЭтаФорма.ТаблицаСебестоимости.Очистить();
	КонецЕсли;
	//МояВставка

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

&НаСервере
Процедура РММ_ЗаполнитьСебестоимость(Номенклатура)
	Запрос = Новый Запрос;

	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СебестоимостьТоваровОстатки.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
		|	СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количество,
		|	ВЫБОР
		|		КОГДА ЕСТЬNULL(СебестоимостьТоваровОстатки.КоличествоОстаток, 0) = 0
		|			ТОГДА ЕСТЬNULL(СебестоимостьТоваровОстатки.СтоимостьОстаток, 0)
		|		ИНАЧЕ ЕСТЬNULL(СебестоимостьТоваровОстатки.СтоимостьОстаток + СебестоимостьТоваровОстатки.ДопРасходыОстаток, 0) / СебестоимостьТоваровОстатки.КоличествоОстаток
		|	КОНЕЦ КАК Цена,
		|	СебестоимостьТоваровОстатки.СтоимостьОстаток КАК Сумма,
		|	СебестоимостьТоваровОстатки.ДопРасходыОстаток КАК ДопРасходы,
		|	СебестоимостьТоваровОстатки.СтоимостьОстаток + СебестоимостьТоваровОстатки.ДопРасходыОстаток КАК Себестоимость,
		|	СебестоимостьТоваровОстатки.Партия.Дата КАК Дата,
		|	СебестоимостьТоваровОстатки.Партия КАК ДокОприходования
		|ИЗ
		|	РегистрНакопления.СебестоимостьТоваров.Остатки(
		|			,
		|			АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура
		|				И РазделУчета <> ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.СобственныеТоварыВПути)) КАК СебестоимостьТоваровОстатки
		|
		|УПОРЯДОЧИТЬ ПО
		|	Дата УБЫВ";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	ТЗ = Запрос.Выполнить().Выгрузить();
	ЭтаФорма.ТаблицаСебестоимости.Очистить();
	ЭтаФорма.ТаблицаСебестоимости.Загрузить(ТЗ)
КонецПроцедуры

Показать

Так все работает прекрасно.
Но теперь нужно процедуру РММ_ЗаполнитьСебестоимость(Номенклатура) вынести в общий модуль, так как ее еще в нескольких формах нужно использовать.

Как правильно ее вынести?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. SlavaKron 01.11.23 10:25 Сейчас в теме
(1)
&НаСервере
Процедура РММ_ЗаполнитьСебестоимость(Номенклатура)
Для начала переделать на бесконтекстный вызов, так как в ПриАктивизацииСтроки нельзя использовать серверные методы формы с директивой компиляции &НаСервере
5. Sashares 35 01.11.23 14:09 Сейчас в теме
(1)
Так все работает прекрасно.

Лушче не выполнять серверные вызовы в ПриАктвизации строки.
Корректнее будет в ПриАктвизации подключать обработчик ожидания, и уже в обработчике ожидания выполнять нужные процедуры для той строки, которая будет текущей в данный момент.
2. yispepotri 01.11.23 10:16 Сейчас в теме
Ctrl + C и Ctrl+V, и добавляете в общий модуль, а также к ней добавляете Экспорт, чтобы можно было вызвать ее. К параметру номенклатуры также добавить форму, для которой будет выполняться заполнение
4. starik-2005 3051 01.11.23 14:00 Сейчас в теме
В общий модуль
Процедура РММ_ЗаполнитьСебестоимость(ТаблицаСебестоимости, Номенклатура) Экспорт

В модуле формы добавить серверную процедуру
РММ_ЗаполнитьСебестоимость(Номенклатура)

В модуле формы в серверной процедуре
ИмяОбщегоМодуля.РММ_ЗаполнитьСебестоимость(ТаблицаСебестоимости, Номенклатура)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот