Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Автозаполнение табличной части документа из справочника

Автозаполнение табличной части документа из справочника
Я
   mila_99
 
17.05.18 - 20:11
Помогите:)
Документ создается программно и зависимости от номенклатуры надо записать табличную часть документа данными из справочника "ПереченьВходногоКонтроля".


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

    Возврат СписокПараметров;    

КонецФункции
 
 
   МимохожийОднако
 
1 - 17.05.18 - 20:54
(0) Объсни фрагмент
ПереченьВходногоКонтроля.ПараметрыПроверки.(
                   |        Ссылка КАК Ссылка,
                   |        НомерСтроки КАК НомерСтроки,
                   |        НаименованиеПараметров КАК НаименованиеПараметров,
                   |        ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |        ТУПараметра КАК ТУПараметра,
                   |        ТребованияКПараметру КАК ТребованияКПараметру
                   |    ) КАК ПараметрыПроверки
   Mankubus
 
2 - 17.05.18 - 20:54
(0) вопрос то где?
   AlvlSpb
 
3 - 17.05.18 - 21:09
(0) Функция ПолучитьПараметрыПроверки(Номенклатура) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПереченьВходногоКонтроля.ПараметрыПроверки.Ссылка.Номенклатура КАК Номенклатура,
                   |    ПереченьВходногоКонтроля.ПараметрыПроверки.НаименованиеПараметров КАК НаименованиеПараметров,
                   |     ПереченьВходногоКонтроля.ПараметрыПроверки.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |    ПереченьВходногоКонтроля.ПараметрыПроверки.ТУПараметра КАК ТУПараметра,
                   |    ПереченьВходногоКонтроля.ПараметрыПроверки.ТребованияКПараметру КАК ТребованияКПараметру
                   |ИЗ
                   |    Справочник.ПереченьВходногоКонтроля.ПараметрыПроверки КАК ПереченьВходногоКонтроля
                   |ГДЕ
                   |    ПереченьВходногоКонтроля.Ссылка.Номенклатура = &Номенклатура";
    
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Результат = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
        СписокПараметров = Новый Структура;
       
        СписокПараметров.Вставить("НаименованиеПараметров");
        СписокПараметров.Вставить("ЕдиницаИзмерения");
        СписокПараметров.Вставить("ТУПараметра");
        СписокПараметров.Вставить("ТребованияКПараметру");
     
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        СписокПараметров.НаименованиеПараметров = ВыборкаДетальныеЗаписи.НаименованиеПараметров;
        СписокПараметров.ЕдиницаИзмерения = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
        СписокПараметров.ТУПараметра = ВыборкаДетальныеЗаписи.ТУПараметра;
        СписокПараметров.ТребованияКПараметру = ВыборкаДетальныеЗаписи..ТребованияКПараметру;
             
    КонецЦикла;

    Возврат СписокПараметров;    

КонецФункции
   Доминошник
 
4 - 17.05.18 - 21:14
А какое отношение заголовок темы - "Автозаполнение табличной части документа" имеет к запросу, читающему табличную часть документа?
   AlvlSpb
 
5 - 17.05.18 - 21:25
(3) Твою дивизию. Копировал и не убрал точки. Запрос не так

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

    ТекСтрока=Элементы.Номенклатура.ТекущиеДанные;
    ДанныеФормы.Наименование=ТекСтрока.Наименование;
    
    Для каждого НоваяСтрока из  ?  Цикл
        Парам1 = ПолучитьПараметрыПроверки(ТекСтрока.Наименование);
        НоваяСтрока = ДанныеФормы.Испытания.Добавить();
        НоваяСтрока.Номенклатура=Парам1.Наименование;
        НоваяСтрока.НаименованиеПараметров = Парам1.НаименованиеПараметров;
        НоваяСтрока.ЕдиницаИзмерения = Парам1.ЕдиницаИзмерения;
        НоваяСтрока.ТУПараметра = Парам1.ТУПараметра;
        НоваяСтрока.ТребованияКПараметру = Парам1.ТребованияКПараметру;
    КонецЦикла;

    Парам = ПолучитьЗаводскойНомер(ТекСтрока.Наименование);
    ДанныеФормы.ЗаводскойНомер = Парам.ЗаводскойНомер;
        
    КопироватьДанныеФормы(ДанныеФормы,ФормаОбъекта.Объект);
    ФормаОбъекта.Открыть();
    КонецПроцедуры
   AlvlSpb
 
7 - 17.05.18 - 22:12
(6) Ну это вообще белиберда, извините. Лучше объясните, что вы хотите сделать
   mila_99
 
8 - 17.05.18 - 22:13
в общем, создаю документ программно из другого документа.Мне нужно табличную часть создаваемого документа заполнить данными из справочника.как это сделать ?
   AlvlSpb
 
9 - 17.05.18 - 22:26
(8) Чтобы долго не объяснять https://1c-programmer-blog.ru/programmirovanie/kak-otkryt-formu-s-zapolneniem.html Делаете вашу таблицу из справочника с такими же полями как у ТЧ открываемого документа и передаете ее как параметр в открываемую форму
Ну и вдогонку http://catalog.mista.ru/public/236382/
   mila_99
 
10 - 17.05.18 - 23:42
не могу никак разобраться.как передать?
 
 Рекламное место пустует
   hhhh
 
11 - 18.05.18 - 06:27
(10) так как-то
Функция ПолучитьПараметрыПроверки(Номенклатура) Экспорт
+ Code

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


КонецФункции

и потом так




ДанныеФормы.Испытания.Загрузить(ПолучитьПараметрыПроверки(ТекСтрока.Наименование));
   mila_99
 
12 - 18.05.18 - 22:27
выдает ошибку:
{Документ.НаправлениеНаВходнойКонтроль.Форма.ФормаДокумента.Форма(146)}: Ошибка при вызове метода контекста (ПолучитьПараметрыПроверки)
       ДанныеФормы.Испытания.Загрузить(ПолучитьПараметрыПроверки(ТекСтрока.Наименование));
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
   hhhh
 
13 - 18.05.18 - 23:09
(12) вы это на сервере делайте. не надо вам тут передачу между клиентом и сервером мутить.
   mila_99
 
14 - 19.05.18 - 00:14
а теперь ошибку не выдает, но данные не заполняются. Появляется пустая строка

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует