8.х Активизировать требуемую строку списка регистра сведений

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

  1. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Подскажите почему у меня не получается установить текущую строку в табличном поле? Что я не сделал? Вот код:

    Код:
    Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
    Набор.Отбор.Период.Установить(ТекущаяДата(), Истина);
    Набор.Прочитать();
    
    ЭлементыФормы.ТабличноеПоле1.Значение=Набор;
    
    СтруктураКлючевыхПолей = Новый Структура;
    СтруктураКлючевыхПолей.Вставить("Период", ТекущаяДата());
    СтруктураКлючевыхПолей.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000030"));
    ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = РегистрыСведений.ЦеныНоменклатуры.СоздатьКлючЗаписи(СтруктураКлючевыхПолей);
    
    Выдает вот такую ошибку:
    Табличное поле имеет ТипЗначения: РегистрСведенийНаборЗаписей.ЦеныНоменклатуры.
    Если поставить ТипЗначения: РегистрСведенийСписок.ЦеныНоменклатуры то просто ничего не получается.
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Сдается мне, что такую фишку можно провернуть только с РС, где измерение, используемое для отбора, индексируется.
  3. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Рекомендую посмотреть, что ожидает ТабПоле в качестве значения для текущей строки - тогда вопрос снимется :)
  4. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    .. :unsure: не придал значения.... :smile:
  5. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Измерение "Номенклатура" у меня не индексируется оно ведущие. Кстати почему если оно ведущие то не может индексироваться?
    Честоно говоря я незнаю как это посмотреть? В откладчике у него Тип: РегистрСведенийНаборЗаписей.ЦеныНоменклатуры Значение: РегистрСведенийНаборЗаписей.ЦеныНоменклатуры
    И что список я для него устанавливаю что набор записей все равно не получается. А как я и писал во втором варианте с набором вот ту ошибку выдает.
  6. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    Ну что сказать.
    Прежде всего нужно бы поменять тип значения у табличного поля ТабличноеПоле1 в РегистрСведенийСписок.ЦеныНоменклатуры.

    Далее написать код (естественно он дан в качестве примера и его нужно исправить применительно к своей проблеме):

    Код:
    ТекНоменклатура = Справочники.Номенклатура.НайтиПоКоду("0000027");
    ТекТипЦены      = Справочники.ТипыЦен.НайтиПоНаименованию("Мелкооптовая");
    
    Отбор = Новый Структура;
    Отбор.Вставить("Номенклатура", ТекНоменклатура);
    Отбор.Вставить("ТипЦен",       ТекТипЦены);
    
    Ключ = РегистрыСведений.ЦеныНоменклатуры.СоздатьКлючЗаписи(Отбор);
    
    ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = Ключ;
    
    
    Идея понятна?
  7. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Вот сделал код:
    Код:
    ТекНоменклатура = Справочники.Номенклатура.НайтиПоКоду("0000030");
    ТекТипЦены      = Справочники.ТипыЦен.НайтиПоНаименованию("Мелкооптовая");
    
    Отбор = Новый Структура;
    Отбор.Вставить("Номенклатура", ТекНоменклатура);
    Отбор.Вставить("ТипЦен",       ТекТипЦены);
    
    Ключ = РегистрыСведений.ЦеныНоменклатуры.СоздатьКлючЗаписи(Отбор);
    ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = Ключ;
    
    Табличное поле сделал: РегистрСведенийСписок.ЦеныНоменклатуры
    Но чего то ни чего не выходит. Индексировать или нет тоже не помогает. Как я понимаю после этого кода выбранная запись должна стать синим цветом но этого не происходит. Синим цветом всегда выделяется просто последняя запись.
    Зачем кстати регистру сведений можно сделать ТипЗначени: РегистрСведенийНаборЗаписей.ЦеныНоменклатуры чтоб передавать туда набор записей?
  8. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    Код который я написал является рабочим т. е. у меня всё работает.

    Нет сделано для того, чтобы этот набор можно было редактировать интерактивно т. е. ручками.

    Вот конфа. Нужно запустить Обработка3... ну и ...
    (файл rs.txt нужно переименовать в rs.dt)

    Вложения:

    • rs.txt
      Размер файла:
      338,1 КБ
      Просмотров:
      40
  9. TopicStarter Overlay
    Саша82
    Offline

    Саша82 Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26
    Спасибо разобрался. А для того чтобы его редактировать ручками туда надо передать набор например вот так:
    Код:
    Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();    
    Набор.Отбор.Период.Установить(ТекущаяДата(), Истина);    
    Набор.Прочитать();   
    ЭлементыФормы.ТабличноеПоле1.Значение=Набор
    
    И почему все таки если измерение ведущие то не может индексироваться?

    Почему то здесь не получается вначале выделить текст а потом сделать его кодом. Раньше так получалось.
  10. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    Есть такое ощущение, что при установке измерения ведущим строится индекс поумолчанию.

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