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

Тема в разделе "1C и всё что с ней связано", создана пользователем Renat11111, 24 окт 2011.

Статус темы:
Закрыта.
  1. Renat11111

    Renat11111 Well-Known Member

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

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

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

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

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

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

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

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

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

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

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    "не верно" это как?
     
  3. Renat11111

    Renat11111 Well-Known Member

    Регистрация:
    20 апр 2008
    Сообщения:
    123
    Симпатии:
    0
    Не верно это не тот штрихкод показывает у номенклатуры. Иногда штрихкод раздваивает, и растраивает
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    а это что означает? :)
     
  5. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    А может на ячейке формат указан, типа с разделителями разрядов?

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

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

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

    или

    выборка = выборкаЗапрос[1];
     
  6. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Думаю, первая строка для отладки.
     
  8. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Не совсем. Данный запрос будет выполнятьс столько раз сколько в настоящий момент на экране в форме видно строк.

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

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

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Мне кажется, что при получении данных запрос обработает несколько строк одновременно, т.е. если резко прокрутить, будет запрос сразу по большому кол-ву строк, что предпочтительней.
    Вообще, тема весьма обсосана в книге знаний Мисты.
     
Загрузка...
Похожие Темы - Приполученииданных
  1. Дайнеко
    Ответов:
    2
    Просмотров:
    2.004
Статус темы:
Закрыта.

Поделиться этой страницей