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

Заполнение ТЧ документа данными из ТЧ справочника

Автор xenia.oleg, 22 июл 2015, 15:20

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

xenia.oleg

Помогите пожалуйста) Нужно реализовать автоматическое заполнение ТЧ формы документа из ТЧ справочник, при изменении Клиента. Получить данные из справочника получилось, но отбор в соответствии с выбранным клиентом и запись в ТЧ документа сделать не получается.

&НаКлиенте
Процедура КлиентПриИзменении(Элемент)
      
      Объект.Телефоны = ПолучитьТелефоны(Объект.Клиент);
      
         //Записать = 
      ПолучитьКурсы(ТабДок, Объект.Клиент);

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

//СправочникТабличнаяЧасть.Клиенты.ИзучаемыеКурсы

// <Описание функции>
//
// Параметры:
//  <Параметр1>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//  <Параметр2>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//
// Возвращаемое значение:
//   <Тип.Вид>   - <описание возвращаемого значения>
//
&НаСервереБезКонтекста
Функция ПолучитьТелефоны(Клиенты)
       Возврат Клиенты.Телефоны;
КонецФункции

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

ОблШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОблДет = Макет.ПолучитьОбласть("Детали");

ТабДок.Вывести(ОблШапка);

Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
      
      ОблДет.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(ОблДет);
   КонецЦикла;
КонецФункции

vitasw

Вы для начала попробуйте сами прочитать тот код, который вы привели. с кучей коментов и прочей лабуды.

xenia.oleg

&НаКлиенте
Процедура КлиентПриИзменении(Элемент)
      ПолучитьКурсы(ТабДок, Объект.Клиент);           
КонецПроцедуры

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

Результат = Запрос.Выполнить();

ОблШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОблДет = Макет.ПолучитьОбласть("Детали");

ТабДок.Вывести(ОблШапка);

Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
       
      ОблДет.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(ОблДет);
   КонецЦикла;
КонецФункции

vitasw

Что-то у вас на уровне кто в лес, кто по дрова.
Вы привели код вывода в табличный документ (mxl), при этом спрашиваете
Цитата: xenia.oleg от 22 июл 2015, 15:20запись в ТЧ документа сделать не получается.
Как соотностится табличная часть документа и какой-то табличный документ на форме? вы разницу понимаете?


xenia.oleg

Разницу понимаю. Прописывала так, что бы увидеть результат запроса, ибо как выгрузить данные в ТЧ не могу понять.

Rasty

Так что и куда вы хотите добавить? Если строки в макет, то ТабДок.Вывести(ОблДет,Выборка.Уровень())
А если вы хотите добавить строку в табличную часть документа, то
Пока чтототам цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.ВашРеквизит = НужноеЗначение;
...
...
...
КонецЦикла;
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

vitasw

 
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
      НоваяСтрока=Объект.<ВашаТЧ>.Добавить();
      НоваяСтрока.<Что-то тут>=Выборка.<что-то там>;
        и т.д.
   КонецЦикла;
КонецФункции

xenia.oleg

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

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

Подскажите, где ошибка в запросе?
Добавлено: 23 июл 2015, 10:03


Разобралась) Вспомнила про чудесную Консоль запросов!

Теги:

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

Рейтинг@Mail.ru

Поиск