![]() |
![]() |
![]() |
|
Журнал учета полученных, выставленных сф для БГУ ред.1 | ☑ | ||
---|---|---|---|---|
0
altaykniga
29.03.15
✎
13:27
|
Доброго времени суток, товарищи умные!
Бухи требуют, чтобы в журнале учета полученных, выставленных сф шла сортировка по номерам с/ф, и их не волнует, что в тип номера - текстовый... Т.е. сейчас получается 1,10,2,3,30,4... а надо сделать 1,2,3.4...10,11...30,31... Можно ли как-нибудь этого добиться в СКД (отчет на ней написан)? |
|||
1
Тоныч
29.03.15
✎
14:04
|
А если там буквы в номере сф будут? куда их засовывать? Вот реальный номер сф полученного из базы БГУ FOSS-10402-000008152. И таких там в этой базе полно.
|
|||
2
altaykniga
29.03.15
✎
14:13
|
(1) Данную числовую сортировку делал в отчете КнигаПродаж. Там нет СКД, просто брал полученную ТЗ перед выводом в ТабличныйДокумент, добавлял новую колонку "ЧисловойНомер", и присваивал значению этой колонки через попытку Число(Номер). Вот такой код:
Функция СортироватьПоНомеру(ТЗ) ТЗ.Колонки.Добавить("ЧисловойНомер"); Для Каждого Стр Из ТЗ Цикл ЧислоИзНомера=""; Если ЗначениеЗаполнено(Стр.СчетФактура) Тогда ДлинаСтроки = СтрДлина(Стр.ПНомер); Пока ДлинаСтроки <> 0 Цикл Попытка ЧислоИзНомера=Число(Лев(Стр.ПНомер, ДлинаСтроки)); прервать; Исключение Сообщить(СокрЛП(Стр.СчетФактура)+"--удаление текстовых значений из числа номера"); ДлинаСтроки = ДлинаСтроки-1; КонецПопытки КонецЦикла; Стр.ЧисловойНомер = ЧислоИзНомера; Иначе Стр.ЧисловойНомер = 0; КонецЕсли; КонецЦикла; ТЗ.Сортировать("ЧисловойНомер, пДата"); Возврат ТЗ; КонецФункции Но в СКД данную функцию же никак не применишь. |
|||
3
altaykniga
29.03.15
✎
14:16
|
(2) как добиться такого приведения текста к числу в ТекстеЗапроса? Думаю, что никак. Какие варианты остаются? Перехватывать данные СКД до вывода в ТабДок, обрабатывать их программно, а затем опять запихивать в СКД?
|
|||
4
Тоныч
29.03.15
✎
14:19
|
(2) Т.е. если к моему примеру возвращаться, то они хотят чтобы в журнале сф вместо FOSS-10402-000008152 было 10402000008152? и их ниразу не смущает, что номер на сф и номер в журнале будут разные?
|
|||
5
altaykniga
29.03.15
✎
14:30
|
(4) номера разные не будут. Я же создаю новую колонку в ТЗ, худо-бедно привожу номер СФ к числу и записываю этот приведенный к числу номер в новую колонку... По этой колонке просто потом делаю сортировку, а все данные в ТабДок берутся из стандартных полей ТЗ. Тем более, что максимум, какие у бухов бывают номера текстовые - "162/1", "162 / 1", "162/1/1", "162 /1 /1" и т.д. Т.е. мне достаточно указывать, что номер для упорядочивания будет равен 162
|
|||
6
timurhv
01.04.15
✎
13:22
|
СКД позволяет выполнять функции общего модуля.
Вам необходимо в запросе вытащить номера с/ф: ЖурналУчетаСчетовФактур.НомерСчетаФактуры КАК НомерСчетаФактуры, "" КАК СортировкаНомерСчетаФактуры, Далее на закладке "Вычисляемые поля" указать: Путь к данным - СортировкаНомерСчетаФактуры Выражение: <Название общего модуля>.ПривестиСтрокуКЧислу(НомерСчетаФактуры) Функция общего модуля выглядит так: Функция ПривестиСтрокуКЧислу(ЧислоСтрокой) Экспорт ЗначениеЧисла = 0; ДлинаСтрок = СтрДлина(ЧислоСтрокой); ЧислоБезМусора = ""; Если ДлинаСтрок > 0 Тогда Для Инд = 0 По ДлинаСтрок-1 Цикл ТекСимвол = Сред(ЧислоСтрокой, Инд+1, 1); Если ТекСимвол = "0" ИЛИ ТекСимвол = "1" ИЛИ ТекСимвол = "2" ИЛИ ТекСимвол = "3" ИЛИ ТекСимвол = "4" ИЛИ ТекСимвол = "5" ИЛИ ТекСимвол = "6" ИЛИ ТекСимвол = "7" ИЛИ ТекСимвол = "8" ИЛИ ТекСимвол = "9" Тогда ЧислоБезМусора = ЧислоБезМусора + ТекСимвол; КонецЕсли; КонецЦикла; Попытка ЗначениеЧисла = Число(ЧислоБезМусора); Исключение КонецПопытки; КонецЕсли; Возврат ЗначениеЧисла; КонецФункции Далее - настроить на закладке "Настройки" сортировку. |
|||
7
timurhv
01.04.15
✎
13:22
|
+ (6) Функция не моя - не пинать :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |