В современном мире люди используют Интернет не только для поиска информации, но и для приобретения каких либо товаров и услуг. Поэтому организации, например имеющие статус среднего бизнеса, стараются разместить свои прайс-листы в интернете или даже создать Интернет-магазин. Создать его не так-то просто. Если вы имеете «реальный» бизнес и используете определенную систему учета товаров (или услуг), нужно учитывать несколько немаловажных факторов:
* Каждый уважающий себя Интернет-магазин должен показывать остаток товара на складе, а также не показывать тот товар, которого уже нет в наличии. (а может быть что товар есть на разных региональных складах)
* Цены не должны расходиться с ценами в реальном магазине. Не учитывая доставку, хотя и это уже давно стало бесплатным практически везде.
Я привел только 2 факта, в действительности их может быть гораздо больше, всё зависит от того, какую цель вы ставите перед своим Интернет-проектом.
Многие организации для ведения учета товаров или оказанных услуг используют ПО «1С» и как показывает практика, большая часть организаций работает с версией 7.7, и не торопятся перейти на 8.х. так как это влечет за собой накладные расходы.
Для Реализации работы с WEB в 1С7.7 есть прекрасное решение - WEB-расширение, но оно работает только с Microsoft Internet Information Server (IIS). IIS используют не все хостинг – провайдеры, да и те кто использует вряд ли разрешат подключить свой сервер к чужой БД.
А держать «у себя» IIS сервер достаточно накладно для организаций среднего бизнеса (оборудование + интернет канал + лицензии ОС и ПО = увеличение стоимости товара).
Другое дело «свободное» ПО и ОС: Linux, Apache, PHP, MySQL. Эти четыре продукта использует большинство хостинг – провадеров, поэтому их использование как платформы для создания Интернет-проектов наиболее оптимально.
Как связать 1С 7.7 с MySQL? Можно использовать внешнюю компоненту MySQL,dll, но её использование не всегда возможно, особенно если ваш Веб-сервер находиться удаленно или вы покупаете хостинг у сторонней организации, так как не безопасно открывать доступ к БД из Интернета.
Для решения этой задачи я использовал технологию передачи данных через URL.
Возможно, звучит это немного дико, и многие подумают, что это неправильное решение. Однако эта система работает и работает достаточно хорошо и корректно.
И сейчас я бы хотел поделиться с коллегами приобретенным опытом реализации это технологии.
Кратко о принципе:
Выглядит это так: из 1С вызывается url и через него же передаются данные PHP-скрипу, который в свою очередь делает с ними все, что необходимо.
Например, нам нужно передать остаток товара на складе: из 1С должен будет сформироваться url: http://www.server.com/script.php?good=201&count=302&date=2009-06-09, где:
* http://www.server.com – адрес сервера
* script.php – исполняющий скрипт
* good=201 – переменная и код товара
* count=302 – переменная и количество остатка
* date=2009-06-09 – дата на которую передается остаток
причем для работы данной схемы достаточно лишь иметь доступ в Интернет с того компьютера на котором выполняется операция по передачи данных. (сервер БД нет необходимости подключать к Интернету)
Встреча с возможными ошибками:
Для начала хотелось бы рассказать о тех проблемах, с которыми я столкнулся и о том, как можно их наиболее эффективно решить:
1. Проблема передачи дробных чисел, а именно трудности, возникающие при использовании символа «точка» (.)
Если необходимо передать любое дробное число, то в 1С оно будет храниться виде 1.1. При передаче числа через url точка, отделяющая целую часть от дробной, вызывает ошибку, так как символ «точка» служит для разделения доменов. Следовательно, необходимо преобразовать эту самую «точку» в другой символ наиболее подходящий для этого. И этот символ - «запятая» (,). Для того чтобы осуществить это преобразование, я написал функцию, листинг которой приведен ниже:
Эта функция возвращает строку в которой все символы «.» заменены на «,» в строковой переменной Стр. Применимо это не только к числам, но и к текстовым данным.
Теперь при передаче число 1.1 будет иметь формат 1,1. Далее при получении мы должны привести это число обратно в «привычный» вид, это можно сделать на стороне PHP-скрипта функцией strtr() . краткое её описание я привел ниже:
Описание функции string strtr ( string $str , string $from , string $to ):
Эта функция возвращает строку str , в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to . (www.php.net)
Т.е. в нашем случае функция будет иметь вид strtr("1,1", ",", ".") и результатом её работы будет: 1.1
2. Проблема передачи даты. В 1С дата имеет вид «ДД.ММ.ГГГГ» например, 01.01.2009. При передаче такого вида данных будет вызвана такая же ошибка, как и при передаче числовых данных. Конечно, для решения и этой проблемы можно использовать указанную выше функцию ЧислоURL, но я решил пойти другим путём и конвертировал дату в формат MySQL, то есть «ГГГГ-ММ-ДД». Для этого я написал функцию МуДата, вот ее листинг:
Функция работает следующим образом – опять же выделяет из переменной Стр, Год, Месяц, Число и выстраивает их в формате ГГГГ-ММ-ДД, наиболее привычным при работе с MySQL. Об ошибках все.
Подготовка 1С:
Теперь расскажу о том, как заставить 1С работать с WEB.
Для того, чтобы иметь возможность работать с протоколом HTTP в 1С, я использовал библиотеку V7+, которая поставляется фирмой 1С и служит для расширения возможностей 1С 7.7.
Для начала необходимо подключить внешнюю компоненту (подробнее здесь), используя функцию «ЗагрузитьВнешнююКомпоненту("v7plus.dll")». Далее необходимо создать объект addin.v7httpreader, для этого я использовал переменную НТТР. А для передачи и получения данных используется метод ПолучитьКакСтроку(адрес, СтрокаДляПриёма); который получает данные в переменную СтрокаДляПриёма с адреса указанного в переменной адрес. В целом все это будет выглядеть примерно так:
Выше указанная процедура выведет в окно сообщений HTML-код заглавной страницы сайта http://www.google.ru
Таким образом, теперь мы знаем, как, из 1С, обратиться к нужному сайту, и получить его HTML-код.
Немного о PHP:
Теперь напишем PHP-скрипт, который просто будет выводить данные полученные методом GET. (ознакомиться с тем, как PHP получает данные можно здесь) Листинг такого скрипта:
Назовем его test.php и поместим в корневую папку web-сервера. Далее для проверки работы скрипта введем в адресную строку браузера http://localhost/test.php?text=hello%20wolrd В том случае, если все сделано верно, на экране появиться страница с текстом hello world.
«Соединяем» 1С и PHP:
Далее создаем в 1С внешнюю обработку и вставим в её модуль следующий код:
Отличается она от алгоритма, который мы создавали выше лишь значением в переменной адрес.
И так в случае успешной работы 1С и РНР-скпипта в окне сообщений 1С мы увидим надпись hello world.
Теперь очевидно, что с помощью 1C можно передать данные PHP-скриптам, а они в свою очередь делают с ними все что необходимо, например, записывают их в БД.
Пример записи данных в БД MySQL:
Запись в БД MYSQL будет производиться средствами PHP, об этом сказано уже не мало. Поэтому чтобы не повторяться, опишу пример из собственной практики.
Для начала создадим обработку в 1С:
На форму положим поле ввода и присвоим ему идентификатор текст, далее немного переделаем процедуру описанную в разделом выше:
Теперь необходимо создать БД в MySQL (как это сделать описано здесь). Создадим БД и присвоим ей имя TESTDB. Далее создадим таблицу с именем TEST:
Как видно из запроса, в таблице всего 2 поля:
* id – уникальный номер сроки;
* text – текстовое поле, куда будут помещаться данные из 1С.
Теперь необходимо написать PHP-скрипт, который и будет записывать данные из 1С в MySQL. Листинг данного скрипта приведен ниже:
Все готово! Теперь открываем Внешнюю обработку в 1С и пишем в поле ввода слово Hello! Нажимаем кнопку «Сформировать». Если все сделано правильно, то в созданной нами таблице появится запись со словом Hello! В противном случае, в окне сообщений 1С появится текст ошибки.
Заключение:
Весь тот опыт, которым я поделился в этой статье, можно использовать не только в Интернет-торговли, но и в корпоративных целях, например для того, чтобы:
* Консолидировать данные в единую БД MySQL;
* Предоставлять отчеты компетентным лицам, где бы они не находились.
И это еще далеко не весь перечень, ведь WEB-технологии - очень гибкий инструмент с неограниченным спектром возможностей, при условии умелого их использования.
В общем-то, мной был не только реализован механизм отправки данных, но и приема через HTTP, но вот это уже совсем другая история!
В языке запросов 1С:Предприятия функция ПОДСТРОКА() в формате ПОДСТРОКА(<Исходная строка>, <Начало>, <Длина>) может применяться к данным строкового типа и позволяет выделить фрагмент <Исходной строки>, начинающийся с символа номер <Начало> (символы в строке нумеруются с 1) и длиной <Длина> символов. Результат вычисления функции ПОДСТРОКА() имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если <Исходная строка> имеет неограниченную длину и параметр <Длина> не является константой или превышает 1024.
Вычисление функции ПОДСТРОКА() на SQL сервере:
В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется.
В большинстве случаев эти правила не оказывают влияния на выполнение запроса 1С:Предприятия, однако есть случаи, когда для исполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса.
Например, запрос:
завершается аварийно с сообщением Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Это происходит потому, что вычисленная Microsoft SQL Server максимальная длина строки, которая является результатом выражения:
равна 4000 символов. Поэтому длина записи, состоящей из двух таких полей превышает 8000 байт, разрешенные для выполнения операции сортировки.
В связи с описанной особенностью исполнения функции SUBSTRING() на SQL Server использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ(). В частности, приведенный пример можно переписать в виде:
Часто бывает потребность загружать данные из текстовых форматов, причем информация для загрузки бьется на 2 и более файлов.
Хорошо бы посредством SQL запроса выбирать данные из этих файлов и производить загрузку! Это вполне возможно и я считаю этот способ наиболее грамотный для решения таких задач!
Имеем 2 файла:
- Head_XXXXX.txt
- Rows_XXXXX.txt
Где XXXXX – порядковой номер пары файлов
Структура строки в Head_XXXXX.txt :
Колонка1 20 символов – Номер заказа
Колонка2 5 символов – Код контрагента
Колонка3 10 символов – Дата заказа
Колонка4 10 символов – Дата доставки
Колонка5 10 символов – Дата сбора
Колонка6 4 символов – Количество строк в ТЧ
Структура строки в Rows_XXXXX.txt :
Колонка1 20 символов – Номер заказа
Колонка2 7 символов – Артикул номенклатуры
Колонка3 9 символов – Количество в базовых ед. изм.
В каждой паре файлов несколько Заказов.
Необходимо загрузить эти заказы в БД 1С
Для этого воспользуемся Microsoft.Jet.OLEDB.4.0
Для того чтоб данный драйвер корректно понимал структуру файлов необходимо в каталоге расположения данных файлов, перед выполнением запросов, создать специальный текстовый файл schema.ini cо следующими строками:
Как видим, здесь мы задаем структуру таблицы из файла.
Остается только выполнить запрос к полученной текстовой БД и обработать результат:
Запуск исполняемого файла системы 1С:Предприятие 8.x
Помимо запуска путем выбора соответствующей пиктограммы из меню «Пуск —Программы» операционной системы MS Windows, запуск системы 1С:Предприятие 8.x может быть выполнен путем запуска исполняемого файла 1CV8.EXE. Такой запуск может быть произведен, например, при помощи пункта «Выполнить» меню «Пуск» операционной системы MS Windows, или двойным щелчком мыши на имени файла 1CV8.EXE в программе Проводник (Explorer).
В командной строке запуска файла 1CV8.EXE можно указать все необходимые параметры: режим запуска, имя каталога с информационной базой, имя пользовательского каталога, и другие. Если параметры командной строки указаны верно, файл 1CV8.EXE будет запущен в одном из режимов запуска: «1С:Предприятие» или «Конфигуратор» — в зависимости от указанных параметров.
Если при запуске файла 1CV8.EXE обнаружена ошибка в параметрах командной строки, или параметры отсутствуют, то после запуска на экран будет выдан диалог «Запуск 1С:Предприятия». В этом диалоге пользователь может выбрать режим запуска файла 1CV8.EXE, имя информационной базы и другие параметры запуска.
Примеры:
Файловый вариант: "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F"Путь к базе данных" /N"Имя пользователя" /P"Пароль"
Клиент-серверный вариант: "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"НазвСервер\База" /N" Имя пользователя " /P"Пароль"
Если на одном сервере стоит 8.1 и 8.2 (как ставить- тут), то при подключении к базам 8.2 нужно указывать порт сервера(например 1641): "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"server-1C:1641\ZUP" /N"EMigachev" /P"12345" "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"НазвСервер:1641\База" /N" Имя пользователя" /P"Пароль "
Запуск программы под пользователем и выпопление обработки при открытии: "C:\Program Files\1cv82\8.2.17.235\bin\1cv8s.exe" ENTERPRISE /F "D:\1C\HRM" /N user /P password /Execute "D:\1C\Внешние_обработки_1С\РаботающиеОбработки\РабочийСтол.epf" "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F "ПУТЬ К ПАПКЕ С БД" /N ПОЛЬЗОВАТЕЛЬ /P ПАРОЛЬ /Execute "C:\\обработка.epf"
Архивация информационной базы 1С "C:\Program Files\1cv82\common\1cestart.exe" DESIGNER /S Server-1C\1C-Work82 /N"Администратор" /P"12345" /DumpIB \\bdc\BackUp\Base.dt
"C:\Program Files\1cv82\common\1cestart.exe» config /S server:1641\82_zup /N Администратор /P zzzz /WA- /Out"c:\Backup\backup.log» -NoT_runcate /DumpIB H:\1S_VIGR\82_zup.dt
Для 8.1:
Для файлового варианта: "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"D:\1C_base\ZUPRAZR" /N"EMigachev" /P"12345"
Для клиент-серверного варианта: "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /S"server-1C\ZUP" /N"EMigachev" /P"12345"
Если на одном сервере стоит 8.1 и 8.2 (как ставить- тут), то при подключении к базам 8.2 нужно указывать порт сервера(например 1641): "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"server-1C:1641\ZUP" /N"EMigachev" /P"12345"
Параметры командной строки
При запуске файла 1CV8.EXE в командной строке могут быть указаны следующие параметры:
Параметры командной строки выбора режима:
CONFIG - запуск системы 1С:Предприятие 8.x в режиме «Конфигуратор»;
ENTERPRISE - запуск системы 1С:Предприятие 8.x в режиме «1С:Предприятие»;
CREATEINFOBASE <connect string> [/AddInList [<имя ИБ>]] - создание информационной базы ( <connect string>
строка, задающая параметры информационной базы, каждый из которых представляет собой фрагмент вида <Имя параметра=><Значение>, где Имя параметра — имя параметра, а Значение — его значение.
Фрагменты отделяются друг от друга символами ';'.
Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки (").
Для файлового варианта определен параметр:
File — каталог информационной базы;
Locale — язык (страна), которые будут использованы при создании информационной базы. Допустимые значения такие же как у параметра <Форматная строка> метода Формат. Параметр Locale задавать не обязательно. Если не задан, то будут использованы региональные установки текущей информационной базы.
Для клиент-серверного варианта определены параметры:
Srvr — имя сервера 1С:Предприятия;
Ref — имя информационной базы на сервере;
SQLSrvr — имя SQL сервера;
SQLDB — имя SQL базы данных;
SQLUID — имя пользователя SQL;
SQLPwd — пароль пользователя SQL. Если пароль для пользователя SQL не задан, то данный параметр можно не указывать
SQLYOffs - смещение дат, используемое для хранения дат в SQL Server. Может принимать значения 0 или 2000. Данный параметр задавать не обязательно. Если не задан принимается значение 0.
Locale - язык (страна), (аналогично файловому варианту).
Для всех вариантов определены параметры:
Usr — имя пользователя;
Pwd — пароль
/AddInList - параметр, показывающий, под каким именем добавлять базу в список, если не указан, база не будет добавлена в список. Если не указано имя, используется умолчание, аналогичное интерактивному созданию информационной базы.
Одновременное использование ключей не допускается.
Параметры командной строки для указания параметров запуска:
/@<имя файла> - параметры командной строки записаны в указанном файле
/F<Путь> - путь к информационной базе, если она хранится в файле (имя файла указывать не надо)
/S<Адрес> - адрес информационной базы, хранящейся на сервере 1С:Предприятия 8.x, складывается следующим образом:
<Имя компьютера, работающего сервером приложений>\ <Ссылочное имя информационной базы, известное в рамках сервера 1С:Предприятия 8.x>
/N<Имя> -имя пользователя. Должно быть указано так же, как в списке пользователей, создаваемом в Конфигураторе
/P<Пароль> -пароль пользователя, имя которого указано в параметре /N. Если у пользователя нет пароля, этот параметр можно опустить
/WA- запрет применения Windows-аутентификации при старте Предприятия или Конфигуратора
/WA+ установка обязательного применения Windows-аутентификации при старте 1С:Предприятия или Конфигуратора. Если ключ /WA не указывается, то подразумевается, что используется параметр командной строки /WA+
/AU- запрет вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки
/AU+ установка вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки. Если ключ /AU не указывается, то подразумевается, что используется параметр командной строки /AU+
/Out<Имя файла> [-NoT_runcate] - установка файла для вывода служебных сообщений. Если задан ключ –NoT_runcate (через пробел), файл не очищается
/L<Каталог> - указывается каталог локализованных ресурсов интерфейса (например, «RU»)
/DisableStartupMessages -Подавляет стартовые сообщения: «Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить?»; «Возможностей Вашего компьютера недостаточно для редактирования справки по конфигурации. Для редактирования справки необходимо установить Microsoft Internet Explorer версии 6.0 или выше.»; «Возможностей Вашего компьютера недостаточно для редактирования html-документов, в том числе разделов справки. Для редактирования html-документов необходимо установить Microsoft Internet Explorer версии 6.0 или выше. В данном запуске редактирование html-документов будет недоступно.»
/C<Строка текста> - передача параметра в конфигурацию Параметры командной строки пакетного режима конфигуратора:
/DumpIB<Имя файла> -выгрузка информационной базы в командном режиме
/RestoreIB<Имя файла> - загрузка информационной базы в командном режиме
/DumpCfg<имя cf файла> - сохранение конфигурации в файл
/LoadCfg<имя cf файла> - загрузка конфигурации из файла
/UpdateDBCfg [-WarningsAsErrors] - обновление конфигурации базы данных. Если ключ WarningsAsErrors указан (через пробел), то все предупредительные сообщения будут трактоваться как ошибки
/DumpDBCfg<имя cf файла> - сохранение конфигурации базы данных в файл
/RollbackCfg - возврат к конфигурации базы данных
/CheckModules - выполнить синтаксический контроль
/UpdateCfg<имя cf | cfu файла> - обновление конфигурации, находящейся на поддержке
/IBCheckAndRepair [-ReIndex] [-LogIntergrity] [-RecalcTotals] [-IBCompression] [-TestOnly | [-BadRefCreate | -BadRefClear | -BadRefNone]
[-BadDataCreate | -BadDataDelete] ] - выполнить тестирование и исправление информационной базы
ReIndex - реиндексация таблиц
LogIntergrity - проверка логической целостности
RecalcTotals - пересчет итогов
IBCompression - сжатие таблиц
TestOnly - только тестирование
При наличии ссылок на несуществующие объекты:
BadRefCreate - создавать объекты
BadRefClear - очищать объекты
BadRefNone -не изменять
при частичной потере объектов:
BadDataCreate - создавать объекты
BadDataDelete - удалять объекты
Одновременное использование ключей внутри подгруппы параметров не допускается.
Если команда прошла успешно, возвращает код возврата 0, в противном случае — 1 (101, если в данных имеются ошибки).
После выполнения закрывает систему 1С:Предприятие 8.x.
Параметры командной строки пакетного режима создания файлов поставки и обновления:
/CreateDistributionFiles [-cffile<имя cf файла>] [-cfufile <имя cfu файла> [-f<имя cf файла>|-v<версия дистрибутива>]+] - Создание файлов поставки и обновления
-cffile<имя cf файла> - указание создать дистрибутив
-cfufile<имя cfu файла> - указание создать обновление
-f<имя cf файла> - дистрибутив, включаемый в обновление, задан именем
-v<версия дистрибутива>] - дистрибутив, включаемый в обновление, задан версией
Примечание: группа параметров -f<имя cf файла>|-v<версия дистрибутива> повторяется столько раз, сколько файлов дистрибутивов включается в обновление.
Параметры командной строки режима работы с хранилищем конфигурации:
/DepotF - каталог хранилища
/DepotN - имя пользователя хранилища
/DepotP - пароль пользователя хранилища
/DepotDumpCfg<имя cf файла> [-v<номер версии хранилища>] - сохранить конфигурацию из хранилища в файл (пакетный режим)
-v<номер версии хранилища>
v - номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия.
/DepotUpdateCfg [-v<номер версии хранилища>] [-revised] - Обновить конфигурацию хранилища из файла (пакетный режим)
-v<номер версии хранилища> - номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия, если конфигурация подключена к хранилищу, то параметр игнорируется
-revised - получать захваченные объекты, если потребуется. Если конфигурация не подключена к хранилищу, то параметр игнорируется.
Параметры командной строки пакетного режима регистрации 1С:Предприятия 8.x в качестве Automation сервера:
/RegServer - регистрация приложения
/UnregServer - удаление регистрации приложения
После выполнения закрывает систему 1С:Предприятие 8.x.
Если значения параметров включают пробелы (например, путь или имя файла), значения должны быть заключены в кавычки.
Ниже приведены примеры командной строки для запуска системы 1С:Предприятие 8.x: С:\1CV8\BIN\1CV8.EXE ENTERPRISE /FDB
Приведенная командная строка означает, что система 1С:Предприятие 8.x будет запущена в режиме «1С:Предприятие», а информационная база находится в подкаталоге «\DB» каталога «С:\1CV8\BIN».
С:\1cv81bin\1cv8.exe enterprise /s Serv06\ZUP /L RU
А эта приведенная командная строка означает, что система 1С:Предприятие 8.x будет запущена в режиме «1С:Предприятие», адрес информационной базы ZUP, хранящейся на сервере 1С:Предприятия Serv06 и интерфейс Русский
Для снятия блокировки установки соединений с информационной базой нужно:
Войти в информационную базу, используя параметр запуска "/UC" с тем же кодом разрешения доступа, который был указан при установке блокировки. Запустить данную обработку, указав в качестве действия блокировки "Снять блокировку соединений". Нажать кнопку "Выполнить".
в cmd start C:\Progra~1\1cv81\bin\1cv8.exe /UC <код доступа>
в ярлыке "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"D:\Конфигурации\Типовые\УпрТорг" /N"ИмяПользователя" /P"Пароль" /UC 456743
в 1C v 8 :
список зарегистрированных информационных баз хранится в текстовом файле v8ib.lst (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1Cv8\v8ib.lst
в 1C v 8.1 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv81 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1Cv81\ibases.v8i
Если открыть этот файл в NotePad.exe, то видно, что он имеет структуру, схожую со стандартным INI-файлом :
[База Разработки]
Connect=File="F:\1C\1Cv8\DBRaz";
ID=1cd97bfa-4e57-4a23-9ee1-073a0a28e01c
OrderInList=16384
Folder=/
OrderInTree=16384
[Enterprise]
Connect=File="F:\1C\1Cv8\1cv8.db\Enterprise";
ID=647840fa-65e0-44e8-ad40-12476f178b92
OrderInList=20480
Folder=/
OrderInTree=32768
в 1C v 8.2 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \Application Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\Application Data\1C\1CEStart\ibases.v8i
Если открыть этот файл в NotePad.exe, то там:
[1C:Документооборот 8 (демо)]
Connect=File="C:\Documents and Settings\E.S.Migachev\Мои документы\1C\DemoDoc8";
ID=b3b46c21-bd2a-481e-b100-e6cbdcba3e3d
OrderInList=16384
Folder=/
OrderInTree=256
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2
Структура хранения информации по каждой информационной базе :
<Наименование информационной базы>
<ID>
<Connect>
<Folder>
<OrderInList>
<OrderInTree>
Где:
Connect - строка соединения с информационной базой,
ID - внутренний идентификатор информационной базы,
OrderInList - порядок в списке при представлении списком
Folder - наименование ветви в дереве информационных баз,
OrderInTree - порядок в ветви при представлении деревом.
В 1С 8.1 еще добавили External - но он всегда равен 0, для чего он пока не известно.
В 1С 8.2 добавлено:
ClientConnectionSpeed=Normal - скорость соединения
App=Auto - тип соединения - толстый, тонкий клиент.
WA=1
Version=8.2
Вот код получения получения списка баз из файла 1С 8.0 8.1 8.2
Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных "zup" заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы
sys. databases HRESULT=80040E14, SQLStvr: Error state=2, Severity=11,native=9002, line=1
или
Ошибка СУБД: Microsoft OLE Provider for SQL Server: The transaction log for database “DataBase” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column is sys.database
HRESULT=80040E14, SQLSTATE=4 2000, native=9002
Решение:
1. Посмотрите сколько свободного места осталось на дисках, может его нет и логу некуда записаться...
2. Это ошибка Microsoft SQL Server - переполняется лог транзакций и не очищается. Урезать его возможно различными способами, в том числе и с помощью стандартной оснастки, но не всегда данная операция получается, и размер файла лога остается прежним. Как вариант предлагаю следующее решение из двух строчек: для использования убрать символ _
Где myDataBase – имя базы данных, 20 – Размер лога в мегабайтах.
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Решение проблемы:
1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация - "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.