Строка с разделителями. Как получить отдельное значение в строке, которое разделено ";"

1. Stanislav1993 13.08.18 18:44 Сейчас в теме
Здравствуйте Коллеги. Уже третья тема на форуме.
Вопрос следующий.
Кто может подсказать по поводу массива подстрок?
По теме из базы знаний
Найденные решения
16. M61 20 13.08.18 19:50 Сейчас в теме
В итоге получаем следующее:
Для каждого Стр Из Объект.Товары Цикл
Если Найти(Стр.Штрихкод, ":") > 0 Тогда
   МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр.Штрихкод, ":"); 
   Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
       Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
       Штрихкод.Оприходован= Истина; 
       Штрихкод.Записать();
   КонецЦикла;
Иначе 
   Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(Стр.Штрихкод).ПолучитьОбъект();
   Штрихкод.Оприходован= Истина; 
   Штрихкод.Записать();
КонецЕсли;
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DarkUser 13.08.18 18:48 Сейчас в теме
Конкретизируйте вопрос пожалуйста, Архитектор 1С :)
5. Stanislav1993 13.08.18 19:09 Сейчас в теме
(2) Не правильно охарактеризовал тему))
(2)
3. M61 20 13.08.18 18:52 Сейчас в теме
Не совсем понятен вопрос. Если исходить из названия темы, то делаем запрос ссылок элементов справочника. Потом в цикле
ЭлементСправочника= СсылкаНаЭлемент.ПолучитьОбъект();
ЭлементСправочника.Галочка = Истина; 
ЭлементСправочника.Записать();
4. Sashares 34 13.08.18 18:54 Сейчас в теме
Угу, заинтриговал и в кусты))
6. Stanislav1993 13.08.18 19:09 Сейчас в теме
7. M61 20 13.08.18 19:18 Сейчас в теме
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, разделитель)

Описание:
// Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину.
// В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы,
// рекомендуется использовать функцию платформы СтрРазделить.
//
// Параметры:
//  Значение               - Строка - текст с разделителями;
//  Разделитель            - Строка - разделитель строк текста, минимум 1 символ;
//  ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
//    Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
//     - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
//       включаются в результат.
//     - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
//       случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
//       при других разделителях результатом функции будет пустой массив.
//  СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок.
//
// Возвращаемое значение:
//  Массив - массив строк.
//
// Пример:
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",")
//  - возвратит массив из 5 элементов, три из которых  - пустые: "", "один", "", "два", "";
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина)
//  - возвратит массив из двух элементов: "один", "два";
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(" один   два  ", " ")
//  - возвратит массив из двух элементов: "один", "два";
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("")
//  - возвратит пустой массив;
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("",,Ложь)
//  - возвратит массив с одним элементом: ""(пустая строка);
//  СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("", " ")
//  - возвратит массив с одним элементом: "" (пустая строка).
//
Показать
9. Stanislav1993 13.08.18 19:25 Сейчас в теме
(7)Есть документ "ТоварПоступление", в нем имеется кнопка "Загрузить данные с экзеля",
Кнопка считывает штрихкода с файла и вставляет в табличную часть.
Ниже хочу привести пример в виде скриншота.
Как видите для одной позиции имеется два штрих-кода.
Мне нужно получить каждый отдельно,и чтобы после проведения документа, проставлялось значение "Истина" в справочнике "Штрих-коды ковров" как оприходован.
Прикрепленные файлы:
8. M61 20 13.08.18 19:21 Сейчас в теме
Это в обратную сторону. А добавлять разделитель "Строка1" + ";" + "Строка2" + ";" +...+"Строкаn" + ";". До сих пор не понятна конкретная задача
10. M61 20 13.08.18 19:28 Сейчас в теме
В файле эти штрихкоды в таком виде как в примере или отдельными строками?
11. Stanislav1993 13.08.18 19:30 Сейчас в теме
(10)по отдельности в вертикальном положении
14. Stanislav1993 13.08.18 19:39 Сейчас в теме
У меня проблема сейчас такова.
Что я недавно восстановил данные склада одной организации.
То есть эти штрихкоды сохранены в справочнике,но не отмечены как "оприходован" в справочнике(ниже прикрепил скрин). Я хочу понять как мне сделать так, чтобы при проведение каждый штрих код данной склада, проставилась галочка "Оприходован". Из-за отсутствия "галочки", не получается реализовать товар.
Прикрепленные файлы:
12. M61 20 13.08.18 19:33 Сейчас в теме
Еще уточняющий вопрос. Вы хотите загрузить шрихкоды в строку ТЧ или по штрихкодам из строки ТЧ найти элемент в справочнике и проставить галочку?
13. M61 20 13.08.18 19:39 Сейчас в теме
Для варианта "по штрихкодам из строки ТЧ найти элемент в справочнике и проставить галочку"

МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ":");

Потом запрос в справочник "Штрих-коды ковров" в параметр запроса Запрос.УстановитьПараметр("Штрихкод", МассивШтрихкодов);

Потом цикл по выборке:
Пока Выборка.Следующий() Цикл
ЭлементСправочника= СсылкаНаЭлемент.ПолучитьОбъект();
ЭлементСправочника.Оприходован= Истина; 
ЭлементСправочника.Записать();
КонецЦикла;
15. M61 20 13.08.18 19:44 Сейчас в теме
Или без запроса после получения массива штрихкодов
Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
Штрихкод.Оприходован= Истина; 
Штрихкод.Записать();
КонецЦикла;
16. M61 20 13.08.18 19:50 Сейчас в теме
В итоге получаем следующее:
Для каждого Стр Из Объект.Товары Цикл
Если Найти(Стр.Штрихкод, ":") > 0 Тогда
   МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр.Штрихкод, ":"); 
   Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
       Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
       Штрихкод.Оприходован= Истина; 
       Штрихкод.Записать();
   КонецЦикла;
Иначе 
   Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(Стр.Штрихкод).ПолучитьОбъект();
   Штрихкод.Оприходован= Истина; 
   Штрихкод.Записать();
КонецЕсли;
КонецЦикла;
Показать
17. palsergeich 13.08.18 20:17 Сейчас в теме
Ужас какой. Написал с закрытими глазами за 2 минуты.
Если версия платформы выше 8,3,5 тогда МассивШтрихКодов = СтрРазделить(Строка, ";",Ложь)
Если ниже - функция БСП - МассивШтрихКодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ";");
Потом
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Ссылка из Справочник.ШтрихКодыТоваров КАК ШтрихКоды где НЕ ШтрихКоды.Опроиходован И ШтрихКоды.Код в &МассивШтрихКодов";
Запрос.УстановитьПараметр("МассивШтрихКодов",МассивШтрихКодов )
Результат = Запрос.Выполнить();

Если Не Результат.Пустой() Тогда
  Выборка = Результат.Выбрать();
  Пока Выборка.Следующий() Цикл
    СпрОбъект = Выборка.Ссылка.ПолучитьОбъект();
    Спробъект.Оприходован = Истина;
    Спробъект.Записать();
  КонецЦикла
КонецЕсли
Показать
18. Stanislav1993 13.08.18 20:47 Сейчас в теме
(17) Спасибо за содействие и помощь в решении данной проблемы! Я junior_1c))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот