Имя: Пароль:
1C
1C 7.7
v7: Печатная форма v7.7
0 Dark_Warrior
 
07.03.13
11:17
Всем доброго дня. Сложилась такая ситуация - 1с7.7 "Торговля + Склад", в которой я на базе печатной формы документа реализации сварганил новую печатную форму, которая показывает адреса элементов на складе (реквизит элемента номенклатуры). Элементы берутся построчно из документа реализации. Подскажите пожалуйста, как отсортировать их в получившейся таблице по алфавиту (по этому самому адресу на складе)?
1 VladZ
 
07.03.13
11:20
Данные - в Таблицу значений. Потом МояТаблица.Сортировать(<НужнаяКолонка>).
2 Dark_Warrior
 
07.03.13
11:21
(1) А как передать данные в ЦЗ? Сейчас строки ТЧ формируются так:
   НомСтроки = 0;
   Докум.ВыбратьСтроки();
   
   Пока Докум.ПолучитьСтроку() = 1 Цикл
       НомСтроки = НомСтроки + 1;
       ИсхТабл.ВывестиСекцию("Строка");
   КонецЦикла;
3 SerF_2011
 
07.03.13
11:21
(0) 1.Выгрузить ТЧ документа во временную таблицу значений
2. Добавить колонку адрес. Обойти ТЗ, заполнить эту колонку.
3. Вывести в печатную форму из ТЗ.
4 SerF_2011
 
07.03.13
11:22
(3) 2.5 Отсортировать по адресу. Забыл.
5 Dark_Warrior
 
07.03.13
11:28
(4) А можно немного подробнее? Принцип понятен, но я с языком пока довольно слабо знаком.
6 VladZ
 
07.03.13
11:29
МояТЗ = СоздатьОБъект("ТаблицаЗначений");
Докум.ВыгрузитьТабличнуюЧасть(МояТЗ);
7 Cthulhu
 
07.03.13
11:31
малой кровью, добавлением одного блока переб собственно кодом печати:
1) ВыгрузитьТабличнуюЧасть(ПечДокТЗ)
2) ПечДокТЗ.НоваяКолонка("Адрес")
3) заполнить ПечДокТЗ.Адрес
4) отсортировать ПечДокТЗ по "+Адрес"
5) ЗагрузитьТабличнуюЧасть(ПечДокТЗ)
>>> дальше - все как было.
прим.: чтобы не корячить таб.часть - можно добавить в указанный блок сохранение таб.части перед изменением её (перед п.5)) в, например, БылоДокТЗ, а после печати - добавить (каюсь, отдельно от блока) один оператор ЗагрузитьТабличнуюЧасть(БылоДокТЗ).
и не придется перековыривать код вывода таб.части в код вывода ТЗ с сопутствующим ковырянием в шаблоне печати.
А ещё лучше - заюзать внешнюю печатную форму.
8 VladZ
 
07.03.13
11:31
Упражнение для развития навыков работы с языком программирования: открываешь модуль любого отчета (можно глобальник) и составляешь алгоритм работы.
9 Cthulhu
 
07.03.13
11:33
(8): херня это а не упражнение. посыл нулевой.
лучшее и самое действенное упражнение - это создавать что-то что нужно, или что-то уже действующее поменять как нужно.
10 Dark_Warrior
 
07.03.13
11:34
(6) Хм.. в получившей табличной части нет колонки "Адрес на складе", по которой и нужно сортировать. Значит нужно ее добавить, заполнить, и по ней выполнить сортировку, я правильно понимаю?
11 SerF_2011
 
07.03.13
11:38
(10)
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Докум.ВыгрузитьТабличнуюЧасть(ТЗ);
   ТЗ.НоваяКолонка("Адрес");
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку() = 1 Цикл
       ТЗ.Адрес = ТЗ.Товар.Адрес;
   КонецЦикла;
   ТЗ.Сортировать("Адрес");
   
   //далее ваш текст, но данные берем из ТЗ
   НомСтроки = 0;
   ТЗ.ВыбратьСтроки();
   
   Пока ТЗ.ПолучитьСтроку() = 1 Цикл
       НомСтроки = НомСтроки + 1;
       ИсхТабл.ВывестиСекцию("Строка");
   КонецЦикла;
12 1Сергей
 
07.03.13
11:38
(10) Да. А теперь открой тайну - Что такое ЦЗ?
13 VladZ
 
07.03.13
11:39
(9) Чтобы что-то создать - нужно иметь хоть какие-то знания. Можно, конечно, бросить человека в море и сказать: "Плыви!" А можно для начала показать пример как плавать, а потом уже бросать в море...
14 Cthulhu
 
07.03.13
11:49
(13): чтобы иметь какие-то знания - надо что-то пытаться узнать. что-то пытаться узнать - нужно для чего-то. узнать для того, чтобы сделать что-то нужное - гораздо действеннее чем узнать что-то ради того, чтобы узнать.
15 Dark_Warrior
 
07.03.13
12:13
(11) Хм..ТЗ заполняется норм, а вот с выводом в ИсхТабл косяк какой-то...
16 SerF_2011
 
07.03.13
12:17
(15) У вас видимо в макете прописаны переменные, например, Докум.Товар, Докум.Количество. Нужно везде Докум исправить на ТЗ.
17 Pro-tone
 
07.03.13
12:33
Можно "докум" подменить ТЗ, чтобы не править макет(таблицу)
18 SerF_2011
 
07.03.13
12:50
(17) кстати, +
19 Dark_Warrior
 
07.03.13
13:26
(16) точно. все вроде норм работает, всем огромное спасибо за помощь!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн