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

Заполнение ТЧ документа

Автор Татарин, 22 янв 2022, 08:32

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

Татарин

Добрый день. Подскажите как с помощью запроса из функции передать два поля в ТЧ документа? Передаю "ЕдИзм" и "Склад" из справочника "Номенклатура" в документ "Расходная накладная". Одно поле, без проблем, а как два? С помощью таблицы значений?

"ВЫБРАТЬ
      |   Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
      |   Номенклатура.Склад КАК Склад
      |ИЗ
      |   Справочник.Номенклатура КАК Номенклатура
      |ГДЕ
      |   Номенклатура.Ссылка = &Ссылка";

DmitriyF

Цитата: Татарин от 22 янв 2022, 08:32Добрый день. Подскажите как с помощью запроса из функции передать два поля в ТЧ документа? Передаю "ЕдИзм" и "Склад" из справочника "Номенклатура" в документ "Расходная накладная". Одно поле, без проблем, а как два? С помощью таблицы значений?

"ВЫБРАТЬ
      |   Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
      |   Номенклатура.Склад КАК Склад
      |ИЗ
      |   Справочник.Номенклатура КАК Номенклатура
      |ГДЕ
      |   Номенклатура.Ссылка = &Ссылка";

Выгрузить в таблицу значений и загрузить в табличную часть. Или циклом обходить и добавлять.

Татарин

Через функцию или процедуру?

DmitriyF

Цитата: Татарин от 22 янв 2022, 10:38Через функцию или процедуру?
Да собственно без разницы. Функция может возвращать результаты, а процедура нет. Все зависит от вашей реализации.

Татарин

Выгрузил. А на стороне клиента, как загрузить? И как мне параметр "Номенклатура" передать в функцию? Надо использовать "Текущие данные"?

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

Татарин

Ну помогите, кто-нибудь. Надо передать параметр "Номенклатура" с Клиента. Не получается.

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


&НаКлиенте
Процедура РасходНоменклатураПриИзменении(Элемент)
   
   РасходНоменклатураПриИзмененииНаСервере();
КонецПроцедуры

Татарин

Вот новый вариант. Не знаю, что делать.

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


&НаКлиенте
Процедура РасходНоменклатураПриИзменении(Элемент)
   
   РасходНоменклатураПриИзмененииНаСервере();
КонецПроцедуры

nvj84

А зачем вам тут запрос нужен?
&НаКлиенте
Процедура РасходНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Расход.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные,ЗаполнитьДанныеНоменклатуры(ТекущиеДанные.Номенклатура));
КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаполнитьДанныеНоменклатуры(Номенклатура)
ДанныеНоменклатуры = Новый Структура("Склад,ЕдиницаИзмерения");
ЗаполнитьЗначенияСвойств(ДанныеНоменклатуры,Номенклатура);
Возврат ДанныеНоменклатуры;
КонецФункции

Татарин

DmitriyF, "Выгрузить" не получается. Стирает предыдущие строки. Может подскажите.

Татарин

nvj84, Спасибо, сейчас попробую.

Теги:

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

Рейтинг@Mail.ru

Поиск