|   |   | 
| 
 | Сортировка в печатной форме | ☑ | ||
|---|---|---|---|---|
| 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) все там были     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |