• Почему запрос формируется бесконечно долго?

    @Dementor
    программист, архитектор, аналитик
    Чтобы запросы выполнялись быстро, запросы должны быть понятными! Только для понятных запросов планировщик сможет создать план выполнения с максимальной эффективностью!

    А что тут у вас???

    1) Зачем тут вложенный запрос? Мало того, что он не имеет смысла, так он еще заставляет выделять в два раза больше памяти на стороне СУБД чем нужно. Удалить!

    2) Зачем тут ЕСТЬNULL ? Эта функция для подстановки значений по умолчанию при соединениях (когда под условие соединения не попадают некоторые поля) или при обращении к реквизитам ссылки (когда ссылка может быть пустой). Тут нет ни первого ни второго случая. СУБД пытается понять что от нее хотят и делает ряд вспомогательных таблиц в памяти, которых вообще не должно было быть!

    3) Почему в запросе 4 поля с функцией СУММА и ни одного группировочного? Это вообще не имеет смысла. Тем более, что виртуальная таблица РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты сама суммирует суммовые показатели по выбранным счетам/измерениям.

    4) Почему каждое выбираемое поле обвернуто в условный оператор ВЫБОР? Это вообще не позволяет выполнять никаких оптимизаций.

    Как это можно оптимизировать?

    1) Запрос должен быть единым - без вложенных подзапросов и временных таблиц!

    2) Вместо бредятины с анализом входящего и исходящего валютного сальдо нужно использовать признак валютности в счете (имею в виду бухгалтерский счет, а не мультивалютность в банковском счете). Различные валютные переоценки валютных счетов проходят только корректировкой балансовых сумм и с нулями по валютной сумме - в логике текущего запроса такие валютные счета будут считаться невалютными.

    3) Сделать группировку суммовых полей (обычных и валютных) по признаку валютности - в результате получим не одну строчку, а две, но которые легко проанализировать в коде. В крайнем случае, если критически важно в результате выполнения запроса получить только одну строку, то можно нарушить совет №1 и сделать временную таблицу, чтобы потом во втором запросе уже за микросекунды соединить две строки в одну единую.
    Ответ написан
    2 комментария
  • Где указывается ИНН банка в 1С УНФ 1.6 (1.6.26.124)?

    @Dementor
    программист, архитектор, аналитик
    Сергей Водаков все верно написал - в УНФ есть только БИК и Свифт.

    Требование выводить ИНН банка в печатной форме немного странно, так как ИНН хоть и есть у банка, но он не нужен для выполнения банковских операций. Необходимость в ИНН возникает, когда вы работаете с банком как с юр.лицом (обслуживание банковских счетов, терминальная сеть, инкассация и пр), но вы не сможете указать в документах элемент справочника "Банк" вместо "Контрагента", а где у контрагента ИНН вы уже знаете.
    Ответ написан
    1 комментарий
  • Где указывается ИНН банка в 1С УНФ 1.6 (1.6.26.124)?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Если не ошибаюсь, у банков не ИНН у них БИК и SWIFT. В справочнике банков, БИК это код, SWIFT это реквизит СВИФТБИК.
    Ответ написан
    1 комментарий
  • Отличия между активизацией Клиентской и Серверной лицензии?

    @LollyFox
    Сама процедура активации программной лицензии на сервер 1С:Предприятие ничем не отличается от активации клиентских лицензий. Советую гайд Пошаговая инструкция по активации лицензии 1С:Пред....
    А вот где активировать лицензию, тут да, могут быть вопросы.
    Стандартно серверную лицензию надо активировать непосредственно на машине с сервером 1С:Предприятие (есть ещё такая штука, как отдельный сервер лицензирования, но про него лучше отдельный вопрос задавать).
    А вот с активацией клиентских лицензий возможны варианты в зависимости от подключения, типа клиентского приложения и пр.
    Например:

    1. Если машина с сервером 1С одновременно является терминальным сервером и клиенты подключаются по RDP, то в любом случае все лицензии активировать на этой машине и в зависимости от потребности можно вкл/выкл раздачу лицензий сервером 1С (учитываем, что сервер раздаёт лицензии на каждый запуск, а если лицензию клиент получает сам, то на терминальную сессию, в рамках которой можно запустить несколько баз используя только одну лицензию).

    2. Если терминальный сервер и сервер 1С:Предприятия на разных машинах, то активировать можно и там и там. Если клиентские лицензии активировать на терминальном сервере, то интереснее подсчёт лицензий при работе с несколькими базами, но если есть веб-клиенты, которые будут работать браузером, то они в этом случае получить лицензию не смогут. Если активировать на машине с сервером 1С, то получить лицензию от сервера смогут любые клиенты, но лицензия сервером выдаётся на каждый запуск (сеанс).

    3. Если терминального сервера нет, юзеры подключаются толстым/тонким клиентом 1С, то можно активировать одну многопользовательскую лицензию на машине с сервером 1С или однопользовательские на каждом из клиентских ПК. В первом случае лицензии будут выдаваться сервером на каждый запуск (сеанс) и можно будет запустить только SQL базы на этом сервере, а файловые базы клиенты запускать не смогут. Во втором случае лицензии на ПК, на котором с одной лицензией можно будет запустить несколько баз, причём как SQL, так и файловых, как на сервере, так и локально, но на каждый ПК однопользовательскую лицензию надо будет активировать отдельно, а потом при каждом изменении параметров ПК восстанавливать - не каждого админа порадует такая перспектива.

    4. Если база опубликована на веб-сервере и клиенты подключаются по http(s) веб-браузером, то активировать клиентские лицензии можно только на машине с сервером 1С и принять то, что лицензии будут выдаваться на каждый запуск (сеанс).

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

    P. S.
    Есть ещё такая штука, как Сервер лицензирования 1С, который можно поднять на отдельной машине, но если будет только один сервер 1С и параметры машины, на которой будет он установлен, не будут меняться динамически, то лучше обойтись без этого.
    Ответ написан
    3 комментария
  • Отличия между активизацией Клиентской и Серверной лицензии?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Серверную лицензию надо устанавливать на сервере, там где у вас запущен сервер 1С предприятия. Какую лицензию вы устанавливаете как серверную, понять очень просто, на ней написано, и она дороже клиентской. Клиентские лицензии бывают многопользовательские и однопользовательские:
    1. Многопользовательские устанавливаются на сервере, и сервер будет их раздавать на каждое подключение.
    2. Однопользовательские устанавливаются на клиентских компьютерах, и тогда лицензия будет действовать на любое количество сеансов, но только запущенных на этом компьютере. (поставить на сервер однопользовательскую лицензию и пользоваться толпой через терминальный доступ не выйдет, 1С об этом позаботилась)

    Вообще, для полной ясности в этом вопросе, ознакомьтесь с главой 10 "Защита от несанкционированного использования: особенности и настройка", руководства по администрированию, атуальная версия всегда доступна на сайте ИТС.
    Ответ написан
    2 комментария