Имя: Пароль:
1C
1С v8
Добавить номенклатуру из документа в ВПФ
,
0 steeshiy
 
25.11.21
22:53
Добрый день!
Столкнулся с такой проблемой: есть внешняя печатная форма транспортной накладной комплексной автоматизации.
Необходимо в ПФ поставить номенклатуру из документа "реализация товаров и услуг"
Создал следующую функцию:

Функция СформироватьДопДанные (СсылкаНаОбъект)

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

В процедуре "ЗаполнитьТабличныйДокументТН" в нужную строку подставил:
РеквизитыМакета.Вставить("Пункт3_1", СформироватьДопДанные(СсылкаНаОбъект));

"Пункт3_1" - параметр в макете, куда необходимо вставить номенклатуру.

Ошибок нет, но вместо номенклатуры вставляет "структура"))
То есть запрос не работает. Что не так? подскажите пожалуйста!
Спасибо!
1 asady
 
25.11.21
23:08
(0)
Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
        |    РеализацияТоваровУслуг.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
        |ГДЕ
        |    РеализацияТоваровУслуг.Ссылка = &Ссылка";
2 acht
 
25.11.21
23:08
(0)  
> Список = Новый Структура;
> ...
> Список.Вставить("Номенклатура");
> ...
> Возврат Список;
> ...
> РеквизитыМакета.Вставить("Пункт3_1", СформироватьДопДанные(СсылкаНаОбъект));

Запрос работает. Код делает ровно то, что написано.
Продумайте, пожалуйста, как вы собираетесь упихать несколько значений номекладуры документа в одно значение параметра.
3 Ёпрст
 
25.11.21
23:24
(0) где обход вложенного результата с номенклатурой?
+ Нелепое список.вставить
4 steeshiy
 
26.11.21
07:49
(1) "Продумайте, пожалуйста, как вы собираетесь упихать несколько значений номекладуры документа в одно значение параметра.": думал... Но в конкретном примере значение
номенклатуры только одно. Я пробовал и дату так же подставить, уж дата-то точно одна в документе)) результат тот же.
Пока хочу, что б в принципе заработало правильно...
5 acht
 
26.11.21
09:14
(4) Если это результат предложания продумать, то вам, наверно, лучше пригласить для этой задачи кого-то более опытного. Если эта идея вам не нравится - прослушайте, пожалуйста курсы, почитайте учебники, поднимите свой уровень. Вы пока не понимаете базовых механизмов, не поймете как работает то, что вам предложат, будете прибегать сюда за каждой новой буквой.
6 Ёпрст
 
26.11.21
11:00
(4) дарю, развлекайся:



Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
  
    ВыборкаНоменклатура = Выборка.Товар.Выбрать();
    Пока ВыборкаНоменклатура.Следующий() Цикл
         Сообщить(ВыборкаНоменклатура.Номенклатура);
    КонецЦикла;
КонецЦикла
7 Ёпрст
 
26.11.21
11:00
+6*
ВыборкаНоменклатура = Выборка.ТоварЫ.Выбрать();
8 steeshiy
 
29.11.21
19:41
(6) Спасибо большое, друг!!!

Но все равно не работает... )))) так же пусто.
9 hhhh
 
29.11.21
20:31
(8) выкинь структура, это редкий дебилизм. Как-то так

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
  
    ВыборкаНоменклатура = Выборка.Товары.Выбрать();
    Пока ВыборкаНоменклатура.Следующий() Цикл
         Возврат ВыборкаНоменклатура.Номенклатура;
    КонецЦикла;
КонецЦикла
10 Мимохожий Однако
 
29.11.21
21:21
(0) Научись пользоваться режимом отладки. Встань на код, который отвечает за заполнение. Смотри данные, долго думай...
11 Kamich
 
30.11.21
07:09
(10) ++
12 Kamich
 
30.11.21
07:12
Администраторы форума, не удается создать уже второй день новую тему на форуме. Ошибка 500.
Напишу тут:

Добрый день!
Есть диаграмма(без СКД), которая включает в себя точки(как период), серии с их значениями.
Можно ли в определенной точке как-то визуально отобразить(изменить цвет гистограммы, окантовку и т.п.)?
Пробовал менять так: Серия.Цвет = Новый Цвет() - меняется во всех точках данная серия.
13 steeshiy
 
30.11.21
20:59
(10) При отладке Внешней ПФ выходит сообщение об аварийном завершении.
Делал так:

В процедуре "печать" добавил код:
        Адрес = "C:\1C\erf_epf\Для комплексной автоматизации\ВПФ Транспортная накладная\ВПФ_ТранспортнаяНакладная.epf";
    обр = ВнешниеОбработки.Создать(Адрес,Ложь);
    обр.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    Возврат;
Выключил безопасный режим в процедуре "СведенияОВнешнейОбработке";
Сохранил обработку в режиме отладки;
Закомментировал код замыкания на внешний файл;
Поставил "точку останова";
Запустил в отладчике ВПФ на исполнение и... аварийное завершение...
В чем проблема? Как отладить?
14 vicof
 
01.12.21
00:17
Она на сервере создается