Имя: Пароль:
1C
1С v8
Выводить каждую букву в отдельную клетку
, ,
0 ks-815
 
01.10.12
15:13
Подскажите как вывести название фирмы, чтобы каждая буква была в отдельной клетке, всего клеток 40 в строке, если наименование не входит,то должно перенестись на другую строчку??

Для н=1   По 40  Цикл
Наименование = Выборка.НаименованиеФирмы +" ";    
Область.Параметры.Буква  = Прав(Лев(Наименование,н),1);
ТабДокумент.Присоединить(Область);
КонецЦикла;
1 butterbean
 
01.10.12
15:17
открой для себя функцию Сред()
2 Deon
 
01.10.12
15:17
Это откуда такое? Прав(Лев(Наименование,н),1) ?
3 vicof
 
01.10.12
15:17
Без фото не взлетит
4 Deon
 
01.10.12
15:18
(0) Тем не менее, эта конструкция должна работать. В чём трудность-то, оно ж работает
5 Deon
 
01.10.12
15:19
(0) Или вся проблема в переносе на новую строку?
6 ks-815
 
01.10.12
15:20
Нужно, чтобы огромное наименование переносило на другую сточку, и чтоб целыми словами переносило.
7 Фокусник
 
01.10.12
15:21
(0) Для 41 по 80...
8 Фокусник
 
01.10.12
15:22
(6) целые слова уже сложнее
9 ks-815
 
01.10.12
15:22
(7) а дальше?
10 Deon
 
01.10.12
15:23
Как вариант, можно разбить строку с наименованием на массив отдельных слов. Потом цикл по словам с
проверкой, влезет ли в оставшиееся место в текущей строке, если не влезет, то вывод новой секции, если влезет, то цикл по символам слова с присоединением.
11 ks-815
 
01.10.12
15:24
(10) а как эту мысль кодом выразить? :)
12 butterbean
 
01.10.12
15:27
че-то проблем не видно — один бесконечный цикл, а внутри цикл от 1 до 40, ну и прервать когда строка кончится
13 ks-815
 
01.10.12
15:28
(12)надо ещё,чтобы слово целое было, если не входит слово,то пробелы вместо него вставить!
14 Deon
 
01.10.12
15:29
(11) Давай по-порядку, сначала сделай из своей длинной строки массив с отдельными словами.
15 butterbean
 
01.10.12
15:30
(13) ну тады как в (10), делается при помощи СтрЗаменить(ТвояСтрока,Символы.ПС)
16 Фокусник
 
01.10.12
15:30
(13) это ТЗ? :)

PS еще забыла в конце: "Фигово понял что-ли??!!!" ;)
17 Deon
 
01.10.12
15:30
Хотя, можно и без массива, но с массивом как-то красивее, по-моему
18 Deon
 
01.10.12
15:34
(15) А это чтобы заменить пробелы на ПС и потом бежать по строкам многострочной строки?
19 Jofa
 
01.10.12
15:34
Без ФОтки не взлетит!!
20 Ахиллес
 
01.10.12
15:34
(13) Никто не хочет работать забесплатно. Подсказать, направить в нужном направлении это пожалуйста, но не делать всю работу за тебя.
21 Deon
 
01.10.12
15:34
"строка многострочной строки" жесть
22 Starhan
 
01.10.12
15:36
(15)(18) можно сразу с пробелами. Если не считать что надпись типа ООО "Вектор" должна быть в одну строку.
23 ks-815
 
01.10.12
15:38
(19) я большой бородатый мужик. Помогай мне, не глядя на меня.
24 Deon
 
01.10.12
15:38
(22) Ну, в принципе, для кажной новой 40-символьной строки можно искать последний пробел и выводить нужное количество символов
25 Deon
 
01.10.12
15:39
(23) А где волшебное слово?
26 ks-815
 
01.10.12
15:39
Кстати, ещё нужно, чтобы 4 строки вывелись, даже если пустые. Нужно 4 области делать или как-то одной можно обойтись?
27 Mikeware
 
01.10.12
15:39
Все проще.
Нужно просто позвать программиста...
28 VasjaIvanov
 
01.10.12
15:40
строка = Организация
сч = 0
Пока стрДлинна(строка) > 0  Цикл
сч = сч+1;
Область.Параметры.Буква  = Лев(строка,1);
строка = Прав(строка, стрДлинна(строка)-1);
Если сч < 40 Тогда
ТабДокумент.Присоединить(Область);
Иначе
ТабДокумент.Вывести(Область);
конецесли
конеццикла

/// Типа того
29 Deon
 
01.10.12
15:40
Когда ж вы уже перестанете переменные зарезервированными словами обзывать
30 Jofa
 
01.10.12
15:40
(23)Ты фотку выложь тебе помогут ..) Без фотки Не взлетит!
31 VasjaIvanov
 
01.10.12
15:40
не важно это, главное концепция
32 VasjaIvanov
 
01.10.12
15:41
строка на "строчка" переименвать
33 DrShad
 
01.10.12
15:41
(28) ты не в теме, да и весь твой код в топку
34 Starhan
 
01.10.12
15:41
(0)Наверное необоходимо печатать текст на чековой ленте?
35 VasjaIvanov
 
01.10.12
15:41
(28) свой напиши
36 Deon
 
01.10.12
15:43
(35) Ну код же и правда ужасный. Сам алгоритм нерабочий. Хотя суть, конечно, в этом
37 hhhh
 
01.10.12
15:43
(35) так он ведь и написал.
38 Deon
 
01.10.12
15:45
(0) Белочка, вероятно, у тебя уже есть какие-нибудь более продвинутые, чем в (0) наработки?
39 VasjaIvanov
 
01.10.12
15:45
(36)это была суть, а не мега рабочий код, конечно надо добавить еще условий.
(37)хде???
40 hhhh
 
01.10.12
15:47
(39) ну (28) написал код, а вы его обругали.
41 Deon
 
01.10.12
15:48
(40) У (28) и (35) автор один и тот же )
42 DrShad
 
01.10.12
15:49
(41) ну так с умным то человеком всегда приятно
43 ks-815
 
01.10.12
15:49
А подскажите,плиз, про моё (26)-ое сообщение..
44 DrShad
 
01.10.12
15:50
(43) да, можно одной
45 VasjaIvanov
 
01.10.12
15:50
(44)доставточно одной
46 hhhh
 
01.10.12
15:51
(43) ну скопируйте из типовой, там ведь миллион примеров, в каждом регламентированном отчете, чего вы нас грузите?
47 VasjaIvanov
 
01.10.12
15:51
4 раза повторить , или область из 4 строчек состоять будет
48 Deon
 
01.10.12
15:51
(46) При неумении написать код в (0) разораться в механизмах регл.отчетов будет, мне кажется, непросто
49 hhhh
 
01.10.12
15:54
(48) и чего, если не умеет, сейчас другие блоки начнет мастерить, она значит БП 4.0 сваяет к Новому году?
50 Deon
 
01.10.12
15:55
А учитывая (26), можно сделать 1 цикл с 1 до 160 и получение выводимого символа выбросить в функцию )
51 Deon
 
01.10.12
15:55
(49) А вдруг ) Незамутненный разум способен на многое )
52 Фокусник
 
01.10.12
16:11
(23) Не похожа ты на бородатого толстого мужика: в базе мисты есть твоё фото http://www.forum.mista.ru/users_photo/thumb/63749_thumb.jpg ;)
53 ks-815
 
01.10.12
16:13
(52)Теперь тебе придётся написать хотя бы схематично цикл как сказали в (10) :)
54 Фокусник
 
01.10.12
17:07
(53) На, держи:


Функция вПолучитьБукву(стрНаименование, счКолонки, чВсегоКолонок)
   
   //строка закончилась
   Если СтрДлина(стрНаименование) = 0 Тогда
       Возврат "";
   КонецЕсли;
   
   Если счКолонки = 1 Тогда
       //первый пробел обрежем
       стрНаименование = СокрЛП(стрНаименование);
   КонецЕсли;
   
   чОсталосьСвободныхПолейНаСтроке = чВсегоКолонок - (счКолонки - 1);
   Если СтрДлина(стрНаименование) > чОсталосьСвободныхПолейНаСтроке Тогда
       флНужноДобавитьПробел = ИСТИНА;
       
       Для сч = 1 по чОсталосьСвободныхПолейНаСтроке + 1 Цикл
           Если Сред(стрНаименование, сч, 1) = " " Тогда
               флНужноДобавитьПробел = ЛОЖЬ;
               Прервать;
           КонецЕсли;
       КонецЦикла;
       
       Если флНужноДобавитьПробел Тогда
           Возврат "";
       КонецЕсли;
       
   КонецЕсли;
   
   //вернем первую букву
   стрБуква = Лев(стрНаименование, 1);
   
   //обрежем строку
   стрНаименование = Сред(стрНаименование, 2);
   
   Возврат стрБуква;
   
КонецФункции //вПолучитьБукву

Процедура КнопкаСформироватьНажатие(Кнопка)
   
   стрНаименование = ПолеВвода1;
   
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   Область = Макет.ПолучитьОбласть("Строка|Колонка");
   
   стрНаименование = стрЗаменить(стрНаименование, "  ", " ");
   
   чВсегоСтрок = 4;
   чВсегоКолонок = 40;
   
   Для счСтроки = 1 по чВсегоСтрок Цикл
       
       Для счКолонки = 1 по чВсегоКолонок Цикл
           
           Область.Параметры.Буква = вПолучитьБукву(стрНаименование, счКолонки, чВсегоКолонок);
           
           Если счКолонки = 1 Тогда
               ТабДокумент.Вывести(Область);
           Иначе
               ТабДокумент.Присоединить(Область);
           КонецЕсли;
           
       КонецЦикла;
       
   КонецЦикла;
   
   ТабДокумент.Показать();
   
КонецПроцедуры
55 ks-815
 
01.10.12
17:08
(54)Спасибоньки, ща погляжу :)
56 Deon
 
01.10.12
17:11
Фокусник - настоящий мужик.
Сам нашел фотку, сам всё сделал.
Уважаю
57 ks-815
 
01.10.12
17:12
(54) О ДААААААААААА!! именно так!!!!!!! божешки!! как я радо!! :)
58 Deon
 
01.10.12
17:14
(57) Так у тебя борода никогда не вырастет. Пора уже самой разбираться )
59 Фокусник
 
01.10.12
17:15
(56) Фигли ее искать, она сразу скриптом отображается :)
60 Deon
 
01.10.12
17:16
(59) Ну это ж думать надо... Слово неведомое 1С-нику - "скрипт"...
61 Фокусник
 
01.10.12
17:19
(60) Сто лет назад прицепил (Asmody вроде его выкладывал) удобно, рядом с ником сразу фотки :)
62 Deon
 
01.10.12
17:20
(61) Поделишься?
63 Фокусник
 
01.10.12
17:22
64 ks-815
 
01.10.12
17:23
(58) я разложила строку на слова и они у меня в одну строчку без пробелов пока выводились.. медленно конечно думается, в отличие от бородатых суровых людей :)
65 Deon
 
01.10.12
17:24
(63) А куда его теперь подпихнуть?
66 Deon
 
01.10.12
17:24
(64) Ну все равно, уже молодец
67 DrShad
 
01.10.12
17:26
(65) +1
68 ks-815
 
01.10.12
17:26
(65) хочешь бородатые фотографии разглядывать??
69 Deon
 
01.10.12
17:27
(68) На тебя любоваться буду
70 Фокусник
 
01.10.12
17:30
(65), (67) в личной карточке: Персональный JavaScript
71 DrShad
 
01.10.12
17:31
(70) круто! огромный сенкс
72 Deon
 
01.10.12
17:32
(69) О, спасибо )
73 Deon
 
01.10.12
17:32
72 к 70
74 Фокусник
 
01.10.12
17:36
(71), (73) Asmody пошутил: у кого фото нет - http://www.forum.mista.ru/users_photo/thumb/79214_thumb.jpg :)

Вы главное потом в пятничные ветки при посторонних глазах не заходите ;)
75 Deon
 
01.10.12
17:37
Я так вижу там ещё много всякого хитрого функционала
76 mikecool
 
01.10.12
17:37
аааа, белочка пришла!!!!
зы: сорри, испужался )))
77 DrShad
 
01.10.12
17:37
(74) у нас за это не ругают :))
78 mikecool
 
01.10.12
17:38
+76 ничо так белочка
79 Mikeware
 
01.10.12
17:41
(76) Ты про (52) или про (74)?
80 Deon
 
01.10.12
17:42
(78) Поддерживаю
81 villiss
 
01.10.12
17:46
(70) Класс!!! Спасибо
82 Mikeware
 
01.10.12
17:49
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс