8.х Помогите с Регстром сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем r18romik, 7 апр 2008.

  1. TopicStarter Overlay
    r18romik
    Offline

    r18romik Опытный в 1С

    Регистрация:
    19 фев 2008
    Сообщения:
    129
    Симпатии:
    0
    Баллы:
    26
    Существует Регистр сведений, нужно из него выдернуть Ресурс
    ВыборкаЗаписей = РегистрыСведений.Штрихкоды.Выбрать();
    Пока ВыборкаЗаписей.Следующий() Цикл

    Далее я записываю его в макет
    ОбластьДаты.Параметры.Штрихкод = ВыборкаЗаписей.Штрихкод;

    Проблема в том что он мне выдаёт только один штрихкд и их в регистре много!!!
    И не пойму в чём дело? Еслинужно скину полностью код!!!
    :unsure:
    Заранее спасибо!
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Выложи, гадать не хочется.
  3. TopicStarter Overlay
    r18romik
    Offline

    r18romik Опытный в 1С

    Регистрация:
    19 фев 2008
    Сообщения:
    129
    Симпатии:
    0
    Баллы:
    26
    Вот так у меня это выглядит!

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Shtrih");
    ТаблицаЗначений.Колонки.Добавить("Vladelec");
    
    ВыборкаЗаписей = РегистрыСведений.Штрихкоды.Выбрать();
    Пока ВыборкаЗаписей.Следующий() Цикл
    
    Стр=ТаблицаЗначений.Добавить();
    Стр.Shtrih = ВыборкаЗаписей.Штрихкод;
    Стр.Vladelec = ВыборкаЗаписей.Владелец;
    
    КонецЦикла;			
    ТаблицаЗначений.ВыбратьСтроку();
    
    ТаблДок = Новый ТабличныйДокумент;	
    Макет = ПолучитьМакет("Макет");
    Выборка = Справочники.Номенклатура.Выбрать();
    ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
    ОбластьДаты = Макет.ПолучитьОбласть("Область1");
    ТаблДок.Вывести(ОбластьШапки);
    
    Пока Выборка.Следующий() Цикл
    ОбработкаПрерыванияПользователя();
    Док = Выборка.Ссылка;
    
    ОбластьДаты.Параметры.Наименование			    = Док.Наименование;
    ОбластьДаты.Параметры.СтавкаНДС                 = Док.СтавкаНДС;
    ОбластьДаты.Параметры.СтранаПроисхождения       = Док.СтранаПроисхождения;
    ОбластьДаты.Параметры.НомерГТД                  = Док.НомерГТД;
    ОбластьДаты.Параметры.БазоваяЕдиницаИзмерения   = Док.БазоваяЕдиницаИзмерения;
    
    
    ОбластьДаты.Параметры.Штрихкод                = Стр.Shtrih;
    
    
    
    ТаблДок.Вывести(ОбластьДаты);
    КонецЦикла;
    ТаблДок.Показать("Отчет");
    
    КонецПроцедуры
    
  4. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ТаблДок = Новый ТабличныйДокумент;	
    Макет = ПолучитьМакет("Макет");
    ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
    ОбластьДаты = Макет.ПолучитьОбласть("Область1");
    ТаблДок.Вывести(ОбластьШапки);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |Штрихкоды.Номенклатура.Наименование,
    |Штрихкоды.Номенклатура.СтавкаНДС,
    |Штрихкоды.Номенклатура.СтранаПроисхождения,
    |Штрихкоды.Номенклатура.НомерГТД,
    |Штрихкоды.Номенклатура.БазоваяЕдиницаИзмерения,
    |Штрихкоды.Штрихкод,
    |ИЗ
    |РегистрыСведений.Штрихкоды КАК Штрихкоды";
    
    Результат = Запрос.Выполнить().Выбрать();
    
    Пока Результат.Слудеющий() <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл	</span>
    ОбластьДаты.Параметры.Заполнить(Результат);
    ТаблДок.Вывести(ОбластьДаты);
    КонецЦикла;
    
    ТаблДок.Показать("Отчет");
    
    КонецПроцедуры
    
    
    Писал на коленке - возможны ошибки.
  5. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    ///.... скиппед....
    ТаблицаЗначений.ВыбратьСтроку();   //  Вот это нафига? Что делает метод ВыбратьСтроку()?
    /// .... скиппед....
    // Ошибка вот тут. Что такое "стр"? - это последняя строка таблицы значений, которую ты создал
    // еще в цикле заполнения свой табличной части. Для корректной работы нужно при переборе номенклатур
    // искать значение номенклатуры в своей табличной части и выводить найденный штрих код.
    ОбластьДаты.Параметры.Штрихкод = Стр.Shtrih; 
    ///.... скиппед....
    
    
    В целом - вся эта штука делается одним запросом без каких либо таблиц значений и выборок по номенклатурам. Так же ты выбираешь все записи регистра, а тебе нужны только самые свежие - для некоторых позиций, у которых обновлялись штрих коды твоя обработка будет работать не правильно.

    P.s. не забывай оформлять код соответствующим тегом.
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    [warn=Romik]Форум выбираем правильно для темы[/warn]
  7. TopicStarter Overlay
    r18romik
    Offline

    r18romik Опытный в 1С

    Регистрация:
    19 фев 2008
    Сообщения:
    129
    Симпатии:
    0
    Баллы:
    26

    А скажи как тогда мне прописать чтобы выполнялось так как ты сказал?
    Запросы я ещё не умею писать,так что довольствуюсь тем что есть!
    Вот что исправить в моём примере чтоб выполнялось всё правильно подскажи будь добр?
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Я надеялся, что ты сам немножко подумаешь.

    Вот код перебирающий строки ТЗ и ищущий нужный штрих


    Код:
    Для каждого стр из ТаблицаЗначений Цикл // в цикле мы перебираем все строки ТЗ
    Если стр.Vladelec = Док Тогда                                     // найдя наш элемент 
    ОбластьДаты.Параметры.Штрихкод = Стр.Shtrih; // мы выводим его в ТабДок.
    Прервать;                                                          // Дальнейшее выполнение цикла бессмысленно
    КонецЕсли;
    КонецЦикла;
    
    
    Сразу оговорюсь - этот метод не оптимален по быстродействию. Настоятельно рекомендую занятся изучением языка запросов.

    Впрочем сам начинал примерно с таких конструкций. :)
  9. TopicStarter Overlay
    r18romik
    Offline

    r18romik Опытный в 1С

    Регистрация:
    19 фев 2008
    Сообщения:
    129
    Симпатии:
    0
    Баллы:
    26

    Благодарю! Вообще всё красиво вышло! Спасибо:))))
    Да я учусь по тихоньку запросы писать!!!
    Но пока не так всё хорошо с ними:)

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