8.х Создать запись в регистре сведений из таб. части обработки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Pentыch, 11 июл 2014.

  1. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, столкнулся с проблемой и пока не могу ее решить.
    Суть. Нужно сделать обработку которая будет брать записи из регистра и в случае необходимости, эти записи будут редактироваться и перезаписываться обратно в РС. (некое подобие планирования с задачей решением и сроками).
    У меня не выходит выполнить перезапись нудных мне полей (записей). Отбор добавил (в цикл для определения нужных записей по периоду).
    Выдает ошибку:
    Ошибка при вызове метода контекста (Записать) Набор.Записать();
    по причине: Запись не верна! Значение поля не соответствует установленному отбору.
    Код:
    Набор = РегистрыСведений.тдПротоколПДКК.СоздатьНаборЗаписей(); 
         N=0;
        Для Каждого ТекСтрока Из ТабЧасть Цикл
            Если ЗначениеНеЗаполнено(ТекСтрока.РСПериод) Тогда
                ТекСтрока.РСПериод = ТекущаяДата()+N;
                N=N+1;
            КонецЕсли; 
    
            Набор.Отбор.Период.Установить(ТекСтрока.РСПериод);
        
            НовЗапись = Набор.Добавить();
         
            НовЗапись.ДатаВнесения         = ТекСтрока.ДатаВнесения;
            НовЗапись.Тема                 = ТекСтрока.Тема; 
            НовЗапись.Вопрос             = ТекСтрока.Вопрос; 
            НовЗапись.Решение             = ТекСтрока.Решение; 
            НовЗапись.Срок                 = ТекСтрока.Срок; 
            НовЗапись.Ответственный     = ТекСтрока.Ответственный; 
            НовЗапись.Статус             = ТекСтрока.УстановитьСтатус;
            НовЗапись.ДатаВыполнения     = ТекСтрока.ДатаВыполнения;
            НовЗапись.Примечание         = ТекСтрока.Примечание;
        КонецЦикла;
        Набор.Записать();
        Набор.Очистить();
    Что, собственно, я делаю не так, как мне сделать перезапись?
    Последнее редактирование: 11 июл 2014
  2. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Во-первых Вы сначала читаете набор, а потом накладываете отбор... О_о это как-то наоборот мне кажется. В конце Вы его еще и очищаете зачем-то (я понимаю, что выполнение до туда не доходит, но просто интересно). После установки отбора посмотрите в отладчике что в переменной "Набор" лежит.
    Pentыch нравится это.
  3. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Thelearning, спасибо, подправил :)
    Вот что в отладке: [​IMG]
  4. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    вы немного не то смотрите. Выделите сам "Набор" и "F2" нажмите. Только делать это нужно после строки кода "Набор.Прочитать()". Скорее всего у Вас в этой переменной будут абсолютно все записи регистра сведений. Потом накладывать отбор уже смысла нет никакого.
    Pentыch нравится это.
  5. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Thelearning, написал Прочитать после отбора. Если я сделал то, тогда вот результат: [​IMG]
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Присвоение значения полю Период для новой записи где?
    Pentыch нравится это.
  7. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    На данный момент, добавлять новую запись мне не нужно, сейчас речь идет о перезаписи уже существующего.Или вы иное имели в виду?
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    фразу не понял.

    "НовЗапись = Набор.Добавить();"
    Для НовЗапись - где установка значения поля Период?
    Pentыch нравится это.
  9. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Добавил эту строку.
    Сейчас пишет: "запись с таким значением ключевого поля уже есть."
    Регистр - периодический.
  10. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Только сейчас дошло. Какая-то фигня у вас в коде, не могу понять как оно вообще работать будет: НаборЗаписей создаете один раз, потом в цикле меняете отбор и добавляете новые записи в набор (с разным периодом), а потом за циклом один раз пытаетесь записать все это дело (т.е. набор записей с разным периодом, и с непонятно каким установленным отбором по полю период на момент записи).


    Уберите это все, переделайте. Сделайте запись в цикле, только не через набор записей делайте, а через менеджер записи. С набором не работайте, точно потрете что-нибудь.
    Pentыch нравится это.

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