|
Сортировка в печатной форме | ☑ | ||
---|---|---|---|---|
0
sotnikov
26.05.15
✎
09:28
|
Всем привет. У меня есть вот такая печатная форма:
Функция ПечатьДокумента() //Созданим и заполним табличный документ ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("МакетЗаказПокупателяПоСкладамРезерва"); СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок"); СекцияПоставщик = Макет.ПолучитьОбласть("Поставщик"); СекцияПокупатель = Макет.ПолучитьОбласть("Покупатеь"); СекцияШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); СекцияСтрока = Макет.ПолучитьОбласть("Строка"); СекцияИтого = Макет.ПолучитьОбласть("Итого"); СекцияСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью"); СекцияПодвалЗаказа = Макет.ПолучитьОбласть("ПодвалЗаказа"); СекцияЗаголовок.Параметры.ТекстЗаголовка = "Заказ покупателя № " + СсылкаНаОбъект.Номер + " от " + СсылкаНаОбъект.Дата; ТабДокумент.Вывести(СекцияЗаголовок); СекцияПоставщик.Параметры.Поставщик = СсылкаНаОбъект.Организация; ТабДокумент.Вывести(СекцияПоставщик); СекцияПокупатель.Параметры.Покупатель = СсылкаНаОбъект.Контрагент; СекцияПокупатель.Параметры.Комментарий = СсылкаНаОбъект.Комментарий; ТабДокумент.Вывести(СекцияПокупатель); ТабДокумент.Вывести(СекцияШапкаТаблицы); Сумма = 0; СуммаНДС = 0; НумераторСтрок = 0; Для каждого СтрТаб Из СсылкаНаОбъект.Товары Цикл НумераторСтрок = НумераторСтрок + 1; ЗаполнитьЗначенияСвойств(СекцияСтрока.Параметры,СтрТаб); СекцияСтрока.Параметры.Номенклатура = СокрЛП(СтрТаб.Номенклатура.Артикул) + " " + СокрЛП(СтрТаб.Номенклатура.Наименование); ТабДокумент.Вывести(СекцияСтрока); КонецЦикла; СекцияИтого.Параметры.Итого = СсылкаНаОбъект.СуммаДокумента; ТабДокумент.Вывести(СекцияИтого); Сумма = СсылкаНаОбъект.СуммаДокумента; СуммаКПрописи = Сумма; СекцияСуммаПрописью.Параметры.ИтоговаяСтрока ="Всего наименований " + НумераторСтрок + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, СсылкаНаОбъект.ВалютаДокумента); СекцияСуммаПрописью.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, СсылкаНаОбъект.ВалютаДокумента); ТабДокумент.Вывести(СекцияСуммаПрописью); СекцияПодвалЗаказа.Параметры.Ответственный = СсылкаНаОбъект.Ответственный; ТабДокумент.Вывести(СекцияПодвалЗаказа); Возврат ТабДокумент; КонецФункции // ПечатьДокумента() Мне нужно организовать в выходной таблице сортировку по Артикулу. Как это сделать в данном случае, без запроса ВЫБРАТЬ? Пытался подойти к задаче через ВЫБРАТЬ, но в этом случае не знаю каким запросом вывести склад. |
|||
1
Jonny_Khomich
26.05.15
✎
09:29
|
товары в ТЗ помести, да отсортируй.
|
|||
2
chelentano
26.05.15
✎
09:30
|
(0) и какая проблема с запросом возникла?
|
|||
3
pessok
26.05.15
✎
09:32
|
(2) проблема с запросом в том, что у него обход ТЗ, а не запрос :)
(0), делай (1) |
|||
4
ДенисЧ
26.05.15
✎
09:33
|
Запросом отсортируй...
|
|||
5
chelentano
26.05.15
✎
09:33
|
(3) у него обход не ТЗ, а табличной части, не понимаю, почему нельзя тот обход сделать через выборку из запроса
|
|||
6
pessok
26.05.15
✎
09:35
|
(5) ТЗ, ТЧ, какая разница? :) В любом случае в ТЧ нет колонки "Артикул", сиречь либо выгружать в ТЗ, добавлять колонку "Артикул", заполнять и сортировать по ней (что плохо), либо поместить в пакетный запрос, где в параметре будет его ТЧ
|
|||
7
Любопытная
26.05.15
✎
09:40
|
(6) Артикул - реквизит справочника Номенклатура. Разве в запросе нельзя сортировать по Номенклатура.Артикул? Я чего-то не знаю?
|
|||
8
sotnikov
26.05.15
✎
09:42
|
Парни, я понимаю, что надо запросом отсортировать, только вот я пока недокурил мануал по программированию и не знаю как его правильно построить. Вчера пол дня колупался, то тут ни так, то там.
Можете мне сам запрос нарисовать, а то мне срочно надо эту форму допилить, что бы манагеры вручную не сортировали, у них проблема с этим. |
|||
9
chelentano
26.05.15
✎
09:42
|
(6) ну так я и спросил, почему через запрос не получается, потому как в (0): "Как это сделать в данном случае, без запроса ВЫБРАТЬ? Пытался подойти к задаче через ВЫБРАТЬ, но в этом случае не знаю каким запросом вывести склад."
|
|||
10
pessok
26.05.15
✎
09:42
|
(7) так об этом и сказали сразу
|
|||
11
pessok
26.05.15
✎
09:44
|
(*)
ВЫБРАТЬ * ПОМЕСТИТЬ ДанныеТЧ ИЗ &ТЧ КАК ТЧ ; ВЫБРАТЬ * ИЗ ТЧ УПОРЯДОЧИТЬ ПО Номенклатура.Артикул УБЫВ |
|||
12
pessok
26.05.15
✎
09:44
|
(11) к (8)
|
|||
13
sotnikov
26.05.15
✎
09:45
|
(9) А хз почему не получается. Я не знаю какой строкой добавить в запрос склад. Потому что через ЗаказПокупателя.Размещение он не выводится.
|
|||
14
pessok
26.05.15
✎
09:50
|
в (11) во втором запросе неправильное название таблицы, ессно, должно быть ДанныеТЧ
|
|||
15
sotnikov
26.05.15
✎
09:53
|
(11) Что писать вместо *?
|
|||
16
Web00001
26.05.15
✎
09:58
|
(15)так и пиши, это значит выбрать все поля
|
|||
17
anaed
26.05.15
✎
09:59
|
Я так и не понял, что мешает сделать сразу запрос к тч документа? Отсутствие знаний?
ВЫБРАТЬ * ИЗ Документ.ЗаказПокупателя.Товары КАК ТЧ ГДЕ ТЧ.Ссылка = &Ссылка УПОРЯДОЧИТЬ ПО Номенклатура.Артикул УБЫВ |
|||
18
pessok
26.05.15
✎
10:01
|
(17) ну может ему без записи надо печатать, например
|
|||
19
Любопытная
26.05.15
✎
10:02
|
(17) Видимо именно отсутствие знаний.
А говорят * в запросе нехорошо... |
|||
20
pessok
26.05.15
✎
10:03
|
(19) нехорошо, но тут ж был просто дан пример, я не знаю, что у товарища там в ТЧ
|
|||
21
sotnikov
26.05.15
✎
10:03
|
Ну конечно же отсутствие. Стал бы я спрашивать такие элементарные вещи имея знания. Я пока только учусь.
|
|||
22
sotnikov
26.05.15
✎
10:05
|
(17) Вставил такой запрос:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ * ИЗ Документ.ЗаказПокупателя.Товары КАК ТЧ |ГДЕ ТЧ.Ссылка = &Ссылка |УПОРЯДОЧИТЬ ПО Номенклатура.Артикул УБЫВ |"; ЗапросТовары = Запрос.Выполнить().Выгрузить(); Ругается на: Не задано значение параметра "Ссылка" |
|||
23
pessok
26.05.15
✎
10:05
|
(22)
Запрос.УстановитьПараметр(Ссылка, СсылкаНаОбъект); |
|||
24
Любопытная
26.05.15
✎
10:06
|
(22) В параметр надо указать ссылку на документ, который ты печатаешь. ЗапросТовары.УстановитьПараметр("Ссылка", ТутСсылкаНаТвойДокумент);
|
|||
25
pessok
26.05.15
✎
10:06
|
"Ссылка"
|
|||
26
sotnikov
26.05.15
✎
10:10
|
Ну вроде на синтаксис не ругается. Таблица выводится, только сортировка не работает.
Там важно в какое место этот запрос вставлять? |
|||
27
anaed
26.05.15
✎
10:13
|
(22) еще по тексту запроса можно клацнуть, выбрать "конструктор запроса" и он вам звездочку развалит на все поля, которые есть в тч.
И потом нужно обходить не СсылкаНаОбъект.Товары, а ЗапросТовары А в идеале вообще не создавать лишнюю Тч и обойтись выборкой запроса: Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(СекцияСтрока.Параметры,Выборка); конеццикла; |
|||
28
anaed
26.05.15
✎
10:14
|
(18) фуфу, палкой по голове автору такого документооборота :)
|
|||
29
sotnikov
26.05.15
✎
10:22
|
Не пашет:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ТЧ.Ссылка, | ТЧ.НомерСтроки, | ТЧ.ЕдиницаИзмерения, | ТЧ.ЕдиницаИзмеренияМест, | ТЧ.Количество, | ТЧ.КоличествоМест, | ТЧ.Коэффициент, | ТЧ.Номенклатура, | ТЧ.ПлановаяСебестоимость, | ТЧ.ПроцентСкидкиНаценки, | ТЧ.Размещение, | ТЧ.СтавкаНДС, | ТЧ.Сумма, | ТЧ.СуммаНДС, | ТЧ.ХарактеристикаНоменклатуры, | ТЧ.Цена, | ТЧ.ПроцентАвтоматическихСкидок, | ТЧ.УсловиеАвтоматическойСкидки, | ТЧ.ЗначениеУсловияАвтоматическойСкидки, | ТЧ.КлючСтроки, | ТЧ.СерияНоменклатуры, | ТЧ.Номенклатура.Артикул |ИЗ | Документ.ЗаказПокупателя.Товары КАК ТЧ |ГДЕ | ТЧ.Ссылка = &Ссылка | |УПОРЯДОЧИТЬ ПО | ТЧ.Номенклатура.Артикул"; ЗапросТовары = Запрос.Выполнить().Выгрузить(); |
|||
30
Любопытная
26.05.15
✎
10:22
|
(26) а артикул это вообще что? Строка? А то может у вас целый справочник этих артикулов...
|
|||
31
Любопытная
26.05.15
✎
10:23
|
(29) Что не пашет-то?
|
|||
32
Любопытная
26.05.15
✎
10:23
|
Перед тем, как запрос выполнить, надо параметр установить. Тебе ж сказали
|
|||
33
sotnikov
26.05.15
✎
10:25
|
(31) Сортировка не происходит
|
|||
34
DGorgoN
26.05.15
✎
10:25
|
Конструктор запросов лень использовать?
|
|||
35
sotnikov
26.05.15
✎
10:25
|
(32) Ну так я же установил параметр
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); |
|||
36
pessok
26.05.15
✎
10:25
|
(33) обход показывай
|
|||
37
Любопытная
26.05.15
✎
10:26
|
(35) сверху, да, не увидела.
Показывай все целиком) |
|||
38
sotnikov
26.05.15
✎
10:26
|
(36) Я бы с радостью его показал, только не знаю как=)
|
|||
39
Любопытная
26.05.15
✎
10:26
|
(38) текст весь обработки показывай, чудо :)
|
|||
40
pessok
26.05.15
✎
10:27
|
(38) весь код целиком тогда давай
|
|||
41
sotnikov
26.05.15
✎
10:27
|
Функция ПечатьДокумента()
//Созданим и заполним табличный документ ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("МакетЗаказПокупателяПоСкладамРезерва"); СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок"); СекцияПоставщик = Макет.ПолучитьОбласть("Поставщик"); СекцияПокупатель = Макет.ПолучитьОбласть("Покупатеь"); СекцияШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); СекцияСтрока = Макет.ПолучитьОбласть("Строка"); СекцияИтого = Макет.ПолучитьОбласть("Итого"); СекцияСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью"); СекцияПодвалЗаказа = Макет.ПолучитьОбласть("ПодвалЗаказа"); СекцияЗаголовок.Параметры.ТекстЗаголовка = "Заказ покупателя № " + СсылкаНаОбъект.Номер + " от " + СсылкаНаОбъект.Дата; ТабДокумент.Вывести(СекцияЗаголовок); СекцияПоставщик.Параметры.Поставщик = СсылкаНаОбъект.Организация; ТабДокумент.Вывести(СекцияПоставщик); СекцияПокупатель.Параметры.Покупатель = СсылкаНаОбъект.Контрагент; СекцияПокупатель.Параметры.Комментарий = СсылкаНаОбъект.Комментарий; ТабДокумент.Вывести(СекцияПокупатель); ТабДокумент.Вывести(СекцияШапкаТаблицы); Сумма = 0; СуммаНДС = 0; НумераторСтрок = 0; Для каждого СтрТаб Из СсылкаНаОбъект.Товары Цикл НумераторСтрок = НумераторСтрок + 1; ЗаполнитьЗначенияСвойств(СекцияСтрока.Параметры,СтрТаб); СекцияСтрока.Параметры.Номенклатура = СокрЛП(СтрТаб.Номенклатура.Артикул) + " " + СокрЛП(СтрТаб.Номенклатура.Наименование); ТабДокумент.Вывести(СекцияСтрока); КонецЦикла; СекцияИтого.Параметры.Итого = СсылкаНаОбъект.СуммаДокумента; ТабДокумент.Вывести(СекцияИтого); Сумма = СсылкаНаОбъект.СуммаДокумента; СуммаКПрописи = Сумма; СекцияСуммаПрописью.Параметры.ИтоговаяСтрока ="Всего наименований " + НумераторСтрок + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, СсылкаНаОбъект.ВалютаДокумента); СекцияСуммаПрописью.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, СсылкаНаОбъект.ВалютаДокумента); ТабДокумент.Вывести(СекцияСуммаПрописью); СекцияПодвалЗаказа.Параметры.Ответственный = СсылкаНаОбъект.Ответственный; ТабДокумент.Вывести(СекцияПодвалЗаказа); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ТЧ.Ссылка, | ТЧ.НомерСтроки, | ТЧ.ЕдиницаИзмерения, | ТЧ.ЕдиницаИзмеренияМест, | ТЧ.Количество, | ТЧ.КоличествоМест, | ТЧ.Коэффициент, | ТЧ.Номенклатура, | ТЧ.ПлановаяСебестоимость, | ТЧ.ПроцентСкидкиНаценки, | ТЧ.Размещение, | ТЧ.СтавкаНДС, | ТЧ.Сумма, | ТЧ.СуммаНДС, | ТЧ.ХарактеристикаНоменклатуры, | ТЧ.Цена, | ТЧ.ПроцентАвтоматическихСкидок, | ТЧ.УсловиеАвтоматическойСкидки, | ТЧ.ЗначениеУсловияАвтоматическойСкидки, | ТЧ.КлючСтроки, | ТЧ.СерияНоменклатуры, | ТЧ.Номенклатура.Артикул |ИЗ | Документ.ЗаказПокупателя.Товары КАК ТЧ |ГДЕ | ТЧ.Ссылка = &Ссылка | |УПОРЯДОЧИТЬ ПО | ТЧ.Номенклатура.Артикул"; ЗапросТовары = Запрос.Выполнить().Выгрузить(); Возврат ТабДокумент; КонецФункции // ПечатьДокумента() |
|||
42
Любопытная
26.05.15
✎
10:27
|
Это шутка, да?
|
|||
43
sotnikov
26.05.15
✎
10:28
|
(42) Нет...
|
|||
44
pessok
26.05.15
✎
10:28
|
эмммм...
запрос наверх, перед циклом вместо Для каждого СтрТаб Из СсылкаНаОбъект.Товары Цикл Для каждого СтрТаб Из ЗапросТовары Цикл а вообще зачет, спасибо :) |
|||
45
Любопытная
26.05.15
✎
10:30
|
(44) некошерно результат запроса выгружать. За это на экзамене палками бьют, говорят ;)
|
|||
46
Гёдза
26.05.15
✎
10:31
|
(45) почему некошерно?
|
|||
47
pessok
26.05.15
✎
10:32
|
(45) я хочу, чтобы у него уже заработало :)
а так да, надо выборку обходить |
|||
48
pessok
26.05.15
✎
10:32
|
(46) потому что получается лишняя переменная. ну и методологически неверно
|
|||
49
sotnikov
26.05.15
✎
10:32
|
(44) (45)
Спасибо огромное=) Все заработало. Остальным сочувствующим тоже спасибо. |
|||
50
Любопытная
26.05.15
✎
10:33
|
(46) Ох, не помню. Разница в том, что ты либо получаешь весь результат пачкой в ТЗ, либо постепенно подгружаешь из выборки. Второе правильнее с точки зрения работы с памятью, особенно если в результате запроса 100500 строк
|
|||
51
Любопытная
26.05.15
✎
10:34
|
(49) Ну ты это... Учись)
|
|||
52
KrabCore
26.05.15
✎
10:36
|
(41) чуть чай носом не пошел. нельзя такое выкладывать
|
|||
53
pessok
26.05.15
✎
10:37
|
(52) все там были
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |