Имя: Пароль:
1C
1С v8
1С 8.2 Сортировка таблицы документа перед печатью
0 maslov_ilya
 
15.12.14
16:42
Здравствуйте, Гуру!

Задача такая.
Есть документ "РеализацияТовара" с табличной частью "Товар"(Код, Номенклатура, Кол-во, Цена, Сумма)
Необходимо, перед тем как отправить на печать, отсортировать эту таблицу по колонке номенклатура на выбор пользователя двумя методами: 1)По наименованию номенклатуры 2) По длине наименования номенклатуры

Как я смог выяснить, сортировать непосредственно саму ТЧ - не верно, т.к. документ будет каждый раз перепроводиться и второй метод не получится реализовать. Сортировка должна проводиться только лишь для печатной формы.

Так же прикинул примерный алгоритм для решения задачи:
1) выгружаем ТЧ в ТЗ
2) сортируем ТЗ
3) выводим печатную форму

Вот тут проблемы в знаниях...
1) Можно ли решить мою задачу не прибегая к обработки внешней печатной формы?
2) Подскажите пожалуйста с чего начать? В каких модулях какие процедуры должны быть?

Прошу пинать не сильно, новичок. Решаю эту задачу с целью разобраться, а не получить готовое решение.
Заранее спасибо!
1 Любопытная
 
15.12.14
16:44
Зачем решать эту задачу не прибегая к внешней обработке?
2 maslov_ilya
 
15.12.14
16:46
Любопытная, вы не правильно поняли, такой цели нет. Я предполагаю, что как раз таки и нужно через внешнюю. Просто поинтересовался, вдруг тут все проще.
3 Garykom
 
гуру
15.12.14
16:47
(0) в большинстве типовых печать устроена путем передачи некого объекта в типовую функцию печати

можно подменить объект к примеру вместо исходного документа подсовываем другой с отсортированной как надо ТЧ ))
4 Любопытная
 
15.12.14
16:49
(2) по длине наименования уж точно типовыми методами не отсортируешь, так что однозначно свое ваять. А раз свое ваять, значит лучше ВПФ
5 maslov_ilya
 
15.12.14
16:49
(3) Да, как раз это я и хочу сделать. Не могу сообразить как к этой задаче подойти, куда копать)
6 Любопытная
 
15.12.14
16:51
(5) копай в процедуру Печать() либо в модуле объекта, либо в модуле менеджера. А там уже смотри, что передается и что на выходе получается
7 Любопытная
 
15.12.14
16:52
+(5) Обычно культурные люди запросом вытаскивают отдельно данные для шапки документа, отдельно ТЧ (опять же запросом), вот там, где ТЧ, можешь сортировать ее как тебе нравится.
8 maslov_ilya
 
15.12.14
16:58
Спасибо!
То есть я правильно понимаю...
1) Создаю внешнюю обработку
2) Подцепляю ее к кнопке печать(по умолчанию) на форме нужного документа
3) Далее работаю с модулем этой внешней обработки и там уже формирую все запросы.
9 Vladal
 
15.12.14
17:22
(8) "Подцеплять к кнопке Печать" в типовых легко - открыть справочник ВнешнихОбработок, создать новый элемент, указать тип "Внешняя печатная форма" и загрузить эту обработку. На форме элемента этого справочника указать объект, если он не получен автоматически при добавлении внешней обработки.
10 Vladal
 
15.12.14
17:22
(8) 3) Только после каждого изменения модуля обработки ее надо снова загружать в справочник внешних обработок (поверх существущей)
11 vicof
 
15.12.14
17:31
"т.к. документ будет каждый раз перепроводиться"
меня одного это смущает?
12 Vladal
 
15.12.14
17:33
(11) А что смущает? Если непосредственно в форме документа сортировать, то перед печатью надо будет проводить/записывать документ.
Всё правильно человек рассуждает - ему надо сортировать товары только в печатной форме, не затрагивая данные документа.
13 vicof
 
15.12.14
17:35
Ну то есть взяли распечатали документ за 2012 год, и тут бах, он перепроводится. Расчет себестоимости слетает :)
14 Vladal
 
15.12.14
17:35
(13) ТС как раз хочет не трогать данные докуента, а сортировать ТЗ товаров. Что непонятно?
15 vicof
 
15.12.14
17:36
(14) Так если не хочет, зачем документ перепроводить?
16 maslov_ilya
 
15.12.14
17:38
(15) Чтобы напечатать его придется провести опять.
(9) спасибо, уже в процессе. Как приду к чему то, опубликую тут, мало ли еще какому новичку пригодится.
17 vicof
 
15.12.14
17:41
(15) Нахрена???
Бери данные из документа, сортируй в запросе уже, какая разница, в каком порядке в документе строчки?
18 Рэйв
 
15.12.14
17:45
(0)Подходит ко мне сегодня коллега и говорит."Там в числе пробез когда я со строкой соедеиняю, как убрать?"

Я говорю- долго- формат.Быстро - замени Символы.НПП на пустую...
Он такой -"А проще никак?"

И тут я понял что лень - неистребима.

ТС проще просидеть поддня на форуме чем написать пару тройку строк:-)
19 Рэйв
 
15.12.14
17:46
*пробез =пробел
20 maslov_ilya
 
15.12.14
17:47
(17) То есть вы имеете ввиду произвести сортировку в запросе при формировании печатной формы?
Тогда как реализовать вот это:
"Необходимо, перед тем как отправить на печать, отсортировать эту таблицу по колонке номенклатура на выбор пользователя двумя методами: 1)По наименованию номенклатуры 2) По длине наименования номенклатуры"
21 vicof
 
15.12.14
17:49
(20) Зачем сортировать в документе? Какой смысл? Кто тебе эту чушь написал?
22 maslov_ilya
 
15.12.14
17:54
(21) Я не понимаю, что вас смущает) Есть задача: предоставить пользователю возможность перед тем как его документ вылезет из принтера выбрать каким способом отсортировать таблицу и собственно этим способом отсортировать. Эти способы описаны выше. При этом сортировки в самом документе производиться не должно, т.к. это повлечет за собой его перепроведение, что не допустимо.
23 DexterMorgan
 
15.12.14
17:56
(22) Задача понятна. Сложность в чем?
24 qesto
 
15.12.14
17:57
(22)
сделай так: По кнопке печать открывается форма обработки, где пользователь может выбрать сортировку. Далее выбирает печать и по ней уже передается твой параметр сортировки.
25 vicof
 
15.12.14
17:57
(22) Ок, понял, написано так, что по-разному можно воспринять. См. (17)
26 qesto
 
15.12.14
17:57
документ при этом не затрагивается.
27 barrgand
 
15.12.14
17:58
(21) Как-то странно ты (0) прочитал. Автор как раз и говорит, что выяснил, что сортировать в документе неверно, поэтому спрашивает как ему лучше поступить. А ты пристал к нему со своей сортировкой в документе.
28 bazvan
 
15.12.14
17:59
(20) если на выбор пользователя, то бишь интерактивно, создай форму обработки вызывай ее а там галочка так или так сортировать
29 mrDSide
 
15.12.14
18:00
(22) вот тут что-то похожее делал - http://infostart.ru/public/312426/
30 vicof
 
15.12.14
18:00
(27) см. (25)
31 maslov_ilya
 
15.12.14
18:02
(26) (24) Да, спасибо, как раз этим и занимаюсь. Посмотрим что получится)
32 maslov_ilya
 
15.12.14
20:31
Вообщем так, господа, выручайте) Помогите разобраться пожалуйста)

Перечитал несколько статей, упор сделал вот на эту http://infostart.ru/public/286059/

Саму внешнюю обработку создал и вроде должна работать, но, как оказалось я не могу ее зарегистрировать у себя в конфигурации, т.к. я не использую типовую а писал конфигурацию с нуля. В итоге у меня даже нет раздела администрирование, где и происходит регистрация внешней обработки.

Как мне быть?
33 Мимохожий Однако
 
15.12.14
20:37
(32)Почитай БСП на ИТС. Добавь нужные куски кода в свою нетленку.
34 Chameleon1980
 
15.12.14
21:08
счас вопросы
кто бсп?
кто итс?

даем тс придумать новое пока не поздно (если не в курсе он)
35 Chameleon1980
 
15.12.14
21:09
ну аббревиатуры я имел ввиду :)
36 maslov_ilya
 
15.12.14
21:16
(34) Ну не такой я тупой, че началось то))))
Изучаю. Только понял я что не подсилу мне самому из пустоты нарисовать то что мне нужно.
Думаю, как обойтись уже без внешней печатной формы
37 Chameleon1980
 
15.12.14
21:20
(36) извини. да я не для того.
просто верно - получай таблицу дока, например запросом, сотртируй как надо (только длину в запросе????). А там делай что хотишь. и вперед. затык то самый в чем?
38 Maniac
 
15.12.14
21:23
39 Maniac
 
15.12.14
21:27
Выкладываю код:


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

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

    КонецЕсли;
    
    Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);
    Запрос.Текст = ТекстЗапроса;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ИндексСтроки = 0;
    
    ВыборкаТовары = РезультатЗапроса.Выбрать();
    Пока ВыборкаТовары.Следующий() Цикл    
        
        ИндексСтроки = ИндексСтроки + 1;
        
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("Номенклатура", ВыборкаТовары.Номенклатура);

        НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыОтбора);
        
        Для Каждого СтрокаМассива Из НайденныеСтроки Цикл
            СтрокаМассива.ИндексСортировки = ИндексСтроки;
        КонецЦикла;        
    КонецЦикла;
    
    ТаблицаТовары.Сортировать("ИндексСортировки");
    
    ОбъектНазначения.Товары.Загрузить(ТаблицаТовары);
    
    ОбъектНазначения.Записать();    
    
КонецПроцедуры
40 maslov_ilya
 
15.12.14
21:28
(37) Затык самый что ни на есть глупый. Запрос на получение данных из таблицы где нужно вызывать? В модуле менеджера документа в процедуре Печать()? Или создать еще одну кнопку на форме документа
Мне же еще нужно реализовать возможность выбора метода сортировки, получается нужно еще какую то форму предварительно вызывать.
41 maslov_ilya
 
15.12.14
21:29
(39) Ох...
Спасибо, сейчас изучу)
42 Chameleon1980
 
15.12.14
21:31
мы же не видели твою конфу и как ты хочешь реализовывать.
шагай от печать
43 Chameleon1980
 
15.12.14
21:33
только, как ты говорил, по длине наименования, допустим. Там перебором - опять же методов несколько.
Самый прростой предложить. +колонкаДлина
цикл
запроняем , сортируем
поехали
44 Maniac
 
15.12.14
21:33
Я уже все выложил

Полностью готовая процедура.
Пусть вставит ее в вывзов любой печати и все дела.

Документ физически перепроводиться не будет.

Запись - не смертельно.
45 Maniac
 
15.12.14
21:35
По длине наименования все просто.

В ту же колонку в моей процедеру ИднесСОртировки

в цикле бежать и прописывать
СтрДлина(Номенклатура.Наименование).

в Конце после цикла Таблицатряляля.Сортировать(ИндексСортировки)


Вот и все.
46 Chameleon1980
 
15.12.14
21:42
ну конечно
47 maslov_ilya
 
15.12.14
22:38
(39) Спасибо большое, помогли сдвинуться с мертвой точки!

Пытаюсь разобраться с кодом и подстроить под свои объекты.
Вот мой модуль менеджера.

[spoiler=Модуль Менеджера]
[code]
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыОбработки) Экспорт
    
    ОбъектНазначения = Документы.РеализацияТоваров.ПолучитьСсылку().ПолучитьОбъект();
    
    ТаблицаТовары = Документы.РеализацияТоваров.ПолучитьСсылку().Товары.Выгрузить();  
    ТаблицаТовары.Колонки.Добавить("ИндексСортировки");    
    СписокНоменклатуры = ТаблицаТовары.ВыгрузитьКолонку("Номенклатура");
    
    ВидСортировки = ПараметрыОбработки.ВидСортировки;
    
    Если ВидСортировки = "ПоНоменклатурам" Тогда
        
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    Справочник.Ссылка КАК Номенклатура
        |ИЗ
        |    Справочник.Номенклатура КАК Справочник
        |ГДЕ
        |    Справочник.Ссылка В(&СписокНоменклатуры)
        |
        |СГРУППИРОВАТЬ ПО
        |    Справочник.Ссылка
        |
        |УПОРЯДОЧИТЬ ПО
        |    Справочник.Наименование";

    КонецЕсли;
    
    Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);
    Запрос.Текст = ТекстЗапроса;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ИндексСтроки = 0;
    
    ВыборкаТовары = РезультатЗапроса.Выбрать();
    Пока ВыборкаТовары.Следующий() Цикл    
        
        ИндексСтроки = ИндексСтроки + 1;
        
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("Номенклатура", ВыборкаТовары.Номенклатура);

        НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыОтбора);
        
        Для Каждого СтрокаМассива Из НайденныеСтроки Цикл
            СтрокаМассива.ИндексСортировки = ИндексСтроки;
        КонецЦикла;        
    КонецЦикла;
    
    ТаблицаТовары.Сортировать("ИндексСортировки");
    
    ОбъектНазначения.Товары.Загрузить(ТаблицаТовары);
    
    ОбъектНазначения.Записать();    
    
КонецПроцедуры





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

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

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

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

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

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

        ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
        ТабДок.Вывести(ОбластьИтог);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    
КонецПроцедуры
[/code]
[/spoiler]
Я временно удалил остальные методы сортировки чтобы отладить первый.
Подскажите пожалуйста, что передается этими параметрами (ИдентификаторКоманды,ПараметрыОбработки)? Не могу понять их назначения и принципа работы.
48 maslov_ilya
 
16.12.14
13:28
(45) Уважаемый, Maniac, растолкуйте пожалуйста для новичка, всю ночь просидел, не смог добиться нужного результата.

1) Процедура вызова печати у меня находится в МодулеМенеджера Документа "РеализацияТоваров". Вот она:

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

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

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

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

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

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

2) Где мне описывать вашу процедуру и где вызывать ее? Синтаксис я немного переписал, т.к. компилятор ругался на ДокументСсылка как на неопределенную переменную. Не уверен верно ли я написал в этот раз, но компилятор не ругается.

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

    КонецЕсли;
    
    Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);
    Запрос.Текст = ТекстЗапроса;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ИндексСтроки = 0;
    
    ВыборкаТовары = РезультатЗапроса.Выбрать();
    Пока ВыборкаТовары.Следующий() Цикл    
        
        ИндексСтроки = ИндексСтроки + 1;
        
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("Номенклатура", ВыборкаТовары.Номенклатура);

        НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыОтбора);
        
        Для Каждого СтрокаМассива Из НайденныеСтроки Цикл
            СтрокаМассива.ИндексСортировки = ИндексСтроки;
        КонецЦикла;        
    КонецЦикла;
    
    ТаблицаТовары.Сортировать("ИндексСортировки");
    
    ОбъектНазначения.Товары.Загрузить(ТаблицаТовары);
    
    ОбъектНазначения.Записать();    
    
КонецПроцедуры


3) Я пытался Описать в этом же модуле процедуру и вызвать в теле процедуры Печать, но из-за того что не понимаю какие параметры передать, возникали ошибки типов.
49 Maniac
 
16.12.14
13:31
Назови мою процедуру вот так:

Процедура ВыполнитьСортировку(ДокументСсылка) Экспорт

Внутри убери

ВидСортировки = ПараметрыОбработки.ВидСортировки;
    
и условия что не нужны
50 Maniac
 
16.12.14
13:32
Не вот так сделай

ВидСортировки = ПараметрыОбработки.ВидСортировки;

замени на

ВидСортировки = "ВариантКОторый у тебя будет постоянным";
51 Maniac
 
16.12.14
13:33
в печати вот так:


Процедура Печать(ТабДок, Ссылка) Экспорт
    

ВыполнитьСортировку(Ссылка);



    Макет = Документы.РеализацияТоваров.ПолучитьМакет("Печать");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    РеализацияТоваров.Д
52 Maniac
 
16.12.14
13:35
Короче еще лучше:


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


Внутри


Если ПараметрыОбработки = Неопределено Тогда
ВидСортировки = "ПоИерархииНоменклатуры"; // или свой определенный
Иначе
ВидСортировки = ПараметрыОбработки.ВидСортировки;
КонецЕсли;
53 maslov_ilya
 
16.12.14
13:39
(52) Хорошо, спасибо, с самой сортировкой понятно, разобрался.
Как и вчера, сейчас возникает ошибка:
{Документ.РеализацияТоваров.МодульМенеджера(56)}: Значение не является значением объектного типа (Товары)
    ОбъектНазначения.Товары.Загрузить(ТаблицаТовары);

Вот в этих строках:

ТаблицаТовары.Сортировать("ИндексСортировки");
    
    ОбъектНазначения.Товары.Загрузить(ТаблицаТовары);
    
    ОбъектНазначения.Записать();
54 maslov_ilya
 
16.12.14
13:45
Возможно я что то упускаю.
Вот, на всякий случай, моя база
https://yadi.sk/d/uvour5fpdQe4z