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

Одноразовый скрипт, который ничего не изменяет

Автор Chop, 03 мар 2023, 11:34

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

Chop

Вновь привествую. Меня попросили написать одноразовый код (который отработает один раз и все). Суть. Код должен заполнить табличную часть каждого документа ИжСертификат и почистить реквизит ЭлектронныйДокумент от информации. Запустил с отладкой. Код работает, в циклы заходит, значения видит, но после того как отрабатывает изменений нет. Я догадываюсь, что скорее всего не дописал строчку другую, чтоб закрепить изменения сделанные в цикле, но сомнения в голове есть, по сему я тут.

Процедура ЗаполнениеТЧ() Экспорт
ЗапросРТиУ = Новый Запрос;
ЗапросРТиУ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                   | РеализацияТоваровУслугТовары.Ссылка,
                   | РеализацияТоваровУслугТовары.СерияНоменклатуры.ижСертификат КАК Сертификат
                   |ИЗ
                   | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары";

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

ЗапросСертификаты = Новый Запрос;
ЗапросСертификаты.Текст = "ВЫБРАТЬ
                          | ижСертификат.Ссылка КАК Ссылка,
                          | ижСертификат.ЭлектронныйДокумент КАК ЭД
                          |ИЗ
                          | Документ.ижСертификат КАК ижСертификат";

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

Для каждого СтрСертификаты Из РезСертификаты Цикл
Если ЗначениеЗаполнено(СтрСертификаты.ЭД) Тогда

Для каждого СтрРТиУ Из РезРТиУ Цикл
Если СтрРТиУ.Сертификат = СтрСертификаты.Ссылка Тогда
Объект = СтрСертификаты.Ссылка.ПолучитьОбъект();
СтрокаТЧ = Объект.ЭлектронныеДокументы.Добавить();
СтрокаТЧ.ЭлектронныйДокументСертификата = СтрСертификаты.ЭД;
СтрокаТЧ.РеализацияТоваровУслуг         = СтрРТиУ.Ссылка;
СтрокаТЧ.Вес                            = 0;
СтрСертификаты.ЭД = NUll;
КонецЕсли;
КонецЦикла;

КонецЕсли;
КонецЦикла;

LexaK

Chop, примерно так можно подправить (дааа)
    Для каждого СтрСертификаты Из РезСертификаты Цикл
        Если ЗначениеЗаполнено(СтрСертификаты.ЭД) Тогда

            Для каждого СтрРТиУ Из РезРТиУ Цикл
                Если СтрРТиУ.Сертификат = СтрСертификаты.Ссылка Тогда
//Объект как правило служебный реквизит, страйтесь их не использовать
                ДокСертификат = СтрСертификаты.Ссылка.ПолучитьОбъект();
                СтрокаТЧ = ДокСертификат.ЭлектронныеДокументы.Добавить();
                СтрокаТЧ.ЭлектронныйДокументСертификата = СтрСертификаты.ЭД;
                СтрокаТЧ.РеализацияТоваровУслуг         = СтрРТиУ.Ссылка;
                СтрокаТЧ.Вес                            = 0;
                ДокСертификат.ЭД = Неопределено; //NUll; в обычном коде не используют
Попытка
ДокСертификат.Записать();
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
                КонецЕсли;
            КонецЦикла;
           
        КонецЕсли;
    КонецЦикла;
если помогло нажмите: Спасибо!

Chop


Chop

LexaK, Чего-то не очень работает. Все равно изменений нет. Ошибок тоже нет.

LexaK

Chop, сообщения какие были? Закрытый период используется? пройдите этот код под отладчиком!

(все, идеи кончились)
если помогло нажмите: Спасибо!

Chop

Никаких. период откырт (я могу вообще любой период редактировать). Сейчас гляну что там в отладчике

Максим75

Chop, а нет ли в документе в ПриЗаписи, ПередЗаписью чего-то, что отказ выдает.
я так раз ловил каки в регистре, создавал документ, а он не записывался. аж мозг сломал. пока не залез в модуль.

Теги:

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

Рейтинг@Mail.ru

Поиск