8.х Почему при получении записи регистра сведений и е последующей записи идет задвоение значений

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 26 мар 2014.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    С этим случаем думаю разберусь, спасибо.
    А в чем тут ошибка, почему не работает(для общего развития и понимания процесса):
    Код:
    Сч=0;
       
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
        |   дсАналитикаУчета.Номенклатура,
        |   дсАналитикаУчета.Партия,
        |   дсАналитикаУчета.Поставщик,
        |   дсАналитикаУчета.Договор,
        |   дсАналитикаУчета.КлючАналитики
        |ИЗ
        |   РегистрСведений.дсАналитикаУчетаКАК дсАналитикаУчета";
       ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();
    
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
    
       Пока Выборка.Следующий() Цикл
         
         Если Выборка.Поставщик=ЗаменяемыйКонтрагент Тогда
           Записать=РегистрыСведений.дсАналитикаУчета.СоздатьМенеджерЗаписи();
           Записать.Номенклатура = Выборка.Номенклатура;
           Записать.Партия = Выборка.Партия;
           Записать.Поставщик = Выборка.Поставщик;
           Записать.Договор = Выборка.Договор;
           Записать.КлючАналитики = Выборка.КлючАналитики;
           Записать.Прочитать();
           Если Записать.Выбран()=Истина Тогда
             Записать.Поставщик = ЗаменяющийКонтрагент;
             Записать.Договор = ЗаменяющийДоговор;
             Записать.Записать();
             Сч=Сч+1;
           КонецЕсли;
         КонецЕсли;
           
       КонецЦикла;
       
       Сообщить("Записано "+Сч+" значений.");
    
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а что не работает?
    MyNameNoName нравится это.
  3. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Пробел перед КАК поставьте.
    MyNameNoName нравится это.
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    сдается мне что тут отрицание должно быть...
    Код:
     Если НЕ Выборка.Поставщик=ЗаменяемыйКонтрагент Тогда
    MyNameNoName нравится это.
  5. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Значения меняются, но бывает ситуация, когда значение изменилось на не допустимое - система в этом делает проверку и предупреждает что данное значения не допустимо для записи(т.е. происходит дублирование с другой записью). А у меня в этом случае это значение пропадает. А мне нужно чтобы в этом случае это значение не менялось.
    --- Объединение сообщений, 27 мар 2014 ---
    Он стоит это я при копировании потерял
    --- Объединение сообщений, 27 мар 2014 ---
    Тут все правильно - так и должно быть, есть ЗаменяемыйКонтрагент - какой менять нужно, а есть заменяющий.
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Делайте тогда это в попытке, если обнаружиться дубль т произойдет откат
    MyNameNoName нравится это.
  7. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а зачем вам вообще это условие? не проще ли в запросе отобрать по данному условию сразу?
    MyNameNoName нравится это.
  8. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Но суть то вопроса от этого не меняется.
  9. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    суть нет, но ускорение получить можно...
    MyNameNoName нравится это.
  10. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А как проверить на дубль?
    Ведь если я просто записываю значение то в любом случае в исключение я не попаду, мне вы правильно говорите проверять на дубль.
    --- Объединение сообщений, 27 мар 2014 ---
    Но вообще это как-то странно лично для меня что как я считаю в попытке должна происходить запись и срабатывать исключение не понимаю почему такой алгоритм.
  11. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Мне так сложно сказать - надо по отладчику глянуть.
    Вообще вот этот кусок кода, которым Вы пользуютесь - я привел так для общего развитя - что бы поддержать Алекса и как приблизительно это делается. Обычно таким кодом, который Вы используете меняют период у записей периодического независимого регистра, соответствующих ряду условий. У Вас же он не переодический и немного другое нужно.
    Если у меня на досуге будет время я посмотрю. сейчас к сожаению очень сильно вникать - нет времени
    MyNameNoName нравится это.

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