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

Автор Тема: Сортировка в макете  (Прочитано 1786 раз)

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

Оффлайн xgladosx

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Программист 8.1
Добрый день!
есть документ резервирования, с него печатается требование на склад с адресами, мне нужно сделать сортировку по месту хранения, я не очень знаком с языком запросов, помогите пожалуйста. Код печати ниже.
Спасибо
Процедура Печать(Кнопка)

Если ЭтоНовый() Тогда
Предупреждение("Документ можно распечатать только после его записи");
Возврат;
ИначеЕсли Не РазрешитьПечатьНепроведенныхДокументов(Проведен) Тогда
Предупреждение("Недостаточно полномочий для печати непроведенного документа!");
Возврат;
КонецЕсли;

Если Не ПроверитьМодифицированность(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

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

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
ВыборкаСтрокТара   = Шапка.ВозвратнаяТара.Выбрать();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
Макет       = ПолучитьМакет("Накладная");

// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = СформироватьЗаголовокДокумента(Шапка, "Требование на склад");
ОбластьМакета.Параметры.Заказ1=ЗаказПокупателя.Ссылка;
  областьМакета.Параметры.Контрагент1=контрагент.Ссылка;
  ОбластьМакета.Параметры.МагазКлиента=МагазинКлиента;
  ТабДокумент.Вывести(ОбластьМакета);

// Вывести табличную часть
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
Иначе
ВыводитьКоды = Ложь;
КонецЕсли;

ИмяШапки  = "ШапкаТаблицы";
ИмяСтроки = "Строка";

ФлагПечатиМест = (Товары.Итог("КоличествоМест") > 0);
ОбластьНомера  = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
ОбластьКодов   = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
ОбластьТовар   = Макет.ПолучитьОбласть(ИмяШапки + "|Товар");
ОбластьМест    = Макет.ПолучитьОбласть(ИмяШапки + "|Мест");
ОбластьДанных  = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");
//арх*
ОбластьАдрес=макет.ПолучитьОбласть(ИмяШапки+"|Адрес");
//*арх

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                    + ?(ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
Иначе
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                    + Макет.Область("КолонкаКодов").ШиринаКолонки
                                    + ?(ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
КонецЕсли;
Если ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
    ТабДокумент.Присоединить(ОбластьАдрес);

ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
ОбластьТовар  = Макет.ПолучитьОбласть(ИмяСтроки + "|Товар");
ОбластьМест   = Макет.ПолучитьОбласть(ИмяСтроки + "|Мест");
ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");
//арх*
ОбластьАдрес=макет.ПолучитьОбласть(ИмяСтроки+"|Адрес");//*арх

Ном = 0;

// Выборка товаров
Пока ВыборкаСтрокТовары.Следующий() Цикл

Если ЗначениеНеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

Ном = Ном + 1;

//ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьНомера.Параметры.НомерСтроки = Ном;
ТабДокумент.Вывести(ОбластьНомера);

Если ВыводитьКоды Тогда
Если Колонка = "Артикул" Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

ОбластьТовар.Параметры.Товар = ВыборкаСтрокТовары.Товар;
ТабДокумент.Присоединить(ОбластьТовар);

Если ФлагПечатиМест Тогда
ОбластьМест.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьДанных);

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

Пока выб.Следующий() Цикл
адр1=СокрЛП(выб.НомерСклада)+СокрЛП(выб.СекцияСклада)+СокрЛП(выб.Полка);
адр=адр1+Символы.ПС+адр;
кол1=выб.КоличествоОстаток;
кол=Строка(кол1)+Символы.ПС+Строка(кол);
ОбластьАдрес.Параметры.адрес=адр;
ОбластьАдрес.Параметры.кол=кол;
КонецЦикла;
КонецЕсли;
                     ТабДокумент.Присоединить(ОбластьАдрес); //архутич
КонецЦикла;

// Выборка возвратная тара
Пока ВыборкаСтрокТара.Следующий() Цикл

Если ЗначениеНеЗаполнено(ВыборкаСтрокТара.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

Ном = Ном + 1;

//ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТара);
ОбластьНомера.Параметры.НомерСтроки = Ном;
ТабДокумент.Вывести(ОбластьНомера);

Если ВыводитьКоды Тогда
Если Колонка = "Артикул" Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТара.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТара.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

ОбластьТовар.Параметры.Товар = ВыборкаСтрокТара.Товар;
ТабДокумент.Присоединить(ОбластьТовар);

Если ФлагПечатиМест Тогда
ОбластьМест.Параметры.Заполнить(ВыборкаСтрокТара);
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТара);
ТабДокумент.Присоединить(ОбластьДанных);

КонецЦикла;

// Вывести подвал
ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
ОбластьТовар  = Макет.ПолучитьОбласть("Подвал|Товар");
ОбластьМест   = Макет.ПолучитьОбласть("Подвал|Мест");
ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные");
//арх*
ОбластьАдрес=макет.ПолучитьОбласть("Подвал|Адрес");
    //*арх

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
Если ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
    ТабДокумент.Присоединить(ОбластьАдрес);

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

НапечататьДокумент(ТабДокумент, 1, 0, СформироватьЗаголовокДокумента(ЭтотОбъект, ЭтотОбъект.Метаданные().Представление()));





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


Теги:
 

Как "поймать" нажатие на кнопку "Печать" в открываемом макете(табличный документ)?

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

Ответов: 3
Просмотров: 1167
Последний ответ 14 Фев 2017, 14:27
от ilyay
Форматирование ячейки типа "Шаблон" в макете табличного документа

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

Ответов: 4
Просмотров: 19394
Последний ответ 11 Апр 2012, 11:13
от cska-fanat-kz
Сортировка журнала документа по полю "ВидДокумента"

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

Ответов: 4
Просмотров: 3066
Последний ответ 25 Июл 2014, 16:45
от greenLiss
подскажите как сделать так,чтобы в макете в нужных графах автоматически подставлялась текущая дата.

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

Ответов: 2
Просмотров: 1488
Последний ответ 12 Авг 2015, 19:26
от SkyNetYar
как в макете отчета сделать, чтоб можно было переходить по выводимым ссылкам

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

Ответов: 2
Просмотров: 1022
Последний ответ 20 Апр 2016, 13:31
от ktu78

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

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

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


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

* Реклама

* Поиск

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

* Реклама

* Последние вакансии

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
168 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal