• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Приполученииданных

  • Автор темы Renat11111
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Renat11111

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
ОформлениеСтрокиПоНоменклатуре = Новый Соответствие;
ОтображаемыеТовары = Новый Массив;

Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
Товар = ОформлениеСтроки.ДанныеСтроки.Ссылка;

// Заполнить массив отображаемых номенклатурных позиций

ОтображаемыеТовары.Добавить(Товар);

// Заполнить соответствие товара и оформления строки

ОформлениеСтрокиПоНоменклатуре.Вставить(Товар, ОформлениеСтроки);
КонецЦикла;

// Сформировать запрос для получения остатков

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.Владелец.Код
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Владелец В(&Номенклатура)";

Запрос.УстановитьПараметр("Номенклатура", ОтображаемыеТовары);
Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Вроде бы все просто.... но на списке не верно штрихкод отображает.

Отладчиком смотрел правильные значения присваивает тут

ОформлениеСтрокиПоНоменклатуре.Получить(Выборка.Номенклатура).Ячейки.Штрихкод.Зн
ачение = Выборка.Штрихкод;
 
R

Renat11111

Не верно это не тот штрихкод показывает у номенклатуры. Иногда штрихкод раздваивает, и растраивает
 
P

puh14

А может на ячейке формат указан, типа с разделителями разрядов?

а если имеется ввиду несколько подряд значений штрих-кода - тогда дело в результатах запроса: в нем несколько записей. Добавьте в запрос РАЗЛИЧНЫЕ и будет то что надо.

ОформлениеСтрокиПоНоменклатуре.Получить(Выборка.Номенклатура).Ячейки.Штрихкод.Зн
ачение = Выборка.Штрихкод;

Вот интересно - выборка это по сути что-то между ТЗ и XML - то бишь надо позиционироваться на элементы : например Выборка[1].Штрихкод. А тут позиционирования нет, но раз работает, значит позиционирование уже произошло. То бишь что то типа

ВыборкаЗапрос = Запрос.Выполнить().Выбрать();
Для каждого Выборка из ВыборкаЗапрос Цикл

или

выборка = выборкаЗапрос[1];
 
Д

Дайнеко

А вот никого не смущает мощная конструкция в С-шном стиле?
Код:
Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
Выборка = Запрос.Выполнить().Выбрать();
Если я не слепой, то запрос 2 раза отрабатывает.

Еще. Глядя на запрос мне видится, что на 1 объект Номенклатура в регистре может быть несколько Штрих-кодов. Так какой из них хочешь вывести в Оформление?
 
D

Darlock

Думаю, первая строка для отладки.
Не совсем. Данный запрос будет выполнятьс столько раз сколько в настоящий момент на экране в форме видно строк.

Либо не используйте запрос, либо выполните его 1 раз.

В идеале, запрос тут не нужен вообще. Для полуения остатков лучше обращаться к виртуальной таблице:

Код:
Остатки = РегистрыНакопления.ОстаткиТоваров.Остатки("ДатаОстатков", Структура-отбор по номенклатуре);

На выходе имеете ТЗ по отбору.

Для вывода штрих кода - методом "ПриПолученииДанных", мне кажется проще использовать свойство оформления строк - "УстановитьТекст", потому как вы циклом обходите коллекцию оформлений, а потом "Получить()" - это уже лишнее. Во первых - тормознуто, во-вторых - не по фен-шую. в цикле обращайтесь к вирт. таблице остатков и там же устанавливайте штрих код (есть и номенклатура и позиционирование на текущую строку списка.
 
U

unknown181538

Мне кажется, что при получении данных запрос обработает несколько строк одновременно, т.е. если резко прокрутить, будет запрос сразу по большому кол-ву строк, что предпочтительней.
Вообще, тема весьма обсосана в книге знаний Мисты.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!