Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

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

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Бухгалтерия 8]

Помогите составить простой запрос

Елена_В
читатель
офлайн
Дата регистрации: 26.10.2007
Сообщений: 611
Пост №11
 
11.11.2013 10:27

а можно ссылки на сторонние ресурсы выкладывать?

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №12
 
11.11.2013 10:35

А что просто скопировать оттуда нельзя?

Елена_В
читатель
офлайн
Дата регистрации: 26.10.2007
Сообщений: 611
Пост №13
 
11.11.2013 10:41

Иногда возникает необходимость добавить в запрос колонку с номерами строк, например, когда нужно вывести номера строк в отчет, а используется построитель отчета. Так же нумерация строк полезна когда необходимо для определенных группировок вывести ограниченное количество строк данных. Что-то типа ПЕРВЫЕ 5 документов для каждого контрагента. <br><br>Данная статья навеяна обсуждением в: v8: Раздумья над запросом <br><br>Начнем с того, что в v8 используется ограниченный диалект SQL поэтому многие методики нумерации строк запроса, возможные в SQL, для нас не доступны. (если кому-то интересно как это делать в SQL - http://www.sql.ru/faq/faq_topic.aspx?fid=126) <br><br>Итак, есть код, выбирающий номенклатуру, отсортированный по наименованию: <br><pre>ВЫБРАТЬ Номенклатура.СсылкаИЗ Справочник.Номенклатура КАК НоменклатураУПОРЯДОЧИТЬ ПО Номенклатура.Наименование</pre><br><br>исходный запрос <br><br>Требуется добавить сюда колонку с порядковыми номерами номенклатуры (в рамках данной сортировки). <br><pre>ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, КОЛИЧЕСТВО(Номенклатура_1.Ссылка) КАК НомерИЗ Справочник.Номенклатура КАК Номенклатура       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1       ПО Номенклатура.Наименование >= Номенклатура_1.Наименование      // Условие сортировки для нумерацииСГРУППИРОВАТЬ ПО Номенклатура.СсылкаУПОРЯДОЧИТЬ ПО Номенклатура.Наименование</pre><br><br>запрос с номерами строк <br><br>Соединяем таблицу саму с собой довольно хитрым способом. По правой таблице подсчитываем количество номенклатуры с наименованием меньше текущего левого, используя группировку. <br><br>Аналогичную технику можно применить, если нужно задавать нумерацию строк с учетом группировки по какому-то полю. <br><pre>ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, Номенклатура.Родитель КАК Родитель, КОЛИЧЕСТВО(Номенклатура_1.Ссылка) КАК НомерИЗ Справочник.Номенклатура КАК Номенклатура       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1       ПО Номенклатура.Наименование >= Номенклатура_1.Наименование            И Номенклатура.Родитель = Номенклатура_1.РодительСГРУППИРОВАТЬ ПО Номенклатура.Родитель, Номенклатура.Ссылка</pre><br><br>запрос с номерами строк в рамках группировки <br><br>Это тот же самый запрос, в него просто добавлена группировка по полю "Родитель", нумерация для каждого родителя своя. <br><br>Быстродействие: <br>Если говорить о быстродействии, то запросы подобного рода естественно ресурсоемки (математически ложность порядка N^2). Для большинства повседневных задач их использование вполне приемлемо. <br>Кстати, второй запрос выполняется несколько быстрее первого, это связано с меньшим размером вспомогательных таблиц. <br><br>Пример реального использования: <br>Теперь немного о том, ради чего всё это делается, то-есть польза, которую можно извлечь из нумерации строк запроса. <br><br>Например, перед нами стоит задача получить для каждого контрагента пять последних документов поступления товаров и услуг: <br><pre>ВЫБРАТЬ ПоступлениеТоваровУслуг.Контрагент КАК Контрагент, ПоступлениеТоваровУслуг.Ссылка КАК Ссылка, КОЛИЧЕСТВО(ПоступлениеТоваровУслуг_1.Ссылка) КАК НомерИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг_1       ПО ПоступлениеТоваровУслуг.Дата <= ПоступлениеТоваровУслуг_1.Дата            И ПоступлениеТоваровУслуг.Контрагент = ПоступлениеТоваровУслуг_1.КонтрагентСГРУППИРОВАТЬ ПО ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.КонтрагентИМЕЮЩИЕ КОЛИЧЕСТВО(ПоступлениеТоваровУслуг_1.Ссылка) <= 5УПОРЯДОЧИТЬ ПО Контрагент, Номер</pre><br><br><br>запрос с номерами строк при наличии дублей интересующего поля(того,относительно которого строится счетчик) <br><pre>ВЫБРАТЬ КОЛИЧЕСТВО(ФизическиеЛица_1.Наименование) КАК Номер, ФизическиеЛица.Ссылка КАК ФИОИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица_1       ПО (ФизическиеЛица.Наименование + ФизическиеЛица.Код >= ФизическиеЛица_1.Наименование + ФизическиеЛица_1.Код)СГРУППИРОВАТЬ ПО ФизическиеЛица.СсылкаУПОРЯДОЧИТЬ ПО Номер</pre>

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №14
 
11.11.2013 10:55

Вам надо было вывести список контрагентов и номера по порядку? В полученной ТЗ есть сами контрагенты и у ТЗ есть реквизит НомерСтроки, что то было нужно еще?Зачем получать геморой на больших объемах на ровном месте?

Елена_В
читатель
офлайн
Дата регистрации: 26.10.2007
Сообщений: 611
Пост №15
 
11.11.2013 10:56

Какая разница, есть в ТЗ нумерация колонок или нет, если меня интересовал вопрос нумерации в запросе?

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №16
 
11.11.2013 11:40

Иногда гораздо удобнее и эффективнее по производительности воспользоваться разными механизмами платформы 1С для получения результата. Например, если нужна нумерация для отчета, то лучше делать такое на СКД, а если для обработки данных, то как Prikum сказал, лучше получить номер из ТЗ или инкрементом переменной при обходе выборки.

Елена_В
читатель
офлайн
Дата регистрации: 26.10.2007
Сообщений: 611
Пост №17
 
11.11.2013 12:25

Спасибо

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация