helpf.pro
Регистрация

v8: Помогите с сортировкой

zloy_kot
06.01.2014 11:33Прочитано: 4559
Возникла необходимость отсортировать столбцы с ценами при выводе документа на печать....
Как я понял сортировка происходит в этом коде
Запрос.Текст =
"ВЫБРАТЬ
| (УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1) КАК НомерСтроки,
| УстановкаЦенНоменклатуры.Номенклатура,
| УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
| УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
| УстановкаЦенНоменклатуры.Номенклатура.Артикул КАК Артикул,
| NULL КАК Серия,
| УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
| УстановкаЦенНоменклатуры.Цена,
| УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
| УстановкаЦенНоменклатуры.Валюта,
| УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
| УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки
|
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
|
|ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| УстановкаЦенНоменклатуры.ТипЦен,
| УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
Почему то цены выставлены по какому-то непонятному поряду... не по коду и не по алфавиту... как сделать произвольный(вручную прописанный) порядок цен???
Yandex
Возможно, вас также заинтересует
Реклама на портале
Jonsony
06.01.2014 13:43Ответ № 1
что за конфа?
в УТ11 вполне красиво печатает из документа штатно

да может логичнее будет вместо
Код 1C v 8.2 УП
 |УПОРЯДОЧИТЬ ПО 
| УстановкаЦенНоменклатуры.ТипЦен,
| УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен


такое?
Код 1C v 8.2 УП
 |УПОРЯДОЧИТЬ ПО 
| УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен,
| УстановкаЦенНоменклатуры.ТипЦен
zloy_kot
06.01.2014 14:22Ответ № 2
УТ10,2,12,2
Проблема такова что на выходе мы имеем столбцы:Розница,Закупка,Опт,РРЦ, ЦенаМагазина. Именно в таком порядке.
Мне же нужно :Закупка,Опт,Розница,ЦенаМагазина,РРЦ.
я уже голову сломал...
zloy_kot
06.01.2014 14:44Ответ № 3
проблема решилась закоментив
Код 1C v 8.х
 //|УПОРЯДОЧИТЬ ПО
//|УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен,
//|УстановкаЦенНоменклатуры.ТипЦен
//|

Осталось понять как исключить выход в печатную форму какого-то определенного "ТипЦен" и идеале оставив только "Розница,ЦенаМагазина."
*01 *01 *01 *01
Jonsony
06.01.2014 15:01Ответ № 4
через условие в запросе?
zloy_kot
06.01.2014 15:05Ответ № 5
Если не трудно киньте любой пример условия в запросе....
С нуля еще ни разу не писал на 1с,...все как то больше Copy/Past'ом правлю конфигурацию
zloy_kot
06.01.2014 18:11Ответ № 6
если поставить
Код 1C v 8.х
 
|ГДЕ
|УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
| и УстановкаЦенНоменклатуры.ТипЦен = Розничная

Выдает ошибку.... Ожидание параметра ГДЕ
Jonsony
06.01.2014 18:40Ответ № 7
может
Код 1C v 8.2 УП
 | и УстановкаЦенНоменклатуры.ТипЦен = "Розничная"    
zloy_kot
07.01.2014 09:11Ответ № 8
Так тем более не правильно, прога думает что кавычки закрывают вот эти
Код 1C v 8.х
 "ВЫБРАТЬ   

и получаем синтаксическую ошибку
Код 1C v 8.х
 {Документ.УстановкаЦенНоменклатуры(174,43)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')   

Если заменить "Розничная" на &Розничная то будет вот так
Код 1C v 8.х
 {Документ.УстановкаЦенНоменклатуры(184)}: Ошибка при вызове метода контекста (Выполнить): {(18, 1)}: Ожидается имя таблицы
<<?>>ГДЕ
ЗапросПоТоварам = Запрос.Выполнить();
по причине:
{(18, 1)}: Ожидается имя таблицы
<<?>>ГДЕ

Изменено 07.01.14 09:13:27
Jonsony
07.01.2014 14:15Ответ № 9
(8) zloy_kot, сорри ту по своим заморочкам запутался

да, нужно
Код 1C v 8.2 УП
 &Розничная   

и плюс к этому
Код 1C v 8.2 УП
 
Запрос.УстановитьПараметр("Розничная", ТипЦен);

а уж присвоением или с реквизита формы брать - по ситуации
Jonsony
07.01.2014 14:24Ответ № 10
вот пример запроса в ут11 (из рабочей внешней обработки)
тут "ТипЦены" - реквизит на форме
Код 1C v 8.2 УП
 
"ВЫБРАТЬ
| ПеремещениеТоваровТовары.Ссылка КАК Докс,
| ПеремещениеТоваровТовары.Номенклатура КАК Товар,
| ПеремещениеТоваровТовары.Количество КАК Количество,
| ПеремещениеТоваровТовары.Номенклатура.НаименованиеПолное КАК ДляПечати,
| ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдИзм,
| ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения КАК ТипЕдИзм,
| ПеремещениеТоваровТовары.Номенклатура.Код КАК Код,
| ШтрихкодыНоменклатуры.Штрихкод КАК ШК,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Ценник
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО ПеремещениеТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ПеремещениеТоваровТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка В(&СписокДокументовВозврата)
// тип цены можно или указать на форме или задать явно (не будет работать при изменении названия цены).
| И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены ";
// | И ЦеныНоменклатурыСрезПоследних.ВидЦены = ""Розничная цена"" ";

Запрос.УстановитьПараметр("СписокДокументовВозврата", ДокументыВозврата);
Запрос.УстановитьПараметр("ВидЦены", ТипЦены);

Изменено 07.01.14 14:24:49
zloy_kot
07.01.2014 18:16Ответ № 11
Сможешь скинуть из этой обработки саму процедуру среза "ЦеныНоменклатурыСрезПоследних.Цена".
Мне сейчас выдает ошибку
Код 1C v 8.х
 
{Документ.УстановкаЦенНоменклатуры(180)}: Ошибка при вызове метода контекста (Выполнить): {(20, 40)}: Не задано значение параметра "ТипЦен"
и УстановкаЦенНоменклатуры.ТипЦен = <<?>>&ТипЦен
ЗапросПоТоварам = Запрос.Выполнить();
по причине:
{(20, 40)}: Не задано значение параметра "ТипЦен"
и УстановкаЦенНоменклатуры.ТипЦен = <<?>>&ТипЦен

Изменено 07.01.14 18:41:48
Jonsony
07.01.2014 18:36Ответ № 12
(11) zloy_kot, это не процедура, это обращение к регистру
запрос я весь привёл
Код 1C v 8.2 УП
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
zloy_kot
07.01.2014 18:44Ответ № 13
(12) Jonsony,
новая ошибка))))

Код 1C v 8.х
 {Документ.УстановкаЦенНоменклатуры(180)}: Ошибка при вызове метода контекста (Выполнить): {(20, 40)}: Не задано значение параметра "ТипЦен"
и УстановкаЦенНоменклатуры.ТипЦен = <<?>>&ТипЦен
ЗапросПоТоварам = Запрос.Выполнить();
по причине:
{(20, 40)}: Не задано значение параметра "ТипЦен"
и УстановкаЦенНоменклатуры.ТипЦен = <<?>>&ТипЦен

Наверно я тебя замучал)))
zloy_kot
07.01.2014 18:54Ответ № 14
Теперь код выглядит так
Код 1C v 8.х
 "ВЫБРАТЬ
| (УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1) КАК НомерСтроки,
| УстановкаЦенНоменклатуры.Номенклатура,
| УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
| УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
| УстановкаЦенНоменклатуры.Номенклатура.Артикул КАК Артикул,
| NULL КАК Серия,
| УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
| УстановкаЦенНоменклатуры.Цена,
| УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
| УстановкаЦенНоменклатуры.Валюта,
| УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
| УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки
|
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
|
|ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
| и УстановкаЦенНоменклатуры.ТипЦен = &ТипЦен
|
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
Запрос.УстановитьПараметр("Розничная",ТипЦен);
ЗапросПоТоварам = Запрос.Выполнить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УстановкаЦенНоменклатуры_ИзменениеЦен";

Макет = ПолучитьМакет("ИзменениеЦен2");
Jonsony
07.01.2014 20:47Ответ № 15
а может
Код 1C v 8.2 УП
 
|ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
| и УстановкаЦенНоменклатуры.ТипЦен = &Розничная
|
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
Запрос.УстановитьПараметр("Розничная",ТипЦен);
zloy_kot
08.01.2014 09:03Ответ № 16
Ошибок нет но результат нулевой....
title

Код 1C v 8.х
 Запрос.Текст =
"ВЫБРАТЬ
| (УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1) КАК НомерСтроки,
| УстановкаЦенНоменклатуры.Номенклатура,
| УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
| УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
| УстановкаЦенНоменклатуры.Номенклатура.Артикул КАК Артикул,
| NULL КАК Серия,
| УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
| УстановкаЦенНоменклатуры.Цена,
| УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
| УстановкаЦенНоменклатуры.Валюта,
| УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
| УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки
|
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
|
|ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
| и УстановкаЦенНоменклатуры.ТипЦен = &Розничная
|
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
Запрос.УстановитьПараметр("Розничная",ТипЦен);
Jonsony
08.01.2014 11:12Ответ № 17
а в ТипЦен что-то положил? если оно пустое то и результат соответственно
zloy_kot
08.01.2014 11:40Ответ № 18
(17) Jonsony, ТипЦен изначально не должен быть пустой - там 5 цен висит...
Весь вопрос стоит то в том чтобы сделать срез, из пяти оставить 1-2...
Можешь дать ссылку на "нормальные" учебники по программированию 1с?
Изменено 08.01.14 11:48:35
Jonsony
08.01.2014 12:19Ответ № 19
(18) zloy_kot, ну не должен это да, а вот сказать ему что там должно быть ты сказал?



когда ваял обработку - пользовал эту пару
http://its.1c.ru/db/pubdevguide#content:999999:1
http://its.1c.ru/db/pubmanagedui#content:999999:1
zloy_kot
08.01.2014 12:30Ответ № 20
(19) Jonsony, ну я делал все как ты мне говорил)
zloy_kot
08.01.2014 12:40Ответ № 21
Блин у меня нет доступа к ИТС... начальство от него отказалось.
Bell
08.01.2014 21:55Ответ № 22
Попробуй так
|УПОРЯДОЧИТЬ ПО
| УстановкаЦенНоменклатуры.Цена,
И можно это если потребуется
| УстановкаЦенНоменклатуры.ТипЦен,
| УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен

или другой порядок по сортировке ТипЦен, цена и интексстроки...

Картинку выдай с результатом запроса, что для тебя важней ТипЦен или Цена
Изменено 08.01.14 22:01:46
Bell
08.01.2014 21:57Ответ № 23
Можно , результат запросы выгрузить в таблицу значений и отсортировать по столбуц Цена
zloy_kot
09.01.2014 08:55Ответ № 24
(23) Bell, да уже упорядочил по нужной последовательности.. теперь не могу понять как убрать не нужные цены - при этом не удаляя из документа.
Тупо обрезать на печати.
Jonsony
09.01.2014 12:16Ответ № 25
(24) zloy_kot, обрезается по условию, но ты его упорно задавать не хочешь
zloy_kot
10.01.2014 10:09Ответ № 26
(25) Jonsony, я не знаю как это условие прописать *11 *12
Jonsony
10.01.2014 10:14Ответ № 27
(26) zloy_kot, ты его уже прописывал
Код 1C v 8.2 УП
 |ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
| и УстановкаЦенНоменклатуры.ТипЦен = &Розничная
|
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
Запрос.УстановитьПараметр("Розничная",ТипЦен);


только в "ТипЦен" надо поместить то значение по которому отбираешь
проще всего через реквизит на форме
создай на ней реквизит который ссылается на на твои виды цен в ИБ, и по выбранной тебе будет отбиратся
zloy_kot
10.01.2014 10:59Ответ № 28
(27) Jonsony, изначально ТипЦен - таблица скорее всего, в котором содержится 5 цен.
Я бы прописал,без всяких форм, в печатной функции обрезку, если бы знал к каком формате хранится этот ТипЦен.
В общем все сложно и печально *01
Jonsony
10.01.2014 11:50Ответ № 29
(28) zloy_kot, ради любопытства, глянь на регистр, где ты там таблицу ТипЦен видишь?
zloy_kot
10.01.2014 12:14Ответ № 30
title
Jonsony
10.01.2014 12:56Ответ № 31
(30) zloy_kot, ну? посмотри свойства, на что ссылается? на справочник
Jonsony
10.01.2014 13:05Ответ № 32
я тебе про регистр говорил, сведений, ЦеныНоменклатуры
zloy_kot
10.01.2014 14:10Ответ № 33
Регистр сведений.
title
Информация по справочнику
title
zloy_kot
10.01.2014 14:33Ответ № 34
Я имею ввиду что в обработку печати оно уже заходит так табличный элемент - и резать нужно именно таблицу!
zloy_kot
11.01.2014 16:44Ответ № 35
Решил проблему топором ) ) )
Код 1C v 8.х
 
Табдокумент.УдалитьОбласть(ТабДокумент.Область("C8:C11"),ТипСмещенияТабличногоДокумента.ПоВертикали);
Табдокумент.УдалитьОбласть(ТабДокумент.Область("C10:C11"),ТипСмещенияТабличногоДокумента.ПоВертикали);
zloy_kot
11.01.2014 17:25Ответ № 36
Вопрос закрыт!
Jonsony
12.01.2014 14:50Ответ № 37
мда, это даже не топором, у тупой пластиковой трубой
zloy_kot
14.01.2014 09:04Ответ № 38
(37) Jonsony, Пока не пойму как сделать умнее, пусть так останется.
Jonsony
14.01.2014 10:05Ответ № 39
(38) zloy_kot, в ут11 посмотри, там после нажатия "печать" есть ещё промежуточный этап, где выбираешь какие цены печатать и что из них печатать
zloy_kot
14.01.2014 19:05Ответ № 40
(39) Jonsony, спасибо))))
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.