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

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

Автор kot488, 24 сен 2017, 18:45

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

kot488

Имеется куча документов Заявки, имеется обработка которая с заявок группирует по городам заявки и создает общий документ. Нужно что бы при создании группового документа, у заявки изменялся реквизит Обработан на Да. Подскажите как это сделать. Пока только понял как получить пакет документов, а реквизит изменить не получается. Вот что в запросе вышло

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

    КонецПроцедуры



oleg-x

Док = Выборка.ссылка.ПолучитьОбъект();
Док.Обработано = Истина;
Док.Записать();
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

kot488

Цитата: oleg-x от 24 сен 2017, 20:42
Док = Выборка.ссылка.ПолучитьОбъект();
Док.Обработано = Истина;
Док.Записать();


Сделал вот так:

Док = Документы.Упаковка.НайтиПоРеквизиту("Обработан", Ложь);
Док.Обработан = Истина;
Док.Записать();
Сообщить("Документ записан");



Пишет
{Обработка.ГруппаСоздатьУпаковка.Форма.Форма.Форма(73)}: Поле обьекта не доступно для записи (Обработан)
   Док.Обработан = Истина;

Хотя там нет отметки только для чтения

Oldman06

НайтиПоРеквизиту() Возвращает ссылку, а Вам для записи нужен объект.

kot488


Док = Выборка.Упаковка.ПолучитьОбъект();
Док.Обработано = Истина;
Док.Записать();


То пишет что переменная не определена, конфигурация самописная
{Обработка.ГруппаСоздатьУпаковка.Форма.Форма.Форма(76,8)}: Переменная не определена (Выборка)
   Док = <<?>>Выборка.Упаковка.ПолучитьОбъект(); (Проверка: Тонкий клиент)

oleg-x

А где определение самой выборки?
Запрос = Новый Запрос;
|Текст запроса

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

Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Oldman06


kot488

Цитата: Oldman06 от 26 сен 2017, 11:20
А больше кода можно увидеть?

Вот так должно быть?

&НаСервере
Процедура УстановитьОтметку()
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
| Упаковка.Обработан
|ИЗ
| Документ.Упаковка КАК Упаковка
|ГДЕ
| Упаковка.Обработан = ЛОЖЬ";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Док = Выборка.Обработан.ПолучитьОбъект();
Док.Обработан = Истина;
Док.Записать();
КонецЦикла;
Сообщить("Документ записан");
КонецПроцедуры


Oldman06

&НаСервере
Процедура УстановитьОтметку()
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
|    Упаковка.Ссылка
|ИЗ
|    Документ.Упаковка КАК Упаковка
|ГДЕ
|    Упаковка.Обработан = ЛОЖЬ";
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Док = Выборка.Ссылка.ПолучитьОбъект();
        Док.Обработан = Истина;
        Док.Записать();   
    КонецЦикла;
    Сообщить("Документ записан");
КонецПроцедуры

kot488


Теги:

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

Рейтинг@Mail.ru

Поиск