Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
20 Ноя 2018, 03:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Четверг. Вопрос 5  (Прочитано 32498 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн temsan

  • *
  • Сообщений: 40
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-06
  • Сайт: 
  • Профессия: Разработчик 1С
Re: Четверг. Вопрос 5
« Ответ #30: 14 Мар 2013, 16:08 »
ВЫБРАТЬ
| КОЛИЧЕСТВО(СправочникВспом.Ссылка) КАК НомерСтроки,
| Справочник.Ссылка
|ИЗ
| Справочник.Справочник КАК Справочник
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Справочник КАК СправочникВспом
| ПО Справочник.Ссылка >= СправочникВспом.Ссылка
|
|СГРУППИРОВАТЬ ПО
| Справочник.Ссылка


Оффлайн Smile

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-07-16
  • Сайт: 
Re: Четверг. Вопрос 5
« Ответ #31: 14 Мар 2013, 16:42 »
ВЫБРАТЬ
       |   КОЛИЧЕСТВО(Контрагенты1.Ссылка) КАК НомерСтроки,
       |   Контрагенты.Ссылка КАК Контрагент
       |ИЗ
       |   Справочник.Контрагенты КАК Контрагенты
       |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1
       |      ПО Контрагенты.Наименование >= Контрагенты1.Наименование
       |
       |СГРУППИРОВАТЬ ПО
       |   Контрагенты.Ссылка
       |
       |УПОРЯДОЧИТЬ ПО
       |   Контрагенты.Наименование

Соединяем набор записей с таким же набором записей

Оффлайн Escander

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-02-27
  • Сайт: 
  • Профессия: Ученик 1С
Re: Четверг. Вопрос 5
« Ответ #32: 14 Мар 2013, 18:47 »
Необходимо составить запрос, в котором будут пронумерованы по порядку выбранные записи любого справочника.

      "ВЫБРАТЬ
      |   Номенклатура.Ссылка,
      |   1 КАК Номер
      |ПОМЕСТИТЬ ВременныеДанные
      |ИЗ
      |   Справочник.Номенклатура КАК Номенклатура
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   ВременныеДанные.Ссылка,
      |   СУММА(ВременныеДанные1.Номер) КАК Номер
      |ИЗ
      |   ВременныеДанные КАК ВременныеДанные
      |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременныеДанные КАК ВременныеДанные1
      |      ПО ВременныеДанные.Ссылка >= ВременныеДанные1.Ссылка
      |
      |СГРУППИРОВАТЬ ПО
      |   ВременныеДанные.Ссылка";

Оффлайн Boulala

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-27
  • Сайт: 
Re: Четверг. Вопрос 5
« Ответ #33: 14 Мар 2013, 18:52 »
"ВЫБРАТЬ
| Спр.Ссылка КАК Ссылка,
| СУММА(1) КАК Порядок
|ИЗ
| Справочник." + ИмяСправочника + " КАК Спр
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Спр1
| ПО Спр.Ссылка >= Спр1.Ссылка
|
|СГРУППИРОВАТЬ ПО
| Спр.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| Порядок"

Суть решения состоит в том, чтобы соединением по уникальному ключу (ссылке) размножить количество записей в результирующем запросе.
После этого достаточно свернуть по уникальному ключу, а получившиеся количество полей посчитать (либо суммой как в примере, либо количество ссылок посчитать).

Оффлайн TimonChD

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-17
  • Сайт: 
  • Профессия: Программист 8.1
Re: Четверг. Вопрос 5
« Ответ #34: 14 Мар 2013, 19:22 »
Вот пример для справочника "Номенклатура":

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    КОЛИЧЕСТВО(Номенклатура_1.Ссылка) КАК Номер
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1
        ПО Номенклатура.Наименование >= Номенклатура_1.Наименование     

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка

УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование

Соединяем таблицу саму с собой довольно хитрым способом. По правой таблице подсчитываем количество номенклатуры с наименованием меньше текущего левого, используя группировку.

Оффлайн SVGLVV

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-25
  • Сайт: 
  • Профессия: Программист 8.1
Re: Четверг. Вопрос 5
« Ответ #35: 14 Мар 2013, 21:09 »
Например, для справочника “Организации” можно написать запрос:

ВЫБРАТЬ
Т1.Ссылка КАК Организация,
КОЛИЧЕСТВО(Т2.Ссылка) КАК НомерСтроки
ИЗ
Справочник.Организации КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Т2
ПО Т1.Наименование >= Т2.Наименование

СГРУППИРОВАТЬ ПО
Т1.Ссылка

УПОРЯДОЧИТЬ ПО
Т1.Наименование

Оффлайн kilelena

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-16
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 5
« Ответ #36: 14 Мар 2013, 21:13 »
ВЫБРАТЬ
   Контрагенты.Наименование,
   КОЛИЧЕСТВО(Контрагенты1.Наименование) КАК НомерПоПорядку
ИЗ
   Справочник.Контрагенты КАК Контрагенты
      ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1
      ПО Контрагенты.Наименование >= Контрагенты1.Наименование

СГРУППИРОВАТЬ ПО
   Контрагенты.Наименование

УПОРЯДОЧИТЬ ПО
   НомерПоПорядку

Оффлайн saleksvik

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-11
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 5
« Ответ #37: 14 Мар 2013, 22:35 »
ВЫБРАТЬ
   Справочник1.Ссылка,
   КОЛИЧЕСТВО(Справочник2.Ссылка) КАК Номер
ИЗ
   Справочник.Контрагенты КАК Справочник1
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Справочник2
      ПО Справочник1.Наименование >= Справочник2.Наименование

СГРУППИРОВАТЬ ПО
   Справочник1.Ссылка

УПОРЯДОЧИТЬ ПО
   Номер

В условии соединения таблиц используется поле "Наименование", по которому будут упорядочены записи.

Оффлайн igordynets

  • *
  • Сообщений: 33
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-12
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 5
« Ответ #38: 14 Мар 2013, 23:45 »
Необходимо составить запрос, в котором будут пронумерованы по порядку выбранные записи любого справочника.
Рассмотрим построение запроса на примере справочника Номенклатура (нижесказанный метод можно применить для любого справочника). Поступим следующим образом: соединим таблицу саму с собой довольно хитрым способом. По правой таблице подсчитываем количество номенклатуры с наименованием меньше текущего левого, используя группировку.
<code>
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    КОЛИЧЕСТВО(Номенклатура_1.Ссылка) КАК Номер
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1
        ПО Номенклатура.Наименование >= Номенклатура_1.Наименование      // Условие сортировки для нумерации

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка

УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
</code>
В результате выполнения запроса получим пронумерованные элементы справочника.

Оффлайн lobster13

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 5
« Ответ #39: 14 Мар 2013, 23:45 »
На примере справочника номенклатура:
ВЫБРАТЬ
   Номенклатура.Наименование,
   КОЛИЧЕСТВО(*) КАК Номер
ИЗ
   Справочник.Номенклатура КАК Номенклатура,
   Справочник.Номенклатура КАК Номенклатура1
ГДЕ
   Номенклатура.Ссылка > Номенклатура1.Ссылка

СГРУППИРОВАТЬ ПО
   Номенклатура.Наименование

УПОРЯДОЧИТЬ ПО
   НОмер


Теги:
 


* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
69 Сообщений
AIFrame AIFrame
63 Сообщений
wise wise
50 Сообщений
alexandr_ll
45 Сообщений
alex0402
44 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
38 Сообщений
BuhRust
28 Сообщений
andron81_81
24 Сообщений
byte777
21 Сообщений
LexaK
21 Сообщений

* Кто онлайн

  • Точка Гостей: 133
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal