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

Программно изменить реквизит документа

Автор Ruslan09609, 03 дек 2018, 09:31

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

Ruslan09609

Добрый день! Я с помощью запроса получил все  документы ОПЗС теперь мне надо в документе ОПЗС табличной части продукция перевыбрать строку номенклатура и провести документ,помогите пожалуйста совсем зеленому программисту.
Какой код должен быть в цикле ?Заранее благодарю за то что вникаете в мою проблему.
      Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ОтчетПроизводстваЗаСмену.Ссылка,
      |   ОтчетПроизводстваЗаСмену.Дата,
      |   ОтчетПроизводстваЗаСмену.Продукция.(
      |      Номенклатура
      |   )
      |ИЗ
      |   Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену";

   Результат = Запрос.Выполнить();

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

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
   ОтчетПроизводстваЗаСмену.Записать(РежимЗаписиДокумента.Запись);//не знаю какой код должен быть       
   КонецЦикла;

antoneus

Конечная цель какая? "Перевыбрать" - это чтобы выполнились действия при выборе номенклатуры в интерактивном режиме?

Luzer1C

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОтчетПроизводстваЗаСмену = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрокаПоиска = ОтчетПроизводстваЗаСмену.Материалы.Найти(НоменклатураДляЗамены, "Номенклатура");
Если СтрокаПоиска <> Неопределено Тогда
СтрокаПоиска.Номенклатура = ЗаменяемаяНоменклатура;
ОтчетПроизводстваЗаСмену.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;     
КонецЦикла;
Халамбалам.

Z.spb

Ну, вообще то задача самая тривиальная, какая только может быть. Запрос у вас неправильно написан, с избыточной выборкой информации. В нём сейчас выбираются ссылки на все документы + дата каждого документа + для каждого документа, зачем-то, колонка "номенклатура" из табличной части "продукция". Дата, допустим, нужна для упорядочивания, чтоб проводить документы в хронологическом порядке. Но для этого нужно в запросе дописать
"УПОРЯДОЧИТЬ ПО ОтчетПроизводстваЗаСмену.Дата"

Поле "номенклатура" же в запросе Вам не нужно совершенно. Вы будете в цикле получать по каждой ссылке документ-объект. Объект считывается из БД целиком, включая все реквизиты и табличные части.

В общем случае как-то так нужно написать
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // тут вы получаете объект
Для каждого Стр из ДокументОбъект.Продукция Цикл
    Стр.Номенклатура = Номенклатура //ссылка на вашу номенклатуру. Если нужно менять не на одну и ту же, а по какому-то условию, то пишете ваше условие
КонецЦикла;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); //Вам же провести нужно? Вот и пишите "проведение", а не "запись".
       
КонецЦикла;



Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск