Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Реализация товаров: изменение данных табличной части по нескольким документам          
Constantus Подменю пользователя
сообщение 08.02.16, 9:09
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, Форумчане!

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

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

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

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

Constantus Подменю пользователя
сообщение 08.02.16, 10:51
Сообщение #2

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

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

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

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


Но пишет "недоступен для записи". Как можно через запрос изменить данные табличных частей?

sava1 Подменю пользователя
сообщение 08.02.16, 11:02
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Обработка по типу "Изменение цен"

Цитата(Constantus @ 08.02.16, 10:51) *
Как можно через запрос изменить данные табличных частей?

Запрос не изменяет данные - тольки получает (в 1с по крайней мере)

Обработки.ОбработкаТабличнойЧастиТовары - копируем во внешние обработки.
В ТЧ Товары добавляе реквизит Документ., меняем процедуру заполнения ТЧ
Далее стандартный функционал.
При Выполнить - обход ТЧ по документам, изменение

Constantus @ Сегодня, 10:51 *,
обб = Запрос.Ссылка.ПолучитьОбъект()
обб.Товары.Количество = 10;

Constantus Подменю пользователя
сообщение 08.02.16, 11:17
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 14:02 *,

Да, я сейчас пытаюсь найти в этой обработке, как изменить заполнение ТЧ по документам с определенным признаком (у меня "ПроектПредприятия")

Но никак не могу найти это место, где идет привязка к Документу "РеализацияТоваров", чтобы изменить эту ссылку на ссылку "ПроектПредприятия".

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

sava1 Подменю пользователя
сообщение 08.02.16, 11:19
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

реквизит - ДокументОбъект

Constantus Подменю пользователя
сообщение 08.02.16, 11:31
Сообщение #6

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 14:19 *,

09000000.gif А можно детальнее развернуть тему? Ну типа дать списать...

В Реальзации нашел

ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;
ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента            = ЭтаФорма;


Насколько я понял нужно еще и в ТЧ Обработки дописать новы реквизит, в моем случае ПроектПредприятия, но как передать этот параметр на заполнение ТЧ в Обработку?

sava1 Подменю пользователя
сообщение 08.02.16, 11:36
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Это разовая обработка ил и напостоянку?

Constantus Подменю пользователя
сообщение 08.02.16, 11:41
Сообщение #8

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 14:36 *,

Подозреваю, что на постоянку...

sava1 Подменю пользователя
сообщение 08.02.16, 11:56
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

1.Реквизит - ДокументОбъект меняем тип.
2. ТЧ Товары добавляем реквизит ДокументСсылка тип-РТИУ
3. ПриИзмененииТекущегоДействия() - меняем на свое заполнение
4. КнопкаОКНажатие( - пишем свою выгрузку

Constantus Подменю пользователя
сообщение 08.02.16, 12:13
Сообщение #10

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 14:56 *,

1.Реквизит - ДокументОбъект меняем тип.
Где меняем этот реквизит? И главное на какой?

Меняем в документе откуда запускается обработка? Т.е. в данном случае "Реализация"?

ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;


И на какой тип?

ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект.ПроектПредприятия;




2. ТЧ Товары добавляем реквизит ДокументСсылка тип-РТИУ
Добавляем реквизит в обработку? И указываем ссылку на "Реализацию"?

3. ПриИзмененииТекущегоДействия() - меняем на свое заполнение
А что там можно изменить? Если в итоге выйдут все позиции по нескольким Реализациям, то параметры у всех одинаковые... Не понял это действие sad.gif

4. КнопкаОКНажатие( - пишем свою выгрузку

Аналогично пункту 3

Результатом действия же должны получиться список всех позиций из нескольких документов...

sava1 Подменю пользователя
сообщение 08.02.16, 12:21
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

1. Тип не меняем. (можно проще).
2. в тч Товары (обработки) добавляем ссылку
3. В вызове обработки
ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Товары.Выгрузить());
меняем на цикл по документам + установка Ссылка
4. Кнопка ОК - группируем данные ТЧ по Документу и Выгружаем в документы.



Constantus Подменю пользователя
сообщение 08.02.16, 13:11
Сообщение #12

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 15:21 *,

В процедуре вызова Обработки поставид код перехода по циклу по Документам


    ИзменениеТабличнойЧастиТовары      = Обработки.ОбработкаТабличнойЧастиТовары.Создать();
    ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма);
    
    
    //Установим реквизиты и переменные формы.
    ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;
    ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента            = ЭтаФорма;
    ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС                   = УчитыватьНДС;
    ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице          = Ложь;
    ФормаИзменениеТабличнойЧастиТовары.мРассчитыватьАвтоматическиеСкидки = РассчитыватьАвтоматическиеСкидки();
    ФормаИзменениеТабличнойЧастиТовары.мСпособЗаполненияЦен       = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;
    ФормаИзменениеТабличнойЧастиТовары.мМинимальныеЦены           = мМинимальныеЦены;
    ФормаИзменениеТабличнойЧастиТовары.мСписокФильтров            = мСписокФильтров;


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


Цикл прошел по нужным документам, обработка открылась, но вывела данные только текущего Документа

По ходу
ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;

Это мешает...

sava1 Подменю пользователя
сообщение 08.02.16, 14:24
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(Constantus @ 08.02.16, 13:11) *
Загрузить(Выборка.Ссылка.Товары.Выгрузить()

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

Вариант 2. Выбрать в запросе сразу из табличных частей документов.
Но Ссылку на документ вставлять в выборку и ТЧ обработки по-любому надо.

Constantus Подменю пользователя
сообщение 08.02.16, 15:26
Сообщение #14

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Сава, мои ресурсы исчерпаны sad.gif

Дай списать...

Не соображу...

Я так понял, что в Обработке формируется простой список, а потом, согласно этому новому Реквизиту, нужно еще и перегнать обновленные данные по соответствующим Документам Реализации....

Не осилю на данном уровне развития... 64000000.gif

sava1 Подменю пользователя
сообщение 08.02.16, 15:35
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

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


При ОК - Выбираем из ТЧ все записи, группируем по документу (Ссылка), ищем документ, выгружаем ТЧ

Сообщение отредактировал sava1 - 08.02.16, 15:35

Constantus Подменю пользователя
сообщение 08.02.16, 16:02
Сообщение #16

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента(2011)}: Ошибка при вызове метода контекста (Загрузить)
         ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Выборка);
по причине:
Несоответствие типов (параметр номер '1')


Выдает такую ошибку

Ага... Типа получилось вывести полный список товарав из выбранных Документов по параметру.

Список вышел...

Теперь, после изменений по суммам, нужно по нажатию кнопки ОК сделать нечто, который раскидает данные по ТЧ в соответствии с новым Реквизитом с ссылкой на документы Реализации?

Т.е. отрегулировать кнопку ОК? Где мне найти

4. Кнопка ОК - группируем данные ТЧ по Документу и Выгружаем в документы.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 21:45
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!