Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Наилучший из... (число прочтений - 6210 )
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #15 - 22. Декабря 2011 :: 09:54
Печать  
неужели у таблицы нет первичного ключа?
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #16 - 22. Декабря 2011 :: 10:00
Печать  
Нет. Она сама по себе расчетная.
Я так понимаю, что единственный вариант - это каким-либо образом создать ключ-id и уже на основе этого как-то прыгать?
Если да, то тогда подскажите оптимальный способ как это сделать в языке запросов для 8-ки (где нет ни RowNumber, ни преобразования числа в строку)
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Наилучший из...
Ответ #17 - 22. Декабря 2011 :: 10:54
Печать  
А может ли быть такое:

Амор, Ленина, Иван, 20, 5, 1, Рек1, Рек2
Амор, Ленина, Иван, 20, 5, 1, Рек1, Рек2

или хотя бы такое:

Амор, Ленина, Иван, 20, 5, 1, Рек1, Рек2
Амор, Ленина, Иван, 20, 5, 1, Рек1, Рек4

?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #18 - 22. Декабря 2011 :: 11:03
Печать  
Вроде бы не должно. Но специально это нигде не оговорено.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #19 - 22. Декабря 2011 :: 11:08
Печать  
JohnyDeath писал(а) 22. Декабря 2011 :: 10:00:
Нет. Она сама по себе расчетная.
Я так понимаю, что единственный вариант - это каким-либо образом создать ключ-id и уже на основе этого как-то прыгать?
Если да, то тогда подскажите оптимальный способ как это сделать в языке запросов для 8-ки (где нет ни RowNumber, ни преобразования числа в строку)

думается нужно что то сделать с алгоритмом получения этой расчетной таблицы, что бы была возможность однозначно идентифицировать запись
  

1&&2&&3
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Наилучший из...
Ответ #20 - 23. Декабря 2011 :: 04:05
Печать  
Если Реквизит1, Рек2 (дополнительные поля) более менее типизированы - в рассчетной таблице делай еще одно поле, куда коннектируй строковые представления дополнительных полей.

Т.е. если Реквизит1 - справочник контрагенты/фирмы, Реквизит2 - банк.счет, то делай примерно так

Выбрать
...
Таблица.Реквизит1,
Таблица.Реквизит2
Выразить(IsNull(Контра.ИНН, IsNull(Фирмы.ИНН, "")) как Строка(20)) + Выразить(IsNull(Счета.Код, "") как Строка(20)) Ключ
Из
Таблица
Левое соединение Справочник.Контрагенты Контра по Контра.Ссылка = Таблица.Реквизит1
Левое соединение Справочник.Фирмы Фирмы по Фирмы.Ссылка = Таблица.Реквизит1
Левое Соединение Справочник.БанкСчета Счета По Счета.Ссылка = Таблица.Реквизит2

ну и предварительно групбай можно сделать (тупо по всем полям - просто, чтоб убрать дубли строк).



Если так не получится - то остается только 1 способ:
выборку из (Ответ #12) кидаем во временную таблицу,
а затем

Выбрать
...
Реквизит1,
реквизит2
Из
Таблица
Внутренне Соединение
(выбрать
...
max(реквизит1) МаксРеквизит1
из
Таблица
Сгруппировать По ...
) По ... = ... И Реквизит1 = МаксРеквизит1

и так выбирать топовые строки для каждого дополнительного реквизита.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #21 - 23. Декабря 2011 :: 08:59
Печать  
Идею понял. Спасибо.
Только вот конкатинация Кодов, Инн, Наименований оч не нравится. Можно, конечно, было б ссылки в строку, но 1С это не умеет.

А вообще какой самый простой способ проставить id строк таблиц на языке запросов 1С?
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Наилучший из...
Ответ #22 - 23. Декабря 2011 :: 09:27
Печать  
Самого простого, боюсь, не существует.

Выразить(Ссылка как Строка(40*)), помницо мне, снеговик не умеет
*(я не помню, гуид ссылки - чистые 36 символов, или же все-таки 40)
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #23 - 23. Декабря 2011 :: 09:38
Печать  
А самый простой из сложных? )

да, Выразить(Ссылка как Строка(40*)) - не умеет
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #24 - 23. Декабря 2011 :: 12:24
Печать  
ты расскажи откуда чудо таблица берется
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #25 - 23. Декабря 2011 :: 12:53
Печать  
Расчитываются все возможные варианты из имеющихся данных. Т.е. мы как бы для "Клиент+ТоргТочка" перебираем как было бы, если бы работал этот агент с такими-то параметрами, потом этот же с другими, потом другой со своими параметрами.
Затем, как вы поняли, выбирается одна наилучшая стратегия для связки "Клиент+ТоргТочка".

П.С. Терминологию (клиент, ТТ и т.п.) я взял для простоты понимания. У меня - льготы )
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #26 - 23. Декабря 2011 :: 15:18
Печать  
не, не то, меня физика интересует.
Ну там из ТЧ документов, движения/итоги регистров, срезы и т.п.
Из памяти, например из ТЗ, из внешних источников, еще что то.
  

1&&2&&3
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #27 - 23. Декабря 2011 :: 17:48
Печать  
Физика примерно такая:
Есть справочник Клиентов, справочник ТоргТочек и справочник торговых Агентов.
В регистре сведений хранится приоритет торговой точки (Показатель2).
У агентов периодически меняются "Усталость" (Реквизит1) и "Мотивация" (Реквизит2). На основе среза Усталости, Мотивации и Заявкам ТоргТочки (остатки регистра) по некоторому алгоритму рассчитывается ОжидаемоеПоступление (Показатель1). Показатель3 - остаток долга за Клиентом.
Т.о. в конце месяца мы рассчитываем для связки Клиент+ТоргТочка всех Агентов с их текущими Реквизитами и остатками по ТТ и Клиенту. Выбираем того агента, кто принесет наибольшее ОжидаемоеПоступление (Показатель1).
На одну ТТ в итоге должен быть только один агент.

Пример выдуман из головы по образу и подобию реалий, поэтому есть много допущений:
1. Здесь через ТТ однозначно определить Клиента нельзя
2. Один агент может быть в итоговой таблице у любого количества Клиент+ТТ
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Наилучший из...
Ответ #28 - 26. Декабря 2011 :: 03:04
Печать  
JohnyDeath писал(а) 23. Декабря 2011 :: 09:38:
А самый простой из сложных? )

да, Выразить(Ссылка как Строка(40*)) - не умеет


Не исключено, что это будет добавление реквизита Строка(40*) в соотв. справочники + подписка на событие записи, в которой в этот реквизит пихать строковое представление ГУИДа ссылки.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший из...
Ответ #29 - 26. Декабря 2011 :: 04:58
Печать  
Неее, это уже перебор. Для одного запроса мутить такое...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать