powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Иизменение данных табличной части по нескольким документам через запрос
9 сообщений из 9, страница 1 из 1
Иизменение данных табличной части по нескольким документам через запрос
    #39165390
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Форумчане!

УТ 10.3, 1с8.2, обычное

Имеются несколько документов "Реализация Товаров и Услуг". В документе есть кнопка "Изменить", которая может изменить, например, сумму документа (типа скидка), распределив цены по всем номенклатурам.

Имеется ли возможность изменить цену номенклатуры по нескольким документам?

У меня несколько "Реализаций" собраны в одном нетиповом документе по определенному признаку. На основании этих Реализаций формируется итоговый счет на оплату. Нужно организовать "Скидку" на все реализации...

Пытаюсь через запрос внести изменения:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия,
                   |    РеализацияТоваровУслугТовары.Номенклатура,
                   |    РеализацияТоваровУслугТовары.СуммаДок
                   |ИЗ
                   |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                   |ГДЕ
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия = &ПроектПредприятия";

    Запрос.Параметры.Вставить("ПроектПредприятия", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    
    
     Пока Выборка.Следующий() Цикл
         
         Коэфф = Выборка.Сумма / СуммаЗаказов;
         Процент = Скидка * Коэфф;
         
         Выборка.СуммаДок = Выборка.Сумма - Процент; 
         
     
     КонецЦикла;



Но пишет "недоступен для записи". Как можно через запрос изменить данные табличных частей?
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39165407
tvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

запрос возвращает ссылку. Через нее нужно получитьобъект() сначала, а потом уже изменять и записывать объект.
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39165418
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tvmUkraina,

запрос возвращает ссылку. Через нее нужно получитьобъект() сначала, а потом уже изменять и записывать объект.

Согласен, но как правильно получить этот объект? На моем примере?

Кстати, есть "Обработка табличной части товара". Но она прописана четко к конкретному документу.

Как можно изменить эту обработку, чтобы она перебрала все ТЧ по документам с определенным признаком.

У меня это признак "ПроектПредприятия" (добавленный реквизит)
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39165470
tvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 Запрос.Текст = "ВЫБРАТЬ
                   |    РеализацияТоваровУслугТовары.Ссылка,
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия,
                   |    РеализацияТоваровУслугТовары.Номенклатура,
                   |    РеализацияТоваровУслугТовары.СуммаДок
                   |ИЗ
                   |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                   |ГДЕ
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия = &ПроектПредприятия";

    Запрос.Параметры.Вставить("ПроектПредприятия", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    
    
     Пока Выборка.Следующий() Цикл
         Док = Выборка.Ссылка.ПолучитьОбъект();
         Коэфф = Док .Сумма / СуммаЗаказов;
         Процент = Скидка * Коэфф;
         
         Док .СуммаДок = Док .Сумма - Процент; 
         Док.Зпаписать();
     
     КонецЦикла;
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39165496
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tvmпримерно так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 Запрос.Текст = "ВЫБРАТЬ
                   |    РеализацияТоваровУслугТовары.Ссылка,
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия,
                   |    РеализацияТоваровУслугТовары.Номенклатура,
                   |    РеализацияТоваровУслугТовары.СуммаДок
                   |ИЗ
                   |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                   |ГДЕ
                   |    РеализацияТоваровУслугТовары.Ссылка.ПроектПредприятия = &ПроектПредприятия";

    Запрос.Параметры.Вставить("ПроектПредприятия", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    
    
     Пока Выборка.Следующий() Цикл
         Док = Выборка.Ссылка.ПолучитьОбъект();
         Коэфф = Док .Сумма / СуммаЗаказов;
         Процент = Скидка * Коэфф;
         
         Док .СуммаДок = Док .Сумма - Процент; 
         Док.Зпаписать();
     
     КонецЦикла;



Ругается что не находит Док.СуммаДок, хотя в запросе есть.

Кстати, никак не реагирует нажатие (.) после Док.

Может что-то с "ПолучитьОбъект"? Возможен синтаксис или влияние конфигурации с платформой?

У меня платформа 1с8.2, УТ 10.3, но в режиме совместимости с 1с8.1, древняя версия...
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39167431
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,
пробел уберите
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39167440
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker, а не,у вас же сумма не в документе а в табличной части , вам будет проще запросом получать только ссылку на документы, потом обходить табличную часть, считать скидки и записывать.
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39167660
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerjavapecker, а не,у вас же сумма не в документе а в табличной части , вам будет проще запросом получать только ссылку на документы, потом обходить табличную часть, считать скидки и записывать.

Код: sql
1.
2.
3.
4.
5.
6.
Док = Выборка.Ссылка.ПолучитьОбъект();
Коэфф = Выборка.Сумма / СуммаЗаказов;
Процент = Скидка * Коэфф;
 		
Док.СуммаДок = Выборка.Сумма - Процент; 
Док.Записать();



Выдает Ошибку
{Документ.ПроектыПредприятия(617)}: Поле объекта не обнаружено (СуммаДок)
Док.СуммаДок = Выборка.Сумма - Процент;
...
Рейтинг: 0 / 0
Иизменение данных табличной части по нескольким документам через запрос
    #39167787
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina, сумма находится в табличной части документа, а не в самом документе. еще раз пишу, запросом получите только ссылку на объект, а суммы считайте в коде обходом табличной части вашего объекта.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Иизменение данных табличной части по нескольким документам через запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]