8.х УПП: Финансовый расчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Лена Устинова, 1 авг 2007.

  1. TopicStarter Overlay
    Лена Устинова
    Offline

    Лена Устинова

    Регистрация:
    1 авг 2007
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Делаю финансовый расчет, и при наличии буквально 15-20 строк расчета формирование отчета выдает ошибку:

    Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения "Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256"

    Вопрос: по какому принципу формируются таблицы запроса и как задавать отбор в строках "Финансового расчета", чтобы число вышеуказанных таблиц было минимальным?

    Используются строки "Финансового расчета" типа:

    - Расчет по другим строкам отчета;

    - Обороты по статье оборотов - если нужен весь оборот по данной статье по бюджету;

    - Источники данных для расчетов - Разделы управленческого учета: Обороты бюджетов: обороты
    - ставятся галки на все три суммы;
    - отборов как минимум три -
    - Сценарий;
    - Статья оборотов - итог по группе, по статье или за исключением списка статей;
    - ЦФО - итого по ЦФО или за исключением ЦФО; или Номенклатура - по Номенклатурной группе или за исключением Номенклатурной группы.
  2. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    Сервер и работа с базами данных

    Отменено ограничение на использование более 256 таблиц в запросе в файловом варианте работы, а также в клиент-серверном варианте работы в тех случаях, когда в качестве СУБД используется PostgreSQL или IBM DB2.
    Это отсюдо http://v8.1c.ru/overview/release_8_1_8/
  3. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Как же быть при использовании ms sql? Можно где-нибудь подкрутить максимальное число таблиц?
    Запрос вроде несложный:
    Код:
    "ВЫБРАТЬ
    |	ХозрасчетныйОбороты.Счет,
    |	ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
    |	ХозрасчетныйОбороты.Субконто2.Ссылка КАК СчетФактура
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Обороты(
    |			,
    |			,
    |			,
    |			Счет В (&СписокСчетов),
    |			,
    |			Субконто1.Ссылка = &Контрагент
    |				И Субконто2.Ссылка В (&СписокДокументов),
    |			,
    |			) КАК ХозрасчетныйОбороты";
    
    
    "СписокДокументов" - это массив, состоящий из более 150 документов "ПоступлениеТоваровУслуг". Может из-за такого количества сервер и давится. Но мне надо, что делать? Запрос по каждому документу в отдельности и в цикл?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Это весь запрос?
    Сделайте субконто через ВЫРАЗИТЬ к нужному типу, иначе у вас там обращения ппц ко скольки таблицам.. Кстати. на сайте 1С весть раздел ТВКВ - там есть описания таких вопросов
  5. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Можно привести пример, как это - ВЫРАЗИТЬ? От какого типа нужно прийти к субконто?
    И ссылку на упомянутый раздел, если можно.
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Приведу выдержку из статьи:
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    | ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер,
    | ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата,
    | Продажи.Контрагент,
    | Продажи.Количество,
    | Продажи.Стоимость
    |ИЗ
    | РегистрНакопления.Продажи КАК Продажи
    |ГДЕ
    | Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг";
    
  8. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Извините, опять ругается на "256 таблиц".
    Запрос вроде оптимизировал:
    Код:
    "ВЫБРАТЬ
    |	ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2.Ссылка КАК Документ.ПоступлениеТоваровУслуг) КАК СчетФактура,
    |	ХозрасчетныйОбороты.Счет,
    |	ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Обороты(
    |			,
    |			,
    |			,
    |			Счет В (&СписокСчетов),
    |			,
    |			ВЫРАЗИТЬ(Субконто1.Ссылка КАК Справочник.Контрагенты) = &Контрагент
    |				И ВЫРАЗИТЬ(Субконто2.Ссылка КАК Документ.ПоступлениеТоваровУслуг) В (&СписокДокументов),
    |			,
    |			) КАК ХозрасчетныйОбороты";
    
    Совсем недавно все работало, а теперь не пойми с чего выдает ошибку. Независимо от количества документов в СписокДокументов - хоть один, хоть сто.
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    RLS используется?
  10. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Record Level Security? Не знаю, где это можно посмотреть?
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В настройках доступа пользователей, а также в настройках учета
  12. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Я вообще-то работаю под пользователем с полными правами
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Если внимательно посмотреть на настройки - то там есть волшебный флажок применять ограничения для полных прав.
  14. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Вобщем, проблема решилась заменой
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2.Ссылка ...
    на
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 ...

    А можно добавить в выражение ВЫРАЗИТЬ еще един документ, напр
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Документ.ПоступлениеТоваровУслуг) КАК СчетФактура
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Документ.ПоступлениеПоступлениеДопрасходов) КАК СчетФактура
    (в таком виде не работает конечно)

    Короче, указать что Субконт2 может быть как документ ПоступлениеТоваровУслуг, так и ПостеплениеДопРасходов?
  15. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    "ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Документ.ПоступлениеТоваровУслуг | Документ.ПоступлениеПоступлениеДопрасходов) КАК Документ"
    
    
    
    Да, обращение к ссылке через точку вызывает неявное левое соединение - тут оно вообще не нужно - нужно приводить тип самого значения, а не его ссылки.
  16. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    Извините за назойливость, тут какая-то проблема со знаком "|" - ругается на синтаксическую ошибку. Пробовал подставить "ИЛИ", требует скобку.
    Вобщем, help, как правильно написать, справки по этой функции нигде нет.
  17. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Сорри, наврал :)

    Смысл в том, что ВЫРАЗИТЬ приводит только к одному типу.
    В ситуации, когда надо получить несколько типов - такой вариант не прокатит.

    Можно извратиться через ВЫБОР КОГДА....КОНЕЦ, проверяя на NULL - но смысл будет не большой.
  18. Serge
    Offline

    Serge Опытный в 1С

    Регистрация:
    15 фев 2008
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    А, через ОБЪЕДИНИТЬ сделаю, делов-то

Поделиться этой страницей