Задать вопрос
  • Как удалить ненужные базы?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Предварительно
    Список баз данных:
    SELECT name
      FROM sys.databases
      WHERE owner_sid <> 0x01

    Используя встроенную таблицу 1С _UsersWorkHistory получить дату последнего изменения. Скрипт в помощь.

    Список баз данных и дата последних изменений:
    DECLARE @DBD TABLE ( [Name] VARCHAR(100), [Date] DATETIME)
    DECLARE @N NVARCHAR(100), @D DATETIME
    DECLARE @Q NVARCHAR(100), @P NVARCHAR(100) = '@DD DATETIME OUTPUT'
    DECLARE DB CURSOR FOR
      SELECT [name]
        FROM sys.databases
        WHERE owner_sid <> 0x01
    OPEN DB
    FETCH NEXT FROM DB INTO @N
    WHILE @@FETCH_STATUS = 0
      BEGIN
        SET @Q = 'SELECT @DD = MAX(_Date) FROM ' + @N + '.[dbo].[_UsersWorkHistory]'
        BEGIN TRY  
          EXECUTE sp_executesql @Q, @P, @DD = @D OUTPUT
        END TRY  
        BEGIN CATCH  
          SET @N = @N + ' Not 1C'
          SET @D = NULL
        END CATCH      
        INSERT @DBD VALUES (@N, @D)
        FETCH NEXT FROM DB INTO @N
      END
    CLOSE DB
    DEALLOCATE DB
    SELECT * FROM @DBD
    GO
    Ответ написан
    3 комментария
  • Получение текста между заголовкми?

    Vindicar
    @Vindicar
    RTFM!
    Тривиально. Держи в памяти буфер строк и переменную для текущего заголовка.
    Если строка является заголовком - отправляешь на вывод текущий заголовок и текущее содержимое буфера строк, потом очищаешь буфер и запоминаешь текущую строку как заголовок.
    Если строка не является заголовком - добавляешь её в буфер строк.
    Когда перебрал все строки, отправляешь на вывод последний заголовок и то, что сейчас в буфере.
    Ответ написан
    Комментировать
  • Разнести результат Django QS по отдельным list?

    @mkone112
    Начинающий питонист.
    Ну первое что приходит в голову - воспользоваться циклом. Чето вроде
    from collections import defaultdict
    res = defaultdict(list)
    for q in qs:
        res[q.row].append(q)
    res = res.values()
    Ответ написан
    1 комментарий
  • Список пользозователей из ИБ — 1С?

    Jump
    @Jump
    Системный администратор со стажем.
    1. Пишем обработку на языке 1с которая будучи запущена сохраняет список пользователей в файл в нужном вам формате(или выполняет иные действия, например удаляет или добавляет польователей, меняет пароли), и после этого завершает работу 1с.
    2. Запускаем обработку из командной строки или батника, скрипта на любом удобном языке администрирования системы.
    Ну например что нибудь в стиле
    FOR /F "TOKENS=1*" %%i IN (bases.txt) DO %EnginePath% ENTERPRISE /F %BasePath%\%%i" /DisableStartupMessages /Execute "D:\usersave.epf"
    Где bases.txt - список названий папок с базой.
    BasePath - путь к папкам с базами.
    EnginePath - путь к платформе.
    D:\usersave.epf - ваша обработка.
    В итоге поочередно батник поочередно открывает базы указанные в bases.txt в режиме предприятия, вызывается ваша обработка, она отрабатывает нужное действие, и закрывает программу, после чего батник вызывает следующую.

    Рекомендую ознакомиться - https://its.1c.ru/db/v838doc/bookmark/adm/TI000000493
    или https://infostart.ru/public/104654/

    Можно работать через COM но несколько посложнее, хотя во многом удобнее.
    Выберите нужный язык и ищите в гугле примеры работы с COM для данного языка. Например для пайтона https://paladinum.ru/?p=245420

    В любом случае - для манипулирования данными внутри 1с (например получение, удаление пользователей) возможно только из языка 1с. Поэтому базовые знания этого языка нужны обязательно.
    Т.е взаимодействовать можете любым удобным вам способом - а внутри 1с, только язык 1с.
    Ответ написан
    1 комментарий