Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
25 Июн 2018, 16:40
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Создание списка из строки  (Прочитано 2550 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Всем привет.
Есть форма с полем текстового документа. При нажатии на одну кнопку, она заполняется текстовой строкой с тестовым набором символов, разделённых пробелами (пример в коде). При нажатии на вторую кнопку, эта строка разбивается на несколько строк (пробел заменяется на перенос строки). Возможно ли эти строки превратить в список с возможностью выбрать в нём отдельную строку? Если да, то нужен совет каким образом это можно реализовать.

Допустим, поле текстового документа заполняется следующим образом:
&НаКлиенте
Процедура ЗаполнениеПоля(Команда)
Объект.Поле = "1234 2345 3456 4567 5678 6789 7890";
КонецПроцедуры
Затем я разбиваю полученный результат:
&НаКлиенте
Функция РазбитьСтроку(ИсходнаяСтрока,Разделитель)
Результат=СтрЗаменить(Объект.Поле," ",Символы.ПС);
Объект.Поле=Результат;
КонецФункции
То есть, по нажатию на одну кнопку я получил строку типа "1234 2345 3456 4567 5678 6789 7890", а по нажатию на вторую у меня выходит следующее:
1234
2345
3456
4567
5678
6789
7890
Ещё раз вопрос, можно ли мне превратить конечный результат в список, который будет выведен на форму в виде тумблера с возможностью выбрать только "1234", или "2345" и так далее? Версия платформы -- 8.3
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1311
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Если пробел разделитель, то можно как-то так
Результат = СокрЛП(Объект.Реквизит1);
СЗ = Новый СписокЗначений;
Пока СтрДлина(Результат) > 0 Цикл
ПозицияПервогоПробела = Найти(Результат, " ");
Если ПозицияПервогоПробела > 0 Тогда
ЭлементСписка = СокрЛП(Лев(Результат, ПозицияПервогоПробела - 1));
Результат = Прав(Результат, СтрДлина(Результат) - ПозицияПервогоПробела);
Иначе
ЭлементСписка = Результат;
Результат = "";
КонецЕсли;
СЗ.Добавить(ЭлементСписка);
КонецЦикла;


Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
...можно как-то так...
Спасибо, сейчас попробую.
Добавлено: 05 Фев 2015, 09:04

has, не знаю насколько правильно я уловил мысль, но сделал следующее: в форме объекта создал новый реквизит СписокЗначений с типом СписокЗначений (помаслил масло), затем вставил в модуль формы предложенный код и немного изменил его.
&НаКлиенте
Функция ПрисвоитьЗначениеПеречислений()
    Результат = СокрЛП(Объект.Метки);
    СЗ = Новый СписокЗначений();
    Пока СтрДлина(Результат) > 0 Цикл
        ПозицияПервогоПробела = Найти(Результат, " ");
        Если ПозицияПервогоПробела > 0 Тогда
            ЭлементСписка = СокрЛП(Лев(Результат, ПозицияПервогоПробела - 1));
            Результат = Прав(Результат, СтрДлина(Результат) - ПозицияПервогоПробела);
        Иначе
            ЭлементСписка = Результат;
            Результат = "";
        КонецЕсли;
        СЗ.Добавить(ЭлементСписка);
    КонецЦикла;
    Объект.Метки = СЗ; //убедиться в работе кода
    Объект.СписокЗначений.ЗагрузитьЗначения(СЗ);
КонецФункции
   
После этого поле текстового документа принимает значение "1234; 2345; 3456; 4567; 5678; 6789; 7890", то есть код работает, однако при попытке присвоить реквизиту СписокЗначений эти же параметры, появляется ошибка
{Обработка.РаботаСМетками.Форма.Форма.Форма(28)}: Ошибка при вызове метода контекста (ЗагрузитьЗначения)
Объект.ДоступныеМетки.ЗагрузитьЗначения(СЗ);
по причине:
Несоответствие типов (параметр номер '1')
Где я ошибся?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Последний раз редактировалось: Golickoff; 05 Фев 2015, 09:04. Причина: Объединение сообщений

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1311
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Перетащить реквизит формы СписокЗначений на саму форму в виде поля, указать у поля КнопкаСпискаВыбора. И тогда так
&НаКлиенте
Функция ПрисвоитьЗначениеПеречислений()
    Результат = СокрЛП(Объект.Метки);
    Пока СтрДлина(Результат) > 0 Цикл
        ПозицияПервогоПробела = Найти(Результат, " ");
        Если ПозицияПервогоПробела > 0 Тогда
            ЭлементСписка = СокрЛП(Лев(Результат, ПозицияПервогоПробела - 1));
            Результат = Прав(Результат, СтрДлина(Результат) - ПозицияПервогоПробела);
        Иначе
            ЭлементСписка = Результат;
            Результат = "";
        КонецЕсли;
        Элементы.СписокЗначений.СписокВыбора.Добавить(ЭлементСписка);
    КонецЦикла;
КонецФункции

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
И тогда так...
Всё сделал по инструкции, код не менял, никаких ошибок не возникло, но список значений остался пустым :dfbsdfbsdf:
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1311
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
У поля, где должен быть список, надо еще указать выводить Кнопку списка выбора в свойствах.

Вот у меня простая форма обработки.

вот свойства Поля СписокДанных

Вот код комады по нажатию на кнопку Кнопка

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

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Я создал реквизит у обработки, а не у формы. Судя по тому, что всё заработало после смены расположения реквизита, дело было в нём. Большое спасибо.

P.S. Тут возникла новая проблема: я только зарегистрировался на этом форуме и не могу найти где можно закрыть тему.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


Теги: Список строка 8.3 
 

Программное создание документа на основании документа

Автор GolickoffРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 5592
Последний ответ 23 Апр 2015, 08:45
от Golickoff
Автоматическое создание " Заполнение" документа

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 5010
Последний ответ 06 Мар 2014, 14:48
от mashencev_anton
Создание отчета "Отсутствие заказов"

Автор dronspartak9@gmail.comРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4262
Последний ответ 16 Апр 2014, 15:09
от dronspartak9@gmail.com
Создание заказаов на производство на основании заказа на производство.

Автор Елена1986Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 20
Просмотров: 8925
Последний ответ 09 Сен 2015, 13:01
от Елена1986
Создание плана закупок с использованием плана продаж

Автор NataVlРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1405
Последний ответ 26 Сен 2016, 16:25
от NataVl

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

AIFrame AIFrame
126 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
118 Сообщений
alexandr_ll
65 Сообщений
pavl_vs
40 Сообщений
alex0402
28 Сообщений
buketov.av buketov.av
24 Сообщений
magnifico61
21 Сообщений
wise wise
16 Сообщений
ilyay ilyay
15 Сообщений
mixei
14 Сообщений

* Кто онлайн

  • Точка Гостей: 697
  • Точка Скрытых: 0
  • Точка Пользователей: 17
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal