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

как с клиента передать текущие данные с табличной части на сервер

Автор bodart, 18 дек 2019, 07:10

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

bodart

&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
   мм=Элементы.Материалы.ТекущиеДанные;
   ПроверкаМатериловНаКоличество(мм.Материал);
   
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверкаМатериловНаКоличество(Материалы)
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ОстаткиМатериаловОстаткиИОбороты.Материал КАК Материал,
   |   ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
   |ИЗ
   | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК ОстаткиМатериаловОстаткиИОбороты";
   РезультатЗапроса=Запрос.Выполнить();
   Выборка=РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий() Цикл
      Если Выборка.Материал=Материалы.Материал тогда  //как с клиента передать текущие данные (именно Материалы.Материал) с табличной части на сервер
      КонецЕсли;
КонецЦикла;
КонецФункции

bodart

Нужно, чтобы при изменении материала проверялось количество остатков из регистра материалов. Но при выборке я не знаю как сравнить наименование материала из регистра и наименование материала из табличной части (текущие данные).

nvj84

Что то вроде этого

&НаСервереБезКонтекста
Функция ТоварыНоменклатураПриИзмененииНаСервере(Номенклатура)
Результат = 0;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(НЕОПРЕДЕЛЕНО, Номенклатура В (&Номенклатура)) КАК ОстаткиНоменклатурыОстатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Результат = ВыборкаДетальныеЗаписи.КоличествоОстаток;
КонецЕсли;
Возврат Результат;
КонецФункции

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
А = ТоварыНоменклатураПриИзмененииНаСервере(ТекущиеДанные.Номенклатура);
КонецПроцедуры

Если нужны остатки на определенную дату то и первый параметр нужно передавать и в данном случае нет разницы использовать "В" или "=".

bodart

Цитата: nvj84 от 18 дек 2019, 09:14
Что то вроде этого

&НаСервереБезКонтекста
Функция ТоварыНоменклатураПриИзмененииНаСервере(Номенклатура)
Результат = 0;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(НЕОПРЕДЕЛЕНО, Номенклатура В (&Номенклатура)) КАК ОстаткиНоменклатурыОстатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Результат = ВыборкаДетальныеЗаписи.КоличествоОстаток;
КонецЕсли;
Возврат Результат;
КонецФункции

&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
А = ТоварыНоменклатураПриИзмененииНаСервере(ТекущиеДанные.Номенклатура);
КонецПроцедуры

Если нужны остатки на определенную дату то и первый параметр нужно передавать и в данном случае нет разницы использовать "В" или "=".
Спасибо, все получилось)

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

Рейтинг@Mail.ru

Поиск