8.х Замещение записей регистре сведений

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

  1. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Есть независимый переодический регистр сведений с несколькими измерениями например: контрагент, а, б, в. измерения- а..в - числа.
    Одной процедурой я делаю отбор по котнрагенту и замещаю все записи, при этом в "а" передается новое значение. Другая процедура делает тоже самое но на этот раз с "б". Проблема в том что иногда один и тот же котрагент может присутсвовать в выборке в первой процедуре и во второй, тем самым заменяются не те записи. Есть еще измерение г(строка), но оно у всех записей разное.
    Уважаемые гуру не подскажите как быть в данной ситуации? Заранее спасибо!
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Что то я несколько раз перечитал вопрос, но так и не понял, что Вы хотите. То-ли конец дня, то-ли лыжи не те...

    Код дайте посмотреть, что делаете и как.
  3. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    И структуру регистра напишите нормально, или скрин дайте.
  4. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Структура регистра Измерения:Контрагент(СправочникСсылка), а(число);б(число); в(число); г(строка). В процедуре идет отбор ко контрагенту
    Код:
    НаборЗаписей=РегистрыСведений.ПотраченнаяСумма.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Контрагент.Установить(Справочники.Клиенты.НайтиПоНаименованию(Стр.Контрагент));
    
    Далее я заменяю строки следующим образом
    Код:
    Для Поз1=0 по МассивСтрокСкид.ВГраница()цикл
    
    НоваяЗапись=НаборЗаписей.Добавить();
    Мас=МассивСтрокСкид.Получить(Поз1);
    НоваяЗапись.а=Мас.СуммаВзаиморасчетов;
    НоваяЗапись.Контрагент=Мас.Контрагент.Ссылка;
    НоваяЗапись.г=Мас.Допполе; //у всех записей разное
    КонецЦикла;
    НаборЗаписей.Записать();
    
    
    Существует вторая процедура с точно таким же кодом..но Значения пишутся в измерение б.
    Иногда в выборку и первой и второй процедуры попадают одинаковые контрагент и выборка по регистру получается одинаковая. Таким образом во второй процедуре я замещаю записи созданные первой(что неверно). Посоветуйте способ как этого избежать. Количество записей в выборке не совпадает с количеством замещаемых/добавляемых записей.
  5. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Прочти help по Записи в регистр сведений у него есть параметр Истина или ложь.. замещать или нет)
    Записать(<Замещать>)

    Если не так понял.. то скорее всего тебе надо со структурой регистра работать ("Измерения")
  6. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Про замещать/не замещать это я знаю.
    Вопрос в том как правильно отбор записей по регистру организовать чтобы при одинаковых конрагентах записи в выборках не дублировались. Можно пойти простым путем созжать в регистре еще одно измерение и в качестве отбора использовать структуру..но оздавать еще одно служебное поле не несущее иногос смылсла не хочется..Посоветуйте выход.
  7. tirk
    Offline

    tirk Опытный в 1С

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

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