• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Renat11111

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

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

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

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

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

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

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

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

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

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

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

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

Renat11111

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

puh14

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

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

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

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

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

или

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

Дайнеко

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

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

Darlock

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

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

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

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

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

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

unknown181538

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

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