Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 02:30

Запись реквизита из формы документа

Автор c_andrey, 14 окт 2015, 15:35

0 Пользователей и 1 гость просматривают эту тему.

c_andrey

Добрый день.

В наличии 1С файловая УТ. Обычный интерфейс.

Задумка такая. При выборе Контрагента (Из РН) в У этого контрагента в справчнике Контрагентов есть реквизит "Штрафник" Значение "Да" или "Нет". На Форме документа РН есть реквизит Штрафник1.
Проблема в том что при запуске этого кода изменяется реквизит в справочнике Контрагентов у последнего Контрагента (я так понял после перебора цикла последний контрагент участвует дальше по коду. А нужно толко у того Контрагента который выбран в форме документа РН!!!
Подскажите где зарыта собака)))
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Контрагенты.Ссылка,
|    Контрагенты.Штрафник
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты";

Выборка = Запрос.Выполнить().Выбрать();

   Пока Выборка.Следующий() Цикл

     
   
    Если   "Нет"=Контрагент.Штрафник Тогда
        Штрафник1= "Да";
 
       Конецесли;
        КонецЦикла;
     

    Попытка
        КонтрагентОбъект = Выборка.Ссылка.ПолучитьОбъект(); 
        КонтрагентОбъект.Штрафник = Штрафник1;
        КонтрагентОбъект.Записать();
    Исключение
     
    КонецПопытки;
          Предупреждение( КонтрагентОбъект);


Предупреждение("Ок");

ferrari314

Конечно у последнего, изменение и запись то не в теле цикла. Вот так надо:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Контрагенты.Ссылка,
|    Контрагенты.Штрафник
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты";

Выборка = Запрос.Выполнить().Выбрать();

   Пока Выборка.Следующий() Цикл

     
   
    Если   "Нет"=Контрагент.Штрафник Тогда
        Штрафник1= "Да";
 
       Конецесли;
     
     

    Попытка
        КонтрагентОбъект = Выборка.Ссылка.ПолучитьОбъект(); 
        КонтрагентОбъект.Штрафник = Штрафник1;
        КонтрагентОбъект.Записать();
    Исключение
     
    КонецПопытки;
          Предупреждение( КонтрагентОбъект);
        КонецЦикла;

Предупреждение("Ок");

А может еще и в условие засунуть надо. но это уж вы смотрите, по задаче.

c_andrey

Спасибо Вам ferrari314 :)

Он перебирает всех контрагентов. А Нужно только выбранного в РН...Может условие добавить надо?


дфтын

Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Контрагенты.Ссылка,
|    Контрагенты.Штрафник
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ Контрагенты.Ссылка = &КонтрагентИзРасходной";
Запрос.УстановитьПараметр("КонтрагентИзРасходной", СобственноТутКонтрагентИзРасходной.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Помог? Нажми - Спасибо :)
skype: Soprov1C

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск