Имя: Пароль:
1C
 
Работа с ТЧ обработки в Управляемых формах
,
0 НоваяВолна
 
31.08.16
19:24
Доброго всем времени суток!
Стоит задача, решение которой только немного продвинет мои навыки программирования в 1С. Задача из 5-ти пунктов.
Требуется:
1. Создать обработку и процедуру заполнения её табличной части.
В табличную часть  заполняются строки указанной длины произвольным набором символов в указанном количестве. Количество строк и длина в символах каждой строки должны задаваться на форме.
2. Подсвечивать строки в заполненной таблице, содержащие указанную в отдельном поле формы комбинацию символов.
3. Создать процедуру обратного отражения порядка строк (сортировки по номеру строки в обратном порядке.
Например номер строки был
1 ae1234
2 bc5678

стал

10000 ae1234
9999 bc5678
4. Создать процедуру обратного отражения символов в каждой строке.
Например строка была
eab790

стала

097bae
5. Создать процедуру поиска дублей по заполненным значениям, с перечислением номеров строк попарно.
При этом номера строк не должны повторяться, например
1023 и 6740
6740 и 1023.


Это про задачу. Теперь вопросы, Пункты 1, 4, 5 я уже реализовал.
Остались два вопроса:
1) (по пункту № 3) Как ТЧ обработки "перевернуть" по номерам в обратном порядке. Понятно, что для данной задачи надо просто Сортировать Таблицу по УБЫВанию или ВОЗРастанию. Непонятно другое. Если я ТЧ выгружаю в ТаблицуЗначений. а ее пытаюсь сортировать как мне надо, то как в ТаблицеЗначений мне поймать в какую сторону (убыв / возр) её сортировать? ... По значению номера первой строки? ...
2) (по пункту № 2) В табличной части надо найти сочетание символов (вводится на форме) и если оно есть подсветить все найденные строки цветом например.... Найти в ТЧ я смогу все строчи совпадения. А вот как их раскрасить цветом ?
1 Cyberhawk
 
31.08.16
19:46
Сколько платят за решение задачи?
2 НоваяВолна
 
31.08.16
20:01
(1) Ответ простой.. платят ноль! Эту задачу на Delphi я решаю за 20 минут... А тут уже два часа зависаю. Пытаюсь поднять свой уровень в 1С. Это самообучение, можно сказать, что задачу я сам себе придумал. Нужна помощь как новичку в 1С.
3 НоваяВолна
 
31.08.16
20:05
(2) + Причем на ОФ в 1С тоже мне было бы просто, проблема именно с УФ... так как слабо понимаю передачу объектов с Клиента на Сервер и обратно..
4 НоваяВолна
 
31.08.16
20:10
(0) Кстати, вопрос к модераторам форума (которые запрещают пользователям редактировать собственные сообщения)... В (0) я написал всё как есть. старался напичсать понятно, ПРОВЕРИЛ перед отправкой на форум.... И вот те на....
Строка "10000 ae1234" выделилась как код (жёлтым), исправить я это не могу. Хотя хотелось бы! дайте хотя бы 2 минуты на исправление собственных сообщений. после отправки!!!
5 Кокос
 
31.08.16
20:15
вообще не вижу проблем в задаче. по 2. юзай условное оформление. 3. 5 секунд
6 Glenas
 
31.08.16
20:15
(4) Считай, что на экзамене, а на черновике нет места
7 НоваяВолна
 
31.08.16
20:22
(6) Это косяк движка форума. Почему он строку определяет как тэг с кодом? ... Нет там кода и тэг я не описывал
8 НоваяВолна
 
31.08.16
20:28
(5) По 2. Хорошо, найду я все строчки в ТЧ обработки, которые идентичны тому что я ищу. Условное оформление (как я понимаю) я могу использовать только ко всей ТЧ. Т.е. предложение по новой пройти все записи ТЧ (а их может быть 10000) и нужные мне две-три пометить нужным цветом выделения?... А как-то сразу при нахождении нужной строки пометить ее не возможно. Чтобы опять в цикл не ударяться?
9 Кокос
 
31.08.16
20:33
(8) не. условное оформление на то оно и условное. оно может применяться к конкретному полю или строке.
10 Garykom
 
гуру
31.08.16
20:37
1) добавь еще одну колонку с "исходными" номерами строк
2) в поиск "1с уф условное оформление"
11 Garykom
 
гуру
31.08.16
20:38
12 НоваяВолна
 
31.08.16
21:12
Беру ТЧ из обработки &НаКлиенте, загоняю её &НаСервер,
далее НаСервере
{code}
        НоваяТЗ = Новый ТаблицаЗначений;
    НоваяТЗ = ТЗ.Выгрузить();
    ЗаполняемыйСписок = НоваяТЗ.Сортировать("НомерСтроки убыв");

{code}

и это работает! Осталось только передать ЗаполняемыйСписок обратно &НаКлиент и там очистить Тч формы, и заполнить его новым ЗаполняемыйСписок ... ВОТ ЭТО У МЕНЯ НЕ ВЫХОДИТ
13 Мимохожий Однако
 
31.08.16
21:14
Делай всё это на сервере
14 НоваяВолна
 
31.08.16
21:17
(13) Но ведь это обработка! Внешняя. Данных из нее на Сервере нет, так как они не записаны в базу... ИЛИ Я ЧТО-ТО НЕ ПОНИМАЮ?
15 НоваяВолна
 
31.08.16
21:22
(14)  Да и ТаблицуЗначений я на Клиенте создать не могу
Кто вообще это всё придумал?
16 НоваяВолна
 
31.08.16
21:35
{code}
&НаСервере
Процедура ОбратноеОтображениеПорядкаСтрокНаСервере()
    ТЗ = Объект.Таб;
    Если ТЗ.Количество() = 0 Тогда
        Возврат;
    Иначе
        НоваяТЗ = Новый ТаблицаЗначений;
        НоваяТЗ = ТЗ.Выгрузить();
        ЗаполняемыйСписок =     НоваяТЗ.Сортировать("НомерСтроки Убыв");
    КонецЕсли;
    ТЗ.Очистить();
           ......
            ...... // не дописана вставка
КонецПроцедуры

{code/}

Выдаёт ошибку:
{Обработка.СлучайныеСимволы.Форма.Форма.Форма(103)}: Обращение к процедуре объекта как к функции (Сортировать)
        ЗаполняемыйСписок = НоваяТЗ.Сортировать("НомерСтроки Убыв");

... В чем дело? ..куда теперь копать? (13)
17 Garykom
 
гуру
31.08.16
21:37
(16) "Объект.Таб" это у тя шо?
18 Garykom
 
гуру
31.08.16
21:41
19 НоваяВолна
 
31.08.16
21:43
(17) Таб - это ТЧ на форме обработки
...
там ещё одна процедура к команде привязана
{code}
&НаКлиенте
Процедура ОбратноеОтображениеПорядкаСтрок(Команда)
    ОбратноеОтображениеПорядкаСтрокНаСервере();
КонецПроцедуры

{code/}
20 Garykom
 
гуру
31.08.16
21:44
ТС пойми что когда пишешь на УФ то это как с дельфи перейти на html/css/php/js и думать типа за 20 минут сделаю.

Задачки типа (0) решаются все за 5-10 минут, если вычесть время на понимание и обдумывание. Проф это обзывают "написать ТЗ" ))
21 Garykom
 
гуру
31.08.16
21:44
(19)

Обработка = РеквизитФормыВЗначение("Объект");
НоваяТЗ = Обработка.Таб.Выгрузить();
22 НоваяВолна
 
31.08.16
21:46
(20) Это я понимаю, поэтому и прошу ткнуть меня носом в обучалку, или тупо помочь... синтаксисом...
23 Мимохожий Однако
 
31.08.16
21:47
Почитай Радченко
24 НоваяВолна
 
31.08.16
21:50
(21)

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

&НаКлиенте
Процедура ОбратноеОтображениеПорядкаСтрок(Команда)
    ОбратноеОтображениеПорядкаСтрокНаСервере();
КонецПроцедуры



Та же ошибка
25 Garykom
 
гуру
31.08.16
21:50
извини но кто то тупит... убери НоваяТЗ = ТЗ.Выгрузить();
26 Garykom
 
гуру
31.08.16
21:51
Процедура ОбратноеОтображениеПорядкаСтрокНаСервере()
    Обработка = РеквизитФормыВЗначение("Объект");

    Если Обработка.Таб.Количество() = 0 Тогда
        Возврат;
    Иначе
        НоваяТЗ = Обработка.Таб.Выгрузить();
        ЗаполняемыйСписок = НоваяТЗ.Сортировать("НомерСтроки Убыв");
    КонецЕсли;
    Обработка.Таб.Очистить();
КонецПроцедуры
27 НоваяВолна
 
31.08.16
21:56
(26) Убрал свою процедуру полностью ЗАМЕНИЛ НА (26)...
результат ОШИБКА:
{Обработка.СлучайныеСимволы.Форма.Форма.Форма(113)}: Обращение к процедуре объекта как к функции (Сортировать)
        ЗаполняемыйСписок = НоваяТЗ.Сортировать("НомерСтроки Убыв");

НИЧЕГО НЕ ИЗМЕНИЛОСЬ
28 Неверный Параметр И
 
31.08.16
21:57
(27) http://v8.1c.ru/metod/books/book.jsp?id=441
Я настаиваю.
29 Garykom
 
гуру
31.08.16
21:59
(27) У тебя было куча ошибок, парочку исправил думаешь что то поменялось?

"Сортировать" это процедура... а не функция
30 Garykom
 
гуру
31.08.16
22:00
Точно "новая волна"... хотя не не так... "НоВаЯ ВоЛнА!!!!!"
31 НоваяВолна
 
31.08.16
22:14
(30) Хорошо.. объясни мне вот эти две строчки кода

НоваяТЗ = Обработка.Таб.Выгрузить();
        ЗаполняемыйСписок = НоваяТЗ.Сортировать("НомерСтроки Убыв");

НоваяТЗ имеет Тип ТаблицаЗначений, в нее попадает вся ТЧ из обработки (проверил по "Вычислить Значение". и это правильно)
.... КАК Я МОГУ ТАБЛИЦУЗНАЧЕНИЙ сортировать по убыванию? ... Вот в чём я не прав?
32 НоваяВолна
 
31.08.16
22:17
(30) Кстати я не спорю... что я НоВаЯ ВоЛнА! ... Я не стесняюсь того, что много не знаю в 1С, но думаю именно для этого форум и создан, чтобы СПРАШИВАТЬ ...
33 НоваяВолна
 
31.08.16
22:22
(28) Радченко - это хорошо, спасибо, почитаю обязательно. Но объясните мне зачем я 30 часов видео уроков GROOVY смотрел по управляемым формам? На обычных формах я бы эту задачу тоже просто решил... А тут УФ и не у кого адекватного ответа на простой вопрос нет.
34 НоваяВолна
 
31.08.16
22:30
фуууууууууу СПАСИБО всем ... догадался!!!!
35 НоваяВолна
 
31.08.16
22:35
&НаСервере
Процедура ОбратноеОтображениеПорядкаСтрокНаСервере()
    
Обработка = РеквизитФормыВЗначение("Объект.Таб");

    Если Обработка.Количество() = 0 Тогда
        Возврат;
    Иначе
        НоваяТЗ = Обработка.Выгрузить();
        НоваяТЗ.Сортировать("НомерСтроки Убыв");
    КонецЕсли;
    Обработка.Очистить();
    Обработка.Загрузить(НоваяТЗ);
КонецПроцедуры

Вот так сработало всё что я хотел.... Вот я тупил то!!!!
Это не Функция.. а процедура ))))
ЕЩЁ РАЗ СПАСИБО ВСЕМ!
36 hhhh
 
31.08.16
22:45
(35) ну, хорошо, а то мы даже подумали, что дельфи не умеет таблицы сортировать. Сортирует только вместе с копированием.
37 НоваяВолна
 
01.09.16
00:15
(36) А проблема была не в Делфи. и даже не в 1С. А с моим непониманием директив управляемых форм 1С. Их всего то несколько:
&НаКлиенте
&НаСервере
&НаСервереБезКонтекста
&НаКлиентеНаСервереБезКонтекста

Надо будет мне про это почитать повнимательнее. чтобы таких косяков не было )))
38 НоваяВолна
 
01.09.16
02:25
&НаКлиенте
Процедура ПоискСтроки(Команда)
    Если Объект.ПоискСоответствия = Неопределено ИЛИ Объект.ПоискСоответствия = "" Тогда
        Возврат;
    КонецЕсли;
    Для каждого Стр Из Объект.Таб Цикл
        Если Стр.Символ = Объект.ПоискСоответствия Тогда
            Сообщить("Значение найдено в строке № " + Стр.НомерСтроки);
            // В Этом месте я нашел нужную мне строку (или строки) ТЧ внешней обработки
            // Объект.Таб - это и есть ТЧ обработки
            // КАК МНЕ ДЛЯ НАЙДЕНОЙ СТРОКИ ПРИСВОИТЬ УСЛОВНОЕ ОФОРМЛЕНИЕ ЦВЕТОМ?
            // ПОМОГИТЕ СИНТАКСИСОМ !!!
            
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
39 Горогуля
 
01.09.16
03:12
>КАК МНЕ ДЛЯ НАЙДЕНОЙ СТРОКИ ПРИСВОИТЬ УСЛОВНОЕ ОФОРМЛЕНИЕ ЦВЕТОМ?
в свойствах формы
>ПОМОГИТЕ СИНТАКСИСОМ !!!
можно и без него
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.