Вход | Регистрация
 

Перенос данных из одной ТЧ в другую и группировка

Перенос данных из одной ТЧ в другую и группировка
Я
   miniconda
 
05.11.19 - 20:16
У меня есть бизнес-процесс МойБП, у которого есть форма задачи.
На этой форме у меня есть 2 ТЧ — ТЧПервая и ТЧВторая

У ТЧПервая есть реквизиты Номенклатура, Поставщик (СправочникСсылка.Контрагенты)  и Сумма
У ТЧВторая есть реквизиты Контрагент (СправочникСсылка.Контрагенты) и Сумма

Мне нужно чтобы после ввода всех данных в ТЧПервая, при нажатии на кнопку
в ТЧВторая группировались данные по Контрагентам и выводилась общая сумма

То есть если в ТЧПервая будут заказы к Поставщик1 на суммы 50.000 и 30.000,
то в ТЧВторая вывелось Поставщик1 80.000

Вопрос: как это примерно реализовать?
 
 
   Многолетний Апельсин
 
2 - 05.11.19 - 20:19
ВременнаяТаблицаЗначений = ТЧПервая.Выгрузить();
ВременнаяТаблицаЗначений.Свернуть("Контрагент","Сумма");
ТЧВторая.Загрузить(ВременнаяТаблицаЗначений);
   Многолетний Апельсин
 
3 - 05.11.19 - 20:22
(2) Малость опечатался, надо написать

ВременнаяТаблицаЗначений.Свернуть("Поставщик","Сумма");
   Garykom
 
4 - 05.11.19 - 20:23
(2) Три строчки на 1С.
На Java (или других больших ЯП) сначала придется писать пару-тройку функций, каждая по несколько экранов. И то нихрена не универсально будет, только для ограниченных типов значений внутри "Контрагент" и "Сумма"
   miniconda
 
5 - 05.11.19 - 21:59
(2) И все это корректно отобразится на форме?
А где это лучше всего ввести? В модуле объекта, да?
Но там же есть всякие обработчики событий, в каком-то из них?
   hhhh
 
6 - 05.11.19 - 22:09
(5) "Мне нужно чтобы после ввода всех данных в ТЧПервая, при нажатии на кнопку"

то есть это надо ввести в процедуре, которая вызывается при нажатии на кнопку.
   miniconda
 
7 - 05.11.19 - 22:11
(6) Точно. Спасибо
   miniconda
 
8 - 06.11.19 - 09:56
(6) Подскажите, а что делать, если у ТЧПервая есть другие реквизиты, которых
нет в ТЧВторая? Выгрузка произойдет корректным образом тогда или нет?

И еще вопрос: как правильно обратиться к этой ТЧ? Она заполняется на форме.
Объект.ТЧПервая.Выгрузить или как то иначе?
   miniconda
 
9 - 06.11.19 - 10:01
(2) (6) И если я смотрю то значение ВременнаяТаблицаЗначений, то у меня вот так:

http://ipic.su/img/img7/fs/Snimok2.1573023607.png

В эту переменную точно заносится таблица значений?
   Ёпрст
 
10 - 06.11.19 - 10:07
(9) F11
   hhhh
 
11 - 06.11.19 - 10:07
(8) да, корректным (9) да, точно
   miniconda
 
12 - 06.11.19 - 10:31
(11) Свернуть вроде как получается, но во вторую ТЧ на форме все равно значения не заносятся:

http://ipic.su/img/img7/fs/Snimok3.1573025447.png

Я свернул, получилось по 3 поставщикам. Появились 3 строки без текста. Как занести значения?)

Извините уж, только учусь
   catena
 
13 - 06.11.19 - 10:46
(12)Проверить, что имена колонок совпадают и все колонки нужного типа.
   Ёпрст
 
14 - 06.11.19 - 10:51
(0)

ТЧВторая.Загрузить(ТЧПервая);
ТЧВторая.Свернуть("Контрагент","Сумма");

   miniconda
 
15 - 06.11.19 - 10:54
(13) А если имена колонок не совпадают? Как сделать так, чтобы колонка "Поставщик" занеслась в колонку "Контрагент"?
   mc lammer
 
16 - 06.11.19 - 10:57
(15) ВременнаяТаблицаЗначений.Колонки.Поставщик.Имя = "Контрагент";
   catena
 
17 - 06.11.19 - 11:07
(15)Либо пстрочно, либо перименовывать. Загрузить() не знает о ваших синонимах.
   lEvGl
 
18 - 06.11.19 - 11:08
зопросом

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать ТЧ.Поставщик Как Контрагент, ТЧ.Сумма Поместить ВТ Из &ТЧ Как ТЧ; Выбрать ВТ.Контрагент, Сумма(ВТ.Сумма) Как Сумма Из ВТ Как ВТ Сгруппировать По ВТ.Контрагент"
Запрос.УстановитьПараметр("ТЧ", ПерваяТЧ)
ВтораяТЧ.Загрузить(Запрос.Выполнить.Выгрузить())
   lEvGl
 
19 - 06.11.19 - 11:09
если бизнес процесс твой а не типовой, то имена сделать колонок одинаковыми, об этом надо думать сразу на этапе добавления метаданных
   miniconda
 
20 - 06.11.19 - 11:26
(17) А как это реализовать построчно?

 Для Каждого Строка Из ВременнаяТаблицаЗначений Цикл
    Объект.Оплата.Контрагент = Строка.Поставщик;
КонецЦикла;


Но я ведь так не бегу по строчкам ТЧ Оплата. Как правильно?
   hhhh
 
21 - 06.11.19 - 11:36
(20) правильно в (16)
   catena
 
22 - 06.11.19 - 11:36
(20)Иногда полезно кроме форума читать и справку.
стр =  Объект.Оплата.Добавить();
стр.Контрагент = Строка.Поставщик;
   miniconda
 
23 - 06.11.19 - 11:51
(22) Сделал вот так, работает. Но как сделать так, чтобы значения не заносились второй раз, если они уж есть?

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


(21) Как в (16) не сработало у меня
   hhhh
 
24 - 06.11.19 - 12:02
(23) Объект.Оплата.Очистить()
   catena
 
25 - 06.11.19 - 12:03
(23)С таким уровнем, переименовать колонки будет правильнее. Ну или запросом, как чуть выше показали.
   lEvGl
 
26 - 06.11.19 - 12:51
(21) костыльная тема, хотя и будет работать
   hhhh
 
27 - 06.11.19 - 13:22
(26) значит в типовых куча костылей
   lEvGl
 
28 - 06.11.19 - 14:16
(27) не новость)
   тарам пам пам
 
29 - 06.11.19 - 15:42
(26) Вот ты лучше бы вообще молчал насчет костылей со своей перегонкой таблиц между сервером 1с и СУБД в (18).
   lEvGl
 
30 - 06.11.19 - 16:00
(29) мухаха
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.