Имя: Пароль:
1C
1C 7.7
v7: Свертка ТЗ с расчётом максимумов
0 Franchiser
 
гуру
13.05.17
22:46
Есть ли какая-то универсальный процедура позволяющая это сделать? Можно с использованием 1с++
1 ikea
 
13.05.17
22:57
Индексированная таблица в помощь.
Группировка по нужному полю. Потом перебор в цикле и сортировка в таблице потомков по убыванию.
2 Franchiser
 
гуру
13.05.17
23:01
(1) как-то сложно...  Я пока думаю о выполнитьsqlизтз()  потом выполнить запрос в скуле с группировкой и вернуть результат обратно в тз
3 МихаилМ
 
13.05.17
23:20
выгрузите группировки добавьте поле колво в группе заполните единицей сверните -> узнаете колво элементов в группе

сортируете 1 и 2 тз

далее идете по второй тз

1 выбираете из 1 тз последние элементы.
4 Franchiser
 
гуру
13.05.17
23:26
(3) да,  понятно с 2мя ТЗ это штатный способ
5 ikea
 
13.05.17
23:28
Если есть возможность все сделать в sql, зачем про ТЗ спрашивать?
6 Franchiser
 
гуру
13.05.17
23:28
Можно еще делать тз с колонками,  содержащими тз
7 Franchiser
 
гуру
13.05.17
23:30
(5) ну,  хочу универсальную процедуру получить)  куда передаются тз,  колонки группировки,  суммиррвания,  колонки максимумов
8 ikea
 
13.05.17
23:37
ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
ТЗП=СоздатьОбъект("ТаблицаЗначений");
ИТЗ.Загрузить(Ваша_ТЗ);    ИТЗ.Группировать("ИнКолонкаПоКоторойГруппируем:КолонкаПоКоторойГруппируем;","",1);    
ИТЗ.ВыбратьСтроки();
Пока ИТЗ.ПолучитьСтроку()=1 Цикл
    ИТЗ.тзПотомки.Выгрузить(ТЗП);        
    ТЗП.Сортировать("КолонкаПоКоторойНуженМкасимум-");
    ТЗП.ПолучитьСтрокуПоНомеру(1);
   ///Дальше действия с максимумом
            
КонецЦикла;
9 МихаилМ
 
13.05.17
23:46
10 Franchiser
 
гуру
13.05.17
23:56
(9) отлично,  нужно переделать на синтаксис 7.7)
11 Franchiser
 
гуру
13.05.17
23:58
(8) спасибо!
12 Franchiser
 
гуру
14.05.17
00:58
(9) к сожалению вариант не подходит: нужно считать максимум по ссылочным и текстовым полям
13 Franchiser
 
гуру
14.05.17
01:43
Для случая ссылок можно через значениестрокувнутр()  получить для каждой ссылки число,  потом его проставить во вспомогательную колонку,  затем свернуть и восстановить ссылки через значениеизстрокивнутр()
14 vcv
 
14.05.17
06:29
(12) А максимум по ссылочным полям это как? Как получить максимальное из двух контрагентов? :)

Добавляйте в ТЗ колонку для упорядочивания, заполняйте её, потом применяйте методы выше. Сумеете и документы упорядочить не только по позиции, и с строки "Болт 5мм" "Болт 12мм" правильно упорядочить.
15 GreyK
 
14.05.17
09:06
(0) А можно для вообще максимально необразованных рассказать про суть "Расчёта максимумов"?
16 Franchiser
 
гуру
14.05.17
15:45
Есть таблица вида:
Юл id сумма1с суммаДругаяСистема
ЮЛ1 1 100     0
ЮЛ2 1  0      50
ЮЛ1 2  50     60

Нужно получить таблицу:
Юл1С id сумма1с суммаДругаяСистема ЮлДругаяСистема
ЮЛ1 1 100     50  ЮЛ2
ЮЛ1 2  50     60  ЮЛ1
17 Franchiser
 
гуру
14.05.17
15:50
(14) максимум будет считаться из пусто и ссылки
18 GreyK
 
14.05.17
16:31
(16) Заполняешь первую табличку по данным ИБ, добавляешь в неё данные из внешнего источника, при добавлении подставляешь нужного контрагента из ИБ, сворачиваешь всё это, ну и всё.
19 Franchiser
 
гуру
14.05.17
16:35
Табличка уже есть и переделывать ее нет желания,  тем более иногда нужна таблица именно в таком виде.  Это лишь пример для чего мне нужна универсальная функция (результат выгружается напрямую в эксель),  есть другие подобные задачи.