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

Перезапись элементов справочника из тч

Автор Vasylii, 07 апр 2023, 11:05

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

Vasylii

Есть тч которая заполняется и изменяется, после изменения этой тч если стоит галочка на выбор она должна перезаписать элементы справочника договоры контрагентов, не могу понять почему она работает но перезаписывает все?

Для каждого тек из объект.Табличная ЦИКЛ
Если тек.Выбор = истина ТОГДА
ДоговорВыборка = Справочники.ДоговорыКонтрагентов.Выбрать();

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

LexaK

Цитата: Vasylii от 07 апр 2023, 11:05не могу понять почему она работает
обычно жалуются: - Почему НЕ работает?

а у вас работает и вы чем-то не довольны!

1.вот эта команда неправильная
Если ДоговорОбъект = тек.Ссылка Тогда

2.какое значение в тек.Ссылка? его тип?

3.зачем вот этот выбор?
ДоговорВыборка = Справочники.ДоговорыКонтрагентов.Выбрать();
если помогло нажмите: Спасибо!

Vasylii

LexaK, так оно работает но не так если без условия тек.ссылка оно записывает во все

2. значение в тек.ссылка это ссылка на спровочник договорыконтрагентов

3. как я понял он нужен для выбора элементов для перезаписи

LexaK

Vasylii, по коду логика совсем не понятная,
а словесное описание задачи у вас есть?
т.е. вы редактируете какой-то договор, и что после редактирования/изменения надо сделать?
с этим договором? или с другими? а какими(как понять какие надо менять а какие нет)?
если помогло нажмите: Спасибо!

antoneus

Да Боже ж мой)

Для каждого тек из объект.Табличная ЦИКЛ
    Если тек.Выбор ТОГДА
        ДоговорОбъект = тек.Ссылка.ПолучитьОбъект();
        ДоговорОбъект.Систем_НоменклатураВыписки       = тек.НоменклатураВыписки;
        ДоговорОбъект.Систем_НоменклатурнаяГруппа     = тек.НоменклатурнаяГруппа;
        ДоговорОбъект.Систем_ТипКонтрагентаДляДЗ     = тек.РасчетныйТипКонтрагента;
        ДоговорОбъект.Записать();
    КонецЕсли;
КонецЦикла;

Vasylii

LexaK, вот проблема в том что я сам не могу понять как должно быть сопаставление, сама задача звучит так

в обработке есть тч которая заполняется, и этими данными нужно перезаписать договоры, которые есть в этой тч ниже скину скрин

LexaK

Цитата: antoneus от 07 апр 2023, 12:18Да Боже ж мой)

Для каждого тек из объект.Табличная ЦИКЛ
    Если тек.Выбор ТОГДА
        ДоговорОбъект = тек.Ссылка.ПолучитьОбъект();
        ДоговорОбъект.Систем_НоменклатураВыписки       = тек.НоменклатураВыписки;
        ДоговорОбъект.Систем_НоменклатурнаяГруппа     = тек.НоменклатурнаяГруппа;
        ДоговорОбъект.Систем_ТипКонтрагентаДляДЗ     = тек.РасчетныйТипКонтрагента;
        ДоговорОбъект.Записать();
    КонецЕсли;
КонецЦикла;
ДоговорОбъект = тек.Ссылка.ПолучитьОбъект();//!!!

тек.Ссылка - Ссылка реквизит табличной части, это ссылка на самого себя (этот же объект)
предлагаете 50 раз открыть этот же объект и 50 раз перезаписать одни и теже реквизиты???
если помогло нажмите: Спасибо!

LexaK

Vasylii, попробуйте так
Для каждого тек из объект.Табличная ЦИКЛ
    Если тек.Выбор и ЗначениеЗаполнено(тек.ДоговороКонтрагента) ТОГДА
        ДоговорОбъект = тек.ДоговороКонтрагента.ПолучитьОбъект();
        ДоговорОбъект.Систем_НоменклатураВыписки       = тек.НоменклатураВыписки;
        ДоговорОбъект.Систем_НоменклатурнаяГруппа     = тек.НоменклатурнаяГруппа;
        ДоговорОбъект.Систем_ТипКонтрагентаДляДЗ     = тек.РасчетныйТипКонтрагента;
        ДоговорОбъект.Записать();
    КонецЕсли;
КонецЦикла;
если помогло нажмите: Спасибо!

antoneus

Да с чего вдруг-то?)
Ссылка - это название реквизита табличной части, мы же не в запросе находимся, а не ссылка на текущий объект.
Я не виноват, что они реквизиты тч называют Ссылка)

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

Рейтинг@Mail.ru

Поиск