Получить целые числа языком запросов 1С

Интересная задачка с собеседования — получить средствами языка запросов числа от -500 до 500. Само решение тривиально, но для него нужно получить перечень чисел от 0 до… ну хотя бы до 500. А это уже интереснее. Одно из возможных решений приведено ниже. Продолжая подставляя степени двойки можно получить очень длинную последовательность целых чисел.

ВЫБРАТЬ
0 КАК Числа
ПОМЕСТИТЬ Шаг0
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
1
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 2 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг2
ИЗ
Шаг0 КАК Лево,
Шаг0 КАК Право
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 4 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг4
ИЗ
Шаг2 КАК Лево,
Шаг2 КАК Право
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 8 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг8
ИЗ
Шаг4 КАК Лево,
Шаг4 КАК Право
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 16 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг16
ИЗ
Шаг8 КАК Лево,
Шаг8 КАК Право
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 32 + Право.Числа КАК Числа
ИЗ
Шаг16 КАК Лево,
Шаг16 КАК Право

IIS & 1C

Если веб-интерфейс у 1С не работает, не отображает элементы,  выходят ошибки  и т.п. можно попробовать отредактировать web.config на сервере IIS:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <handlers>
         <remove name="ISAPI-dll" />
         <add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.5.1443\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="None" />
         <add name="ISAPI-dll" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.5.1443\bin\wsisapi.dll" resourceType="File" requireAccess="Execute" allowPathInfo="true" preCondition="bitness64" />
      </handlers>
   </system.webServer>
</configuration>

Подключение приложений*32 к серверу*64

v83.ComConnector на x64

Объект V83.Application выполняется в рамках нового процесса 1cv8.exe.
Объект V83.COMConnector является внутрипроцессным сервером. На удаленном компьютере нет процесса, в котором он может быть создан.
Чтобы объект V83.COMConnector можно было создать на удаленном компьютере, регистрации компоненты comcntr.dll в COM утилитой regsvr32.exe недостаточно. Требуется выполнить регистрацию на удаленном компьютере компоненты comcntr.dll в качестве приложения COM+.

Для этого:
запустите утилиту Component Services;
создайте пустое COM+ приложение с:
Activation type — Server application;
именем, например, V83_COMConnector;
укажите имя пользователя Windows, от имени которого компонента будет запускаться специальный процесс dllhost.exe;
в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.
В результате при создании объекта V83.COMConnector на удаленном компьютере будет запущен специальный системный процесс dllhost.exe, и в нем будет создан объект V83.COMConnector.

Сервер 1С не может подключиться к Excel по OLE/COM

взято с http://mokshin.su/node/77

  • Если операционка 32-битная, то может помочь этот шаг:
    • запустить DCOMCNFG
    • далее в разделе Component Services/Computers/My Computer/DCOM Config нужно найти пункт Microsoft Excel Application
    • клик правой кнопкой Свойства (Properties)
    • перейти на закладку Безопасность (Security)
    • в разделе Разрешения на запуск и активацию (Launch and Activation Permissions) выбрать Настроить (Customize), нажать Изменить… (Edit…), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный запуск, Локальная активация (Local Launch, Local Activation)
    • в разделе Права доступа (Access Permissions) выбрать Настроить (Customize), нажать Изменить… (Edit…), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный доступ (Local Access)
  • Если операционка 64-битная, и в разделе Component Services/Computers/My Computer/DCOM Config НЕТ пункта Microsoft Excel Application, можно попробовать запустить консоль (MMC) в 32-битном режиме — возможно пункт Microsoft Excel Application появится. Далее все действия как в описанном выше шаге.
    Зпуск из командной строки:

    mmc /32

    И добавить оснастку Component Services — меню Консоль / Добавить или удалить оснастку… (File / Add/Remove Snap-in…)
  • Если не помогает ничего описанное выше, то действуем в лоб:
    • в разделе Component Services/Computers на My Computer клик правой кнопкой, Свойства (Properties)
    • закладка Безопасность COM (COM Security)
    • в разделе Права доступа (Access Permissions) нажать Изменить настройки по умолчанию… (Edit Default…), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный доступ (Local Access)
    • в разделе Разрешения на запуск и активацию (Launch and Activation Permissions) нажать Изменить настройки по умолчанию… (Edit Default…), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный запуск, Локальная активация (Local Launch, Local Activation)

 

Сервер 1С и ipv6

Сервер приложений 1С некорректно определяет свой адрес, если на сервере включен ipv6. Проявляется это сообщением при запуске: «Ошибка при выполнении операции с информационной базой» или «Ошибка установки соединения» или вылетает с сообщением «Информационная база не зарегистрирована».
Если при этом запустить ping, с сервера на котором расположен сервер приложений 1С на самого себя, то вместо нормального ip адреса увидим ::1. Это значит что ipv6 включен.

1) Добиться правильного адреса при пинге через имя
Для этого:
Нужно найти файлик hosts в папке C:\Windows\System32\drivers\etc
Открыть этот файлик в Notepad (блокнот) и в конец дописать строку вида 192.168.0.1 Server (IPадрес ИмяПК).

2) Отключить протокол Teredo
Просмотр текущего статуса протокола «Teredo»:
netsh int teredo show state
Отключение протокола «Teredo»:
netsh int teredo set state disable

или

Инструкции по отключению ipv6: https://support.microsoft.com/kb/929852/ru-ru

Основы прозрачного шифрования MS SQL Server

взято с http://dbasimple.blogspot.ru/2013/08/ms-sql-server.html

Продолжая тему защиты данных в базе данных в MS SQL Server, рассмотрим прозрачное шифрование (Transparent Data Encryption — TDE ) в MS SQL Server.  Демонстрация шифрования будет проводится на MS SQLServer 2012 SP1 Enterprise Edition  для базы данных клиентов [DbClients], но данный сценарий будет рабочий и для MS SQL Server 2005/2008. Прозрачное шифрование доступно только в редакциях Enterprise или Datacenter.

Итак, для начало немного теории:

Как всегда все хорошо описано в BOL —http://msdn.microsoft.com/ru-ru/library/bb934049.aspx .

Функция прозрачного шифрования данных (TDE) выполняет в реальном времени шифрование и дешифрование файлов данных и журналов в операциях ввода-вывода. При шифровании используется ключ шифрования базы данных (DEK), который хранится в загрузочной записи базы данных для доступности при восстановлении. Ключ шифрования базы данных является симметричным ключом, защищенным сертификатом, который хранится в базе данных master на сервере, или асимметричным ключом, защищенным модулем расширенного управления ключами. Функция прозрачного шифрования данных защищает «неактивные» данные, то есть файлы данных и журналов

Основное прозрачного шифрования, это то , что:

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

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

Так же надо учитывать, что шифрование\дешифрование данных это нагрузка на CPU, следовательно при проектирование необходимо учесть запас мощностей процессоров.

Ниже представлена схема работы прозрачного шифрования (так же взята из BOL):

Порядок включения шифрования:

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

Перейдем к самой реализации:

1)      Создание главного ключа шифрования

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘StrongPassword#1’;

Созданный наш ключ можно увидеть в  view:

select * from sys.key_encryptions

Удалить ключ можно инструкцией:

drop master key

После того как создали главный ключ, необходимо сделать его резервную копию и поместить резервную копию в надежное место:

BACKUP MASTER KEY TO FILE = ‘c:\sqltest2012_masterkey_backup.bak’

ENCRYPTION BY PASSWORD = ‘Password1′

2)      Создание сертификата

CREATE CERTIFICATE TDECertificate WITH SUBJECT =’TDE Certificate for DBClients’

Проверка наличия созданного сертификата:

select * from sys.certificates where name=’TDECertificate’

Создание резервной копии сертификата с закрытым ключом:

BACKUP CERTIFICATE TDECertificate

TO FILE = ‘c:\sqltest2012_cert_TDECertificate’

WITH PRIVATE KEY

(

FILE = ‘c:\sqltest2012SQLPrivateKeyFile’,

ENCRYPTION BY PASSWORD = ‘Password#3’

);

3)      Создание ключа шифрования в нашей базе данных с использование нашего сертификата

USE [DBClients]

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE TDECertificate;

4)      И наконец включаем шифрование для нашей базы данных

ALTER DATABASE [DBClients]

SET ENCRYPTION ON ;

В итоге имеем базу данных с прозрачным шифрованием.

Несколько моментов в работе с базой данных с включенным шифрованием:

Если создать резервную копию и попытаться восстановить на другом сервере, то получим ошибку:

Msg 33111, Level 16, State 3, Line 2

Cannot find server certificate with thumbprint ‘0x5B139FF1F2C5ED9EB3D503E78A63DEF3DD1FD96F’.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

Такую же ошибку получим и при попытки присоединения файлов базы данных.
Порядок восстановления  базы данных с прозрачным шифрованием на другом экземпляре MS SQL Server:
1)      Создать мастер главный ключ шифрования на сервере MS SQL Server
2)      Восстановить из резервной копии сертификат с закрытым ключом.

CREATE CERTIFICATE TDECertificate

FROM FILE = ‘c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\sqltest2012_cert_TDECertificate’

WITH PRIVATE KEY (FILE = ‘c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\sqltest2012SQLPrivateKeyFile’,

DECRYPTION BY PASSWORD = ‘Password#3’);

3)      Восстановить шифрованную базу данных или присоединить файлы базы данных с включенным шифрованием. БД готова для работы.

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

Ошибка 1С после динамического обновления

Файл не обнаружен ‘v8srvr://

Ошибка вида:

err1

лечится следующим скриптом в SQL (guid надо подставить из сообщения об ошибке):

INSERT INTO [dbo].[Config]
([FileName]
,[Creation]
,[Modified]
,[Attributes]
,[DataSize]
,[BinaryData]
,[PartNo])
VALUES
('e0666db2-45d6-49b4-a200-061c6ba7d569.12b2c980-fd4a-4771-a29e-6be72b316bb7'
,CURRENT_TIMESTAMP
,CURRENT_TIMESTAMP
,0
,0
,''
,0)
GO09

Сервер хранилища конфигураций 1С

взято с http://www.iamroot.ru/2013/08/server-xranilishha-konfiguracij-1s-8-2-iis-7-5.html

Сервер хранилища конфигураций 1С 8.2 IIS 7.5

1. Запустить сервер хранилища как сервис командой
«C:\Program Files (x86)\1cv82\8.2.18.82\bin\crserver.exe» -instsrvc -d «C:\1C_CONFIG\CONFIGS82\WEBREPO\» -usr USR1CV82 -pwd «PASS_USER_USR1CV82»
где -d «C:\1C_CONFIG\CONFIGS82\WEBREPO\» корневой каталог хранилища.

2. Дать права юзеру USR1CV82 на корневой каталог хранилища.

3. Проверить запустилась ли служба 1C:Enterprise 8.2 Configuration Repository Server.

4. Средствами 1С создать новое хранилище конфигураций по пути tcp://SRV1C82/baza1. Создать пользователей.
Проверить возможно ли подключится по tcp к хранилищу из конфигуратора указав при подключении в строке расположение хранилища tcp://SRV1C82/baza1.

5. Для публикации хранилища конфигурации нужно в каталоге C:\inetpub\wwwroot создать подкаталог например C:\inetpub\wwwroot\cf. Туда закинуть файл repository.1ccr следующего содержания:

<?xml version="1.0" encoding="UTF-8"?>
<repository connectString="tcp://srv1c82"/>

6. Зайти в IIS Manager найти там наш каталог cf контекстное меню -> Convert to Application. Теперь выбираем наш cf и в списке с права выбираем MIME Types — > add, в поле file name extension пишем .ccr а в MIME Type пишем text/xml. Выходим из MIME Types и выбираем Handler mappings. Правая кнопка — > Add Script map… , в поле Request pach пишем *, в Executable пишем C:\Program Files\1cv82\8.2.18.82\bin\wsisapi.dll, а в Name пишем 1C Web-service Extension

7. Теперь можно перезапустить веб сервер. При подключении к хранилищу надо использовать строку http://srv1c82/cf/repository.1ccr/baza1