Строка с разделителями. Как получить отдельное значение в строке, которое разделено ";"
По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Описание формата внутреннего представления данных 1С в контексте обмена данными
- Эволюция расширения конфигурации
Найденные решения
В итоге получаем следующее:
Для каждого Стр Из Объект.Товары Цикл
Если Найти(Стр.Штрихкод, ":") > 0 Тогда
МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр.Штрихкод, ":");
Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
Штрихкод.Оприходован= Истина;
Штрихкод.Записать();
КонецЦикла;
Иначе
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(Стр.Штрихкод).ПолучитьОбъект();
Штрихкод.Оприходован= Истина;
Штрихкод.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Не совсем понятен вопрос. Если исходить из названия темы, то делаем запрос ссылок элементов справочника. Потом в цикле
ЭлементСправочника= СсылкаНаЭлемент.ПолучитьОбъект();
ЭлементСправочника.Галочка = Истина;
ЭлементСправочника.Записать();
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, разделитель)
Описание:
// Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину.
// В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы,
// рекомендуется использовать функцию платформы СтрРазделить.
//
// Параметры:
// Значение - Строка - текст с разделителями;
// Разделитель - Строка - разделитель строк текста, минимум 1 символ;
// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
// - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
// включаются в результат.
// - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
// при других разделителях результатом функции будет пустой массив.
// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок.
//
// Возвращаемое значение:
// Массив - массив строк.
//
// Пример:
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",")
// - возвратит массив из 5 элементов, три из которых - пустые: "", "один", "", "два", "";
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина)
// - возвратит массив из двух элементов: "один", "два";
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(" один два ", " ")
// - возвратит массив из двух элементов: "один", "два";
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("")
// - возвратит пустой массив;
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("",,Ложь)
// - возвратит массив с одним элементом: ""(пустая строка);
// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("", " ")
// - возвратит массив с одним элементом: "" (пустая строка).
//
Показать
(7)Есть документ "ТоварПоступление", в нем имеется кнопка "Загрузить данные с экзеля",
Кнопка считывает штрихкода с файла и вставляет в табличную часть.
Ниже хочу привести пример в виде скриншота.
Как видите для одной позиции имеется два штрих-кода.
Мне нужно получить каждый отдельно,и чтобы после проведения документа, проставлялось значение "Истина" в справочнике "Штрих-коды ковров" как оприходован.
Кнопка считывает штрихкода с файла и вставляет в табличную часть.
Ниже хочу привести пример в виде скриншота.
Как видите для одной позиции имеется два штрих-кода.
Мне нужно получить каждый отдельно,и чтобы после проведения документа, проставлялось значение "Истина" в справочнике "Штрих-коды ковров" как оприходован.
Прикрепленные файлы:
У меня проблема сейчас такова.
Что я недавно восстановил данные склада одной организации.
То есть эти штрихкоды сохранены в справочнике,но не отмечены как "оприходован" в справочнике(ниже прикрепил скрин). Я хочу понять как мне сделать так, чтобы при проведение каждый штрих код данной склада, проставилась галочка "Оприходован". Из-за отсутствия "галочки", не получается реализовать товар.
Что я недавно восстановил данные склада одной организации.
То есть эти штрихкоды сохранены в справочнике,но не отмечены как "оприходован" в справочнике(ниже прикрепил скрин). Я хочу понять как мне сделать так, чтобы при проведение каждый штрих код данной склада, проставилась галочка "Оприходован". Из-за отсутствия "галочки", не получается реализовать товар.
Прикрепленные файлы:
Для варианта "по штрихкодам из строки ТЧ найти элемент в справочнике и проставить галочку"
МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ":");
Потом запрос в справочник "Штрих-коды ковров" в параметр запроса Запрос.УстановитьПараметр("Штрихкод", МассивШтрихкодов);
Потом цикл по выборке:
МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ":");
Потом запрос в справочник "Штрих-коды ковров" в параметр запроса Запрос.УстановитьПараметр("Штрихкод", МассивШтрихкодов);
Потом цикл по выборке:
Пока Выборка.Следующий() Цикл
ЭлементСправочника= СсылкаНаЭлемент.ПолучитьОбъект();
ЭлементСправочника.Оприходован= Истина;
ЭлементСправочника.Записать();
КонецЦикла;
Или без запроса после получения массива штрихкодов
Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
Штрихкод.Оприходован= Истина;
Штрихкод.Записать();
КонецЦикла;
В итоге получаем следующее:
Для каждого Стр Из Объект.Товары Цикл
Если Найти(Стр.Штрихкод, ":") > 0 Тогда
МассивШтрихкодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр.Штрихкод, ":");
Для Шаг = 0 По МассивШтрихкодов.Количество()-1 Цикл
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(МассивШтрихкодов[Шаг]).ПолучитьОбъект();
Штрихкод.Оприходован= Истина;
Штрихкод.Записать();
КонецЦикла;
Иначе
Штрихкод = Справочники.ШтрихКодыКовров.НайтиПоКоду(Стр.Штрихкод).ПолучитьОбъект();
Штрихкод.Оприходован= Истина;
Штрихкод.Записать();
КонецЕсли;
КонецЦикла;
Показать
Ужас какой. Написал с закрытими глазами за 2 минуты.
Если версия платформы выше 8,3,5 тогда МассивШтрихКодов = СтрРазделить(Строка, ";",Ложь)
Если ниже - функция БСП - МассивШтрихКодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ";");
Потом
Если версия платформы выше 8,3,5 тогда МассивШтрихКодов = СтрРазделить(Строка, ";",Ложь)
Если ниже - функция БСП - МассивШтрихКодов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Штрихкод, ";");
Потом
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Ссылка из Справочник.ШтрихКодыТоваров КАК ШтрихКоды где НЕ ШтрихКоды.Опроиходован И ШтрихКоды.Код в &МассивШтрихКодов";
Запрос.УстановитьПараметр("МассивШтрихКодов",МассивШтрихКодов )
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
СпрОбъект = Выборка.Ссылка.ПолучитьОбъект();
Спробъект.Оприходован = Истина;
Спробъект.Записать();
КонецЦикла
КонецЕсли
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот