Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 10:01
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Вывод данных регистра сведений в табличную часть макета документа  (Прочитано 3330 раз)

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

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день всем!

Помогите плиз с печатной формой макета документа. УТ 11.1 на УФ.
Делают макет накладной на вн. перемещение. Хочу вывести в макет по позициям спецификации данные из регистра сведений (ЦеныНоменклатурыЦеныСрезПоследних) по определенному виду цен. В отчете на СКД вытягивал примерно так, работало:

ВЫБРАТЬ
ПеремещениеТоваров.Номер,
ПеремещениеТоваровТовары.Номенклатура.Код,
ПеремещениеТоваровТовары.Количество,
ЦеныНоменклатурыСрезПоследних.Цена,
ПеремещениеТоваровТовары.Номенклатура
ИЗ
Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)
ПО ПеремещениеТоваровТовары.Номенклатура = СпрНоменклатура.Ссылка
ПО ПеремещениеТоваров.Ссылка = ПеремещениеТоваровТовары.Ссылка
ГДЕ
ЦеныНоменклатурыСрезПоследних.ВидЦены.Идентификатор = "НаценкаОБЩАЯ"
И ПеремещениеТоваров.СкладПолучатель = &Склад

Здесь в макете по идее должно быть как то так:

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

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


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

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка1.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка1);
ТабДок.Вывести(Шапка, Выборка1.Уровень());

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

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
КонецПроцедуры

дает ошибку:
Синтаксическая ошибка "'НаценкаОбщая'"
ПеремещениеТоваров.Ссылка В(&Ссылка) и ЦеныНоменклатурыСрезПоследних.ВидЦены.Идентификатор = <<?>> 'НаценкаОбщая'

Может изначально что то не так делаю? помогите разобраться



Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Упаковка,
| ПеремещениеТоваровТовары.Количество,
| ЦеныНоменклатурыСрезПоследних.Цена
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаДокумента, ) КАК ЦеныНоменклатурыСрезПоследних
| ПО ПеремещениеТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И ПеремещениеТоваровТовары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
| И ПеремещениеТоваровТовары.Упаковка = ЦеныНоменклатурыСрезПоследних.Упаковка
| И (ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование ПОДОБНО ""НаценкаОБЩАЯ"")
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ДатаДокумента", Ссылка.Дата);

Тут еще нужно предусмотреть, что цена в РС может быть в какой угодно валюте и по идее нужен пересчет цены из валюты в валюту

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо за ответ!

Попробовал ваш вариант, ругается на условие:

{Документ.ПеремещениеТоваров.МодульМенеджера(4784)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка2 = Запрос2.Выполнить().Выбрать();
по причине:
{(8, 34)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
 неограниченной длины и поля несовместимых типов.
ПеремещениеТоваровТовары.Ссылка <<?>>= &Ссылка

Попробовал изменить условие так:

       |ГДЕ
       | ПеремещениеТоваровТовары.Ссылка В (&Ссылка)";

Форма формируется, но данные не выводит.

Попробовал условие через ПОДОБНО, Поигрался с функциями Выразить, результат нулевой

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

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
А что вы в запрос передаете в качестве параметра "Ссылка"?

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
1) Как-то вы неуверенно отвечаете. Кроме вас на вопрос никто не ответить. Нет ответа = нет помощи.
2) В своем запросе я вам предложил "идею близко к тексту", а не готовый код.

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Да я понимаю, что не готовый код...
Пробую получить значение параметра "Ссылка" через сообщение, получаю значение "массив", поэтому и не уверен

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

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

почему, уже голову сломал...

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
1) Научитесь пользоваться отладчиком. Грамаднейшее число вопросов отпадет
2) Запрос - это далеко не все что нужно для вывода информации в табличный документ. Как по вашему данные из запроса попадают в табличный документ?

Оффлайн Конст_007

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2015-05-25
  • Сайт: 
  • Профессия: Ученик 1С
Отладчик дает значение выражения: ссылка = Массив

Как я понимаю примерно порядок заполнения макета:
Запускается запрос с параметрами, получается таблица значений.
Задаются области макета.
В определенную область макета выводятся нужные значения из полученной таблицы
значений через параметры области.
т.е. ОбластьМакета.Параметры.Параметр1 = ЗначениеИзТаблицыЗначений1 если по одному параметру,
либо там:
 .Уровень() если все записи надо.

как то так, сильно не пинайте только ;)

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
В качестве примера
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ТабДок = СформироватьТабличныйДокумент();
ТабДок.Показать();

КонецПроцедуры

&НаСервере
Функция СформироватьТабличныйДокумент()

ТабДок = Новый ТабличныйДокумент;

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

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("Итого");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);

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

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

ОбластьПодвалТаблицы.Параметры.ИтогоРасход = ИтогоРасход;
ОбластьПодвалТаблицы.Параметры.ИтогоСуммаКОплате = ИтогоСуммаКОплате;
ТабДок.Вывести(ОбластьПодвалТаблицы);

Возврат ТабДок;


КонецФункции
Ссылка на примеры работ https://yadi.sk/d/ksVluPMBkiRzX


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4490
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 15970
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4212
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 646
Последний ответ 10 Май 2017, 20:44
от ilnur75
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4794
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
136 Сообщений
AIFrame
66 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 759
  • Точка Скрытых: 0
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal