В современном мире люди используют Интернет не только для поиска информации, но и для приобретения каких либо товаров и услуг. Поэтому организации, например имеющие статус среднего бизнеса, стараются разместить свои прайс-листы в интернете или даже создать Интернет-магазин. Создать его не так-то просто. Если вы имеете «реальный» бизнес и используете определенную систему учета товаров (или услуг), нужно учитывать несколько немаловажных факторов:
* Каждый уважающий себя Интернет-магазин должен показывать остаток товара на складе, а также не показывать тот товар, которого уже нет в наличии. (а может быть что товар есть на разных региональных складах)
* Цены не должны расходиться с ценами в реальном магазине. Не учитывая доставку, хотя и это уже давно стало бесплатным практически везде.
Я привел только 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 использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ(). В частности, приведенный пример можно переписать в виде:
Утилита администрирования клиент-серверного варианта предназначена для решения следующих задач:
* создание, изменение и удаление кластеров серверов;
* модификация существующих кластеров: создание, изменение параметров и удаление рабочих серверов, рабочих процессов кластера, информационных баз, входящих в состав кластера;
* управление списками администраторов центральных серверов кластеров и списками администраторов кластеров;
* мониторинг соединений пользователей с информационными базами и служебных соединений;
* отключение пользователей от информационной базы;
* мониторинг объектных блокировок 1С:Предприятия 8 и блокировок клиентского соединения;
* оперативный анализ транзакционных блокировок системы управления базами данных;
* управление блокировкой установки соединений пользователей с информационной базой;
* управление блокировкой выполнения регламентных заданий.
Утилита представляет собой подключаемый модуль MMC (Microsoft Management Console), и может быть использована на компьютерах, на которых установлено соответствующее программное обеспечение (для операционных систем Windows 2000/XP/Server 2003 это программное обеспечение является стандартным). Все функции администрирования сервера 1С:Предприятия 8 также доступны средствами встроенного языка.
Блокировка установки соединений пользователей с информационной базой
Блокировка установки соединений пользователей с информационной базой позволяет запретить пользователю соединение с информационной базой в заданный период времени.
При этом администратор системы может указать сообщение, которое будет выдано пользователю, при попытке соединения:
Такая возможность позволяет упростить администрирование системы в тех случаях, когда для выполнения регламентных операций с информационной базой требуется монопольный доступ к базе данных. Блокировка установки соединений пользователем может быть выполнена как интерактивно, так и средствами встроенного языка.
Блокировка выполнения регламентных заданий
Блокировка выполнения регламентных заданий позволяет запретить автоматический запуск регламентных заданий (в соответствии с расписанием) в тех случаях, когда их выполнение может затруднить регламентные действия с информационной базой, например, обновление конфигурации. Блокировка выполнения регламентных заданий может быть установлена для каждой информационной базы в отдельности как в процессе создания, так и в процессе работы информационной базы(в свойствах ИБ).
Блокировка выполнения регламентных заданий в процессе создания ИБ:
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из четырех систем управления базами данных (СУБД): * Встроенную в 1С:Предприятие 8.1 (файловый вариант информационной базы). В этом случае все данные информационной базы хранятся в файле с именем 1Cv8.1CD. Этот файл имеет двоичный формат и по сути является базой данных для встроенной в 1С:Предприятие 8.1 СУБД. * Microsoft SQL Server (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных Microsoft SQL Server. * PostgreSQL (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных PostgreSQL. * IBM DB2 (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных IBM DB2.
На уровне объектов базы данных (таблиц, полей, индексов и т. п.) как файловый так и клиент-серверный вариант информационной базы имеют сходный формат (отличающийся несущественными деталями). Некоторая информация об этом формате содержится ниже.
Вся информационная база представляется в базе данных в виде набора таблиц. Среди них есть несколько таблиц, которые обязательно присутствуют в представлении любой информационной базы:
* Config - основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия. * ConfigSave - конфигурация, редактируемая Конфигуратором. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе, а наоборот - при выполнении в Конфигураторе операции "Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД". * Files содержит служебную информацию, например, о работе с хранилищем конфигурации. * Params содержит параметры информационной базы. Среди них: => Список пользователей информационной базы. => Национальные настройки информационной базы. => Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов). => Некоторая другая информация. * _YearOffset - смещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server. * DBSchema содержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой.
При старте 1С:Предприятие проверяет наличие в информационной базе перечисленных таблиц и в случае отсутствия какой-нибудь из них выдается сообщение "информационная база разрушена". Отсутствие всех перечисленных таблиц означает, что информационная база пустая. В последнем случае эти таблицы будут созданы.
Перечень и структура других таблиц базы данных определяется конкретной конфигурацией, а именно, определенными в ней объектами метаданных. Имя каждой таблицы состоит из буквенного префикса и следующего за ним номера. Префикс определяет назначение таблицы, а номер позволяет различать таблицы одинакового назначения, относящиеся к разным объектам метаданных. Если в качестве СУБД используется IBM DB2, то описанную структуру имеют не имена таблиц, а их псевдонимы.
Если в конфигурации определен хотя бы один план обмена с установленным флагом "Распределенная информационная база", то будут созданы следующие таблицы:
* _ConfigChangeRec - таблица регистрации изменений объектов конфигурации. * _ConfigChangeRec_ExtProps - таблица имен файлов измененных внешних свойств объектов конфигурации.
Ниже перечислены различные объекты метаданных, которым могут соответствовать те или иные таблицы.
* Константы => _Consts содержит текущие значения всех констант, определенных в конфигурации. => _ConstsChangeRec - таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена. * Планы обмена => _Node<n> - таблица плана обмена. => _Node<n>_VT<k> - табличная часть плана обмена, создается для каждой табличной части. * Справочники => _Reference<n> - таблица справочника. => _Reference<n>_VT<k> - табличная часть справочника - для каждой табличной части. => _ReferenceChangeRec<n> - таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена. * Документы => _Document<n> - таблица документов для каждого объекта метаданных "документ". => _Document<n>_VT<k> - табличная часть документа - для каждой табличной части каждого документа. => _DocumentChangeRec<n> - таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена. * Последовательности документов => _Sequence<n> - таблица регистрации документов - для каждой последовательности. => _SequenceBoundary<n> - таблица границ последовательности - для каждой последовательности. => _SequenceChangeRec<n> - таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена. * Журналы документов. => _DocumentJournal<n> - таблица журнала документов, создается для каждого журнала документов. * Перечисления => _Enum<n> - таблица перечисления - по одной для каждого перечисления. * Планы видов характеристик => _Chrc<n> - основная таблица плана видов характеристик. => _Chrc<n>_VT<k> - табличная часть плана видов характеристик - для каждой табличной части. => _ChrcChangeRec<n> - таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена. * Планы счетов => _Acc<n> - основная таблица плана счетов. => _Acc<n>_ExtDim<k> - таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля. => _Acc<n>_VT<k> - табличная часть плана счетов, создается для каждой табличной части плана счетов. => _AccChangeRec<n> - таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена. * Планы видов расчета => _CalcKind<n> - основная таблица плана видов расчета. => _CalcKind<n>_BaseCK - таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит". => _CalcKind<n>_DisplacedCK - таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия". => _CalcKind<n>_LeadingCK - таблица ведущих видов расчета - для каждого плана видов расчета. => _CalcKindDN<n> - вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия". => _CalcKind<n>_VT<k> - табличная часть плана видов расчета, создается для каждой табличной части. => _CalcKindChangeRec<n> - таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена. * Регистры сведений => _InfoReg<n> - таблица движений регистра сведений. => _InfoRegChangeRec<n> - таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена. * Регистры накопления => _AccumReg<n> - таблица движений регистра накопления. => _AccumRegTotals<n> - таблица итогов регистра накопления, если регистр поддерживает остатки. => _AccumRegTurnovers<n> - таблица оборотов регистра накопления, если регистр поддерживает обороты. => _AccumRegChangeRec<n> - таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена. => _AccumRegOptions - таблица настроек хранения итогов регистров накопления одна на все регистры накопления. * Регистры бухгалтерии => _AccntReg<n> - таблица движений регистра бухгалтерии. => _AccntRegED<n> - таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля. => _AccTtl0<n> - таблица итогов по счету. => _AccTtl<i><n> - где i от 1 до максимального количества субконто. Таблица итогов по счету с количеством видов субконто равным i. => _AccTtlC<n> - таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию. => _AccntRegChangeRec<n> - таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена. => _AccntRegOptions - таблица настроек хранения итогов одна на все регистры бухгалтерии. * Регистры расчета => _CalcReg<n> - таблица движений регистра расчета. => _CalcRegActPer<n> - таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия". => _CalcRegChangeRec<n> - таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена. => _CalcRegRecalc<n> - таблица перерасчета регистра расчета, создается для каждого перерасчета. => _CalcRegRecalcChangeRec<n> - таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена. * Бизнес-процессы => _BPRoutePoint<n> - таблица точек маршрута бизнес-процесса для каждого бизнес-процесса. => _BusinessProcess<n> - основная таблица бизнес-процесса. => _BusinessProcess<n>_VT<k> - табличная часть бизнес-процесса для каждой табличной части. => _BusinessProcessChangeRec<n> - таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена. * Задачи => _Task<n> - основная таблица задачи. => _Task<n>_VT<k> - табличная часть задачи для каждой табличной части. => _TaskChangeRec<n> - таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена.
При использовании IBM DB2 префиксы псевдонимов таблиц начинаются не с символа подчеркивания, а сразу с буквенной части.
Количество этих таблиц зависит от функциональности конфигурации и может быть достаточно большим. В штатном режиме 1С:Предприятие не выполняет проверку их наличия, а также целостности и непротиворечивости содержащихся в них данных. Поэтому важно, чтобы база данных, в которой размещена информационная база 1С:Предприятия 8.1, была защищена от несанкционированного доступа и ее модификация выполнялась только средствами 1С:Предприятия. Для проверки необходимо использовать функцию "Администрирование - Тестирование и исправление", встроенную в конфигуратор.
Важно также, чтобы резервное копирование и восстановление базы данных, хранящей информационную базу, выполнялось только целиком. С этой целью рекомендуется использование средств резервного копирования баз данных, встроенных в в используемую СУБД. Резервное сохранение файлового варианта информационной базы может быть выполнено копированием файла 1Cv8.1CD.
В конфигураторе есть специальная функция: Администрирование - Выгрузить информационную базу. С ее помощью можно выгрузить в указанный файл (файл выгрузки) все данные, относящиеся к информационной базе, и больше никакие. Обратная ей функция "Загрузить информационную базу" позволяет в текущую информационную базу вместо существующих загрузить все данные из файла выгрузки. Эти функции также можно использовать для резервного копирования данных информационной базы как в файловом так и в клиент-серверном варианте. Как просмотреть структуру таблиц информационной базы?
Профайлы содержат информацию, не оказывающую влияния на логику функционирования системы на базе 1С:Предприятия 8.1. Такая информация не является необходимой, но ее сохранение может, например, повысить комфортность работы пользователя. В профайлах можно хранить формат и расположение окон и диалогов, настройки шрифтов, цветов, отборов и т. п. Потеря такой информации НЕ может привести к нарушению работоспособности системы.
Профайлы различаются по принадлежности хранимой в них информации. Примеры хранимых данных и их расположение: - Настройки текстового редактора.
<Данные приложений пользователя>/1C/1Cv81/1Cv8.pfl, например: C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8.pfl
Информационная база - Режим аутентификации при старте 1С:Предприятия из отладчика.
- Каталог последнего сохранения хранилища конфигурации в файл.
Таблица files базы данных, в которой размешена информационная база.
Информационная база и пользователь - Настройки динамических списков.
- Настройки отборов по журналу регистрации.
Таблица files базы данных, в которой размешена информационная база.
Компьютер и информационная база - Настройки сравнения файлов конфигураций.
- Настройки глобального поиска по текстам конфигурации.
<Данные приложений пользователя>/1C/1Cv81/<Идентификатор информационной базы>/1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/1Cv8.pfl
Компьютер, информационная база и пользователь - Расположение окна синтакс - помощника.
- Список переменных для быстрого просмотра в отладчике.
<Данные приложений пользователя>/1C/1Cv81/<Идентификатор информационной базы>/<Идентификатор пользователя>/1Cv8.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8.pfl
1С:Предприятие 8.1 в режиме Конфигуратора - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
<Данные приложений пользователя>/1C/1Cv81/1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8cmn.pfl
1С:Предприятие 8.1 в режиме Предприятия - Расположение окон конфигуратора.
- Цвета редактора модулей в конфигураторе.
<Данные приложений пользователя>/1C/1Cv81/<Идентификатор информационной базы>/<Идентификатор пользователя>/1Cv8cmn.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/ 4129dbdb-b495-41cb-99ea-ef315060a03e/ E8D87DA4-A087-4145-95E7-D613E0F7CB64/1Cv8cmn.pfl
Диалог запуска 1С:Предприятия 8.1 - Размеры и расположение диалога запуска.
- Настройки диалогов установки параметров информационных баз.
<Данные приложений пользователя>/1C/1Cv81/1Cv8strt.pfl, например:
C:/Documents and Settings/User/Application Data/1C/1Cv81/1Cv8strt.pfl
Данные из профайлов читаются при старте 1С:Предприятия 8.1 и записываются при его штатном завершении. По этой причине в случае нештатного завершения некоторые пользовательские настройки могут не сохраниться.
Наряду с профайлами в каталоге данных приложения могут содержаться и другие файлы с информацией, сохранение которой делает работу пользователей с 1С:Предприятием 8.1 более удобной. Среди них:
def.usr - хранится в каталоге <Данные приложений пользователя>/1C/1Cv8/<Идентификатор информационной базы> (например, C:/Documents and Settings/User/Application Data/1C/1Cv81/4129dbdb-b495-41cb-99ea-ef315060a03e/def.usr) и содержит имя пользователя который последним открывал данную информационную базу. ibases.v8i - хранится в каталоге <Данные приложений пользователя>/1C/1Cv81 (например, C:/Documents and Settings/User/Application Data/1C/1Cv81/ibases.v8i) и содержит список информационных баз, зарегистрированных на данном клиентском компьютере. Этот список отображается в диалоге "Запуск 1С:Предприятия". v8cscadr.lst - хранится в каталоге <Данные приложений пользователя>/1C/1Cv81 (например, C:/Documents and Settings/User/Application Data/1C/1Cv81/v8cscadr.lst) и содержит адрес каталога шаблонов конфигураций. GenTempl.st - стандартный файл шаблонов текста расположен в каталоге загрузочных модулей 1С:Предприятия (например C:/Program Files/1CV81/bin). appsrvrs.lst - хранится в каталоге <Данные приложений пользователя>/1C/1Cv81 (например, C:/Documents and Settings/User/Local Settings/Application Data/1C/1Cv81/appsrvrs.lst) и содержит список серверов 1С:Предприятия, зарегистрированных в утилите администрирования информационных баз в варианте клиент-сервер. srvribrg.lst - хранится на центральном сервере кластера в каталоге <рабочий каталог центрального сервера> (например, C:/Program Files/1cv81/server/srvribrg.lst) и содержит список кластеров, зарегистрированных на данном компьютере сервера 1С:Предприятия. Содержащиеся в нем данные необходимы для нормальной работы приложений, использующих данный сервер 1С:Предприятия. В каталогах DBNameCache, ConfigSave, Config, SICache хранится множество файлов, кеширующих различные компоненты конфигурации. Эта информация является производной от конфигурации информационной базы, хранимой в базе данных, и служит для ускорения запуска клиентских приложений и повышения их производительности. Кеш конфигурации располагается в каталоге данных приложений текущего пользователя, например, C:/Documents and Settings/User/Local Settings/Application Data/1C/1Cv81/7b0a6294-d6a3-41c5-a23e-dc9e5301ad22/DBNameCache. В каталоге 1Cv8FTxt хранятся данные, используемые службой полнотекстового поиска. Они располагаются на компьютере центрального сервера 1С:Предприятия в каталоге <рабочий каталог кластера>/<идентификатор информационной базы>. Например: C:/Program Files/1cv81/server/reg_1541/7eac7609-c0cb-4701-83cf-9ff5f8961de8/1Cv8FTxt. Группа файлов CACHE/ddb<n>.snp хранится в каталоге хранилища конфигурации и служит для кэширования запрошенных версий конфигурации из этого хранилища. Наличие этих файлов не является обязательным и позволяет ускорить получение версий конфигурации.
Временные данные нужны только в течение нескольких пересекающихся во времени или одного сеанса 1С:Предприятия.
К нескольким пересекающимся во времени сеансам относятся данные совместного использования, которые относятся к файловой информационной базе в целом и нужны, в частности, для реализации блокировок данных информационной базы. Такие данные хранятся в том же каталоге, что и файл информационной базы.
* Файл 1Cv8.1cl является носителем блокировок объектов базы данных, расположенной в файле 1Cv8.1cd.
* Файл 1Cv8Tmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей.
* Файл 1Cv8Tmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8Tmp.1cd.
Для хранилища конфигурации 1С:Предприятие 8.х в режиме Конфигуратора создает временные файлы аналогичного назначения, расположенные в каталоге хранилища конфигурации:
* Файл 1Cv8ddb.1cl является носителем блокировок данных из хранилища конфигурации.
* Файл 1Cv8dtmp.1cd хранит служебную сеансовую информацию, в частности список активных пользователей хранилища конфигурации.
* Файл 1Cv8dtmp.1cl является носителем блокировок данных, расположенных в файле 1Cv8ddb.1cd.
Данные, используемые только в течение одного сеанса 1С:Предприятия, размещаются во временных файлах, создаваемых в каталоге, определенном в системе Microsoft Windows как каталог временных файлов. При этом для клиентского приложения используется каталог временных файлов текущего пользователя Windows, например, C:\Documents and Settings\User\Local Settings\Temp. Для сервера 1С:Предприятия используется или системный каталог временных файлов или каталог данных приложений пользователя, от имени которого запускаются рабочие процесса сервера 1С:Предприятия, например, C:\WINNT\Temp. Как очистить кэш 1С?
Если такое происходит, обратите внимание на следующее:
Посмотрите, какой режим восстановления (Recovery) стоит на закладке Options в свойствах базы данных. Он бывает Simple (простой, который требует наименьшего администрирования) или Full (полный, который обеспечивает наилучшую возможность восстановления данных после сбоя). В режиме Full возможен рост журнала транзакций (LDF), поскольку изменения базы данных накапливаются в этом журнале.
Уменьшение журнала транзакций зависит от операции резервного копирования (backup): если не делать резервное копирование, то лог транзакций в режиме Full будет расти.
Обратите внимание на пункт контекстного меню "Shrink Database" (shrink - англ. усадка, усушка, уменьшение). Эта операция уменьшает размер базы данных путем "удаления неиспользуемых страниц" ("remove unused pages").
В свойствах базы данных есть опция "Auto Shrink", которая активизирует автоматическое уменьшение базы, во время периодических проверок неиспользуемого места ("during periodic checks for unused space").
Для базы данных предприятия в свойствах базы я установил опцию Full Recovery. На этой же закладке я установил флажок Auto Shrink. Базу надо периодически архивировать, для чего я настроил автоматическое архивирование базы данных (каждое утро) и журнала транзакций (каждые 10 минут).
Режим восстановления базы данных:
Режимы восстановления базы данных (recovery models) баз данных SQL Server 2005, полное протоколирование (full), неполное протоколирование (bulk-logged), простая модель восстановления (simple)
Одно из важных решений, которые нужно принять при создании базы данных — в каком режиме восстановления будет работать база. Этот параметр выбирается на вкладке Options свойств базы данных в строке Recovery Model (Режим восстановления) (над списком остальных параметров). Изменить режим восстановления базы данных можно также при помощи команды A_lter DATABASE.
Всего предусмотрено три режима восстановления базы данных: Full (режим полного протоколирования) — в этом режиме максимальное количество операций записывается в журнал транзакций. Журнал транзакций автоматически не обрезается. Этот режим обеспечивает максимальные возможности восстановления (за счет снижения производительности). Только в этом режиме вы можете использовать зеркальное отображение баз данных и автоматическую доставку журналов (log shipping). Именно этот режим выбирается по умолчанию для пользовательских баз данных, поскольку он настроен для базы данных model. Если изменить режим восстановления для базы данных model, то для создаваемых баз данных по умолчанию будет выбираться новый режим.
Bulk-logged (режим неполного протоколирования) — это компромисс между требованиями производительности и возможностями восстановления. При использовании этого режима запись в журнал практически отключается (в терминологии Microsoft — проводится минимальное протоколирование) для операций следующих типов:
- массовой вставки (команды BULK I_nsert, S_elect INTO, загрузка средствами bcp и т. п.);
- вставка/изменение больших двоичных данных (text, ntext, image);
- операции по созданию, перестроению и удалению индексов.
Автоматическая перезапись журналов транзакций при этом не производится, работа с транзакциями, не включающими в себя перечисленные операции, производится как обычно.
При работе в этом режиме вы лишаетесь возможности использовать журнал транзакций для восстановления (при утрате файлов данных, на момент времени или на метку транзакции), если в нем была хотя бы одна запись о перечисленных ранее операциях. Microsoft рекомендует не использовать этот режим восстановления на постоянной основе, а переключаться в него из режима Full на время выполнения больших операций массовой вставки, а потом возвращаться обратно.
Simple (простая модель восстановления) — максимальный выигрыш в производительности и удобстве работы за счет возможностей восстановления. Минимально протоколируются те же операции, что и в режиме восстановления Bulk-logged, а кроме этого, журнал транзакций автоматически очищается (блоками, размер которых изначально равен 256 Кбайт, но при необходимости он может быть автоматически увеличен). В результате вы получаете максимальную производительность и возможность не думать о потенциальной нехватке места в журнале транзакций. Но в этом режиме использовать журнал транзакций для восстановления уже не удасться. Вы не сможем даже выполнить резервное копирование журнала транзакций: команда BACKUP LOG в этом режиме сразу вернет ошибку.
Какой же режим восстановления выбрать?
Microsoft (в своих учебных курсах) рекомендует для рабочих баз данных выбирать только режим Full. Однако из опыта проведения автором этих самых учебных курсов и общения со слушателями можно сказать, что очень многие опытные администраторы сознательно настраивают для своих баз данных режим восстановления Simple. Значительное повышение производительности при операциях массовой вставки и при работе с большими двоичными данными вполне оправдывает некоторое снижение возможностей резервного копирования и восстановления. Что важнее для вашей задачи — дополнительные возможности восстановления или максимальная производительность, решать вам. Рост журнала транзакций в 1С MS SQL Server
Задача: Ноутбук с Windows 7 (Домашняя версия) должен работать с офисной ИБ 1С8. В офисе компьютеры объединены в домен, соответственно контроллер домена не пускает «чужой» компьютер к своим ресурсам.
Переустанавливать ОС крайне нежелательно, всевозможные попытки изменения настроек домена результатов не дали. Выход достаточно прост.
Для нормальной работы необходимо:
1. На контроллере домена создать VPN соединение;
2. На ноутбуке настроить подключение к этому VPN соединению;
3. На ноутбуке изменить файл маршрутизации к сетевому ключу 1С8.
После установки платформы 1С, до подключения VPN, при запуске программа выдает сообщение: «Ошибка при выполнении файловой операции …»
После подключения к сети через VPN при стандартном файле netstart.ini выдается сообщение: «Не обнаружен ключ защиты программы»
Для поиска ключа в сети необходимо изменить этот файл (он находится в папке “C:\Prorgam Files\1cv81\bin\conf”). Для его изменения нужно обладать правами администратора на ноутбуке.
Файл nethasp.ini должен содержать строки:
При этом HASP драйвер ноутбука напрямую через порт 475 обращается к компьютеру с установленным ключем. Компьютер с адресом 192.168.0.10 (где находится ключ 1С) должен иметь постоянный (статический) адрес в сети, иначе этот файл придется постоянно редактировать.
Лишние настройки в файле nethasp.ini сбивают нормальную работу программы. Все эти настройки также работают с ОС Vista.
Автор: daulberg
Сообщение «Ошибка загрузки внешней компоненты для склонения ФИО! Функции склонения будут недоступны!» при запуске конфигурации «1С:Предприятие Зарплата и Управление Персоналом 2.5 появляется в случае отсутствия компоненты NameDecl.dll или если данная компонента не зарегистрирована в системе (обычно это бывает после установки платформы 1cv8 не под правами администратора операционной системы).
В случае отсутствия компоненты, ее можно найти на диске ИТС и переписать в каталог /bin/ установленной платформы «1С:Предприятие 8.
Если после этого ошибка все равно остается (такое возможно, например, при работе под управлением ОС «Windows Vista» или «Windows 7) – необходимо зарегистрировать компоненту «вручную».
Для этого в командной строке ОС можно набрать команду regsvr32 «[Путь к DLL]\NameDecl.dll» и выполнить ее под правами администратора.
Здесь [Путь к DLL], скорее всего, для платформы 1cv81 – «С:\Program Files\1Cv81\bin\», а для платформы 1cv82 – «С:\Program Files\1cv82\8.2.9.356\bin\». При наборе пути к файлу необходимо заключить его в двойные кавычки.
Если при регистрации таким способом возникла ошибка – «Модуль «[Путь к DLL]\NameDecl.dll» загружен, но не удалось выполнить вызов DllRegisterServer, код ошибки 0х80070005, то можно попробовать выйти из положения следующим образом:
1. На компьютере находим файл NameDecl.dll (скорее всего, для платформы 1cv81 он находится в «С:\Program Files\1Cv81\bin\», а для платформы 1cv82 в «С:\Program Files\1cv82\8.2.9.356\bin\»). Для найденного файла создаем ярлык и выносим его на рабочий стол.
2. На рабочем столе правой кнопкой мыши вызываем свойства этого ярлыка.
3. В свойствах на закладке «Ярлык» в окне «Объект» перед путем к файлу вставляем команду regsvr32 (помним, что путь должен быть в двойных кавычках).
4. На этой же закладке свойств ярлыка жмем на кнопку «Дополнительно». В открывшемся диалоге устанавливаем флажок «Запуск от имени администратора» и сохраняем внесенные изменения.
5. Запускаем ярлык для регистрации компоненты NameDecl.dll (обычно запуск регистрации через ярлык достаточно произвести один раз).
6. После регистрации компоненты ярлык можно удалить.