Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса - получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.
Текст запроса – это инструкция, в соответствии с которой должен быть выполнен запрос. В тексте запроса описывается:
таблицы информационной базы, используемые в качестве источников данных запроса;
поля таблиц, которые требуется обрабатывать в запросе;
правила группировки;
сортировки результатов;
и т. д.
Инструкция составляется на специальном языке – языке запросов и состоит из отдельных частей – секций, предложений, ключевых слов, функций, арифметических и логических операторов, комментариев, констант и параметров.
Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.
Рекомендации по написанию запросов к базе данных на языке запросов платформы 1С:
1) Текст запроса может содержать предопределенные данные конфигурации, такие как:
значения перечислений;
предопределенные данные:
справочников;
планов видов характеристик;
планов счетов;
планов видов расчетов;
пустые ссылки;
значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии. Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа ЗНАЧЕНИЕ. Данный литерал позволяет повысить удобочитаемость запроса и уменьшить количество параметров запроса.
Пример использования литерала ЗНАЧЕНИЕ:
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1
2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.
Автоупорядочивание работает по следующим принципам:
Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения. Пример:
Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ - предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!
4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса. Пример:
Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.
Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.
5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.
6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица. Пример:
7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку. Пример:
8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка. Пример:
9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.
10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.
Пример (поиск документов, содержащих в табличной части определенный товар):
Преимущество этого запроса перед запросом к подчиненной таблице Приходная.Товары в том, что если есть дубли в документах, результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
11) Интересный вариант оператора В - это проверка вхождения упорядоченного набора в множество таких наборов (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).
Пример:
12) При любой возможности используйте виртуальные таблицы запросов. При создании запроса система предоставляет в качестве источников данных некоторое количество виртуальных таблиц - это таблицы, которые так же являются результатом запроса, который система формирует в момент выполнения соответствующего участка кода.
Разработчик может самостоятельно получить те же самые данные, которые система предоставляет ему в качестве виртуальных таблиц, однако алгоритм получения этих данных не будет оптимизирован, так как:
Все виртуальные таблицы параметризованы, т. е. разработчику предоставляется возможность задать некоторые параметры, которые система будет использовать при формировании запроса создания виртуальной таблицы. В зависимости от того, какие параметры виртуальной таблицы указаны разработчиком, система может формировать РАЗЛИЧНЫЕ запросы для получения одной и той же виртуальной таблицы, причем они будут оптимизированы с точки зрения переданных параметров.
Не всегда разработчик имеет возможность получить доступ к тем данным, к которым имеет доступ система.
13) В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется. В большинстве случаев эти правила не оказывают влияния на выполнение запроса, но бывают случаи, когда для выполнения запроса существенна максимальная длина строки результата, вычисленная 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
Чтобы избежать такой ошибки, не рекомендуют использовать функцию ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
14) С осторожностью используйте ИЛИ в конструкции ГДЕ, так как использование условия с ИЛИ может значительно "утяжелить" запрос. Решить проблему можно конструкцией ОБЪЕДИНИТЬ ВСЕ. Пример:
15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 ... ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL. Пример:
16) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.
17) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка:
Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe
«Содержимое указанного ниже веб-узла в этом приложении блокировано конфигурацией усиленной безопасности Internet Explorer».
Ошибка исчезает после многократного нажатия на «Закрыть», что несколько мешает работать, мягко говоря. Похожая ошибка бывает и в конфигураторе, при обновлении конфигурации или сравнении/объединении конфигураций. Чаще всего, мне попадалась эта проблема в серверных ОС, в частности Windows 2008 r2.
Решение: нужно добавить исключение в настройках безопасности Internet Explorer (далее & IE).
Это делается просто, если у вас один или несколько компьютеров & просто открываете IE/Свойства обозревателя/Безопасность/Надёжные узлы/Сайты, добавляете Aboutsecurity_1cv8c.exe и Aboutsecurity_1cv8.exe, нажимаете Ок, и наслаждаетесь результатом.
Но вот если у вас терминал-сервер и 40/60 пользователей, или еще хуже & пользователей 150 и они ходят в SQL версию 1С с локальных рабочих станций, то бегать по всем корпусам и добавлять эту настройку весьма накладно по времени, да и отвлекать пользователей лишний раз от работы не порядочно.
В этом случае, нужно пользоваться групповыми политиками домена (который у вас должен быть настроен, если вы не офисный спортсмен-бегун).
Вариант №1. Неудавшийся.
Первое решение & прописать настройки через Group Polices (Административные шаблоны/Компоненты Windows/Internet explorer/Вкладка «Безопасность»/Список назначений зоны для веб-сайтов) & не увенчалось успехом. Настройки пользователей, как и обещалось в статьях по данному методу, перестали работать, а вот зоны, описанные в этих настройках, работать не начали. При этом, я пробовал добавлять настройки и в локальные политики, и в доменные и в политики контроллера домена. Скорее всего из-за этих экспериментов с разными зонами действия групповых политик и появилась проблема.
И так, после этих манипуляций, в настройках безопасности IE появилась надпись «Некоторыми параметрами управляет системный администратор» и добавлять/удалять сайты узлов безопасности стало невозможно. От этой надписи, почему-то, оказалось не так просто избавиться. Удаление проделанных настроек GPO не разблокировали вкладку «Безопасность», а манипуляции с реестром привели к появлению ошибок «В параметрах зоны есть ошибка. Не удалось добавить сайт.» (IE 10) или «При установке параметров безопасности зоны произошла ошибка. Добавить узел не удается.» (IE 9) & все дальнейшие действия сходили на нет.
Исправить косяк удалось следующим путём:
Обновил Internet Explorer до версии 10 (был 9-й).
Предварительно экспортировав разделы реестра в файл, на случай восстановления, удалил из следующие ключи:
Восстановил настройки Internet Explorer (Свойства обозревателя/Дополнительно/Сброс).
Проверить, что проблема не вернётся можно введя команду gpupdate /force в командной строке. После обновления политики запустите IE и проверьте, что настройки остались на месте. Если настройки опять слетели и добавление сайтов в узлы безопасности стало опять невозможно, то, скорее всего вы забыли отключить параметр «Список назначений зоны для веб-сайтов» в какой-то из зон групповой политики.
Чтобы определить в какой из зон групповых политик засела настройка (в локальных, доменных или контроллера домена), удобно пользоваться мастером отчётов «Результаты групповой политики», который находится в консоли «Диспетчер сервера», в разделе «Компоненты/Управление групповой политикой» (в Windows 2008 r2, по крайне мере он там).
Так что, здесь стоит быть осторожным, чтобы не создать себе дополнительной работы.
Вариант №2. Через GPO и реестр.
Этот метод делается через те же групповые политики, но через прямые записи в реестр, а не манипулирование стандартными настройками.
Что делать:
Удаляем узлы Aboutsecurity_1cv8 из настроек IE, если вы их туда уже добавили вручную & это нужно для чистоты эксперимента. Проверьте, что в 1С ошибка сохранилась.
Небольшая ремарка: подраздел EscDomains используется в режиме расширенной настройки безопасности, если же этот режим отключен по какой-то причине, то нужно использовать раздел Domains вместо EscDomains (подробнее о записях реестра IE см. в базе знаний Microsoft).
И пробуем добавить его в реестр & если срабатывает, и в тонком клиенте 1С ошибка Aboutsecurity_1cv8c.exe исчезает, делаем дальше.
Снова открываем Default Domain Policy в диспетчере управления сервером, далее Конфигурация пользователя/Настройка/Конфигурация Windows/Реестр.
Добавляем туда две записи, где поле «Путь раздела»:
в первой записи это «Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8c.exe» (для тонкого клиента 1С),
во второй записи «Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8.exe» (для толстого клиента).
В остальном запись содержит те же данные, что и на картинке.
После этого, как положено, перелогиниваемся и проверяем результат. В толстом и тонком клиенте 1С:предприятие, ошибка должна исчезнуть.
В моём случае, для надёжности избавления от проделанных в Варианте №2 настроек, были добавлены ещё три записи в реестр:
Обновить: HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings; параметр: ListBox_Support_ZoneMapKey; значение 0 (тип DWORD десятичный)
Есть ещё вариант, который переключит работу программы в режим интерфейса «Такси» : Администрирование/Настройки программы/Интерфейс & здесь включаем «Интерфейс «Такси»" & в этом режиме данная ошибка не появляется, но пользователям может не понравиться работать с этим вариантом интерфейса, т. к. он предназначен для мобильных устройств и планшетов (например, для работы через Web).
За 2015 год специалистами 1С доработаны сложные моменты, разработаны новые возможности, да и функционал постоянно развивается. Например, разработано 2 сценария перехода и переноса данных, дописан механизм учета оценочных обязательств, разработано множество новых документов. Бывали случаи, когда решения, сделанные по запросу, с выходом очередного релиза включались в типовую конфигурацию.
Тем не менее, на подводные камни можно наткнуться до сих пор.
Один из таких «камней» - галочки «по умолчанию». Например, флажок «Использовать эти же данные при расчете отпусков командировок и др.» в форме «ввод данных для расчета среднего», в документах «Больничный лист», «Отпуск», «Командировка». Этот флажок установлен «по умолчанию». Поэтому после открытия для просмотра формы «ввод данных» и последующего нажатия кнопки «ок», корректно перенесенные данные для расчета среднего заработка отпуска без предупреждений заменятся на данные для расчета больничного листа. Пока за этой галочкой нужно следить.
Настройка интерфейса
В программе реализован спектр возможностей, она предназначена для ведения учета на предприятиях различного масштаба. Часть ее функционала необходима всем предприятиям практически без исключения, часть предусмотренных в ней возможностей требуется только определенным компаниям. Поэтому в начале работы с программой можно явно указать, какой именно функционал нужен для ведения учета на данном конкретном предприятии. Изменить сделанный выбор можно и позже, даже если учет в программе уже ведется. Можно добавить или, напротив, удалить функционал. При добавлении нового функционала в интерфейсе программы появляются новые соответствующие команды, кнопки и т. п., становятся доступны новые объекты и действия (документы, справочники, начисления и т. п.). Если же некий функционал не выбран, то программа не загромождается ничем лишним, не востребованным в данный момент.
Внешний вид и поведение программы могут различаться от предприятия к предприятию в зависимости от выбранных возможностей, а также – от пользователя к пользователю, в зависимости от того, какие права доступа даны.
Возможна и «тонкая донастройка» интерфейса: управлять им можно непосредственно, включая или выключая видимость разделов, элементов, форм и т. п., а также меняя их расположение. Таким образом, теперь для того, чтобы настроить меню и внешний вид рабочего стола, не нужно приглашать программиста.
Справочник «сотрудники»
Расширена возможность создания документов из карточки сотрудника. Карточка сотрудника дополнена ссылками на документы по сотруднику.
Единые документы для кадровика и расчетчика
Единый документ выглядит для расчетчика и для кадровика по-разному. Права доступа ограничены в зависимости от роли. Если же в компании роль кадровика и расчетчика выполняет один человек, можно перенастроить программу для работы одного человека с единым документом.
Пример: Документ «Отпуск» (Кадры)
Количество кадровых документов в редакции 3.0 значительно увеличилось.
Оформление отпуска по уходу за ребенком-инвалидом по разрозненным датам можно формировать одним документом, а не создавать разные приказы на каждый период отпуска.
Некоторые доработки в расчетных документах.
Документ Расчет заработной платы:
Все начисления и удержания удобно собраны в одном документе.
Для облегчения интеграции с программными продуктами фирмы «1С» разработан формат обмена данными EnterpriseData. Формат основан на XML и является бизнес-ориентированным – описанные в нем структуры данных соответствуют бизнес-сущностям (документам и элементам справочников), представленным в программах «1С», например: акт выполненных работ, приходный кассовый ордер, контрагент, договор и т. п. Это делает формат интуитивно понятным и легким в использовании.
Формат EnterpriseData предназначен для обмена данными внутри компании (в том числе между разнородными и территориально удаленными информационными системами) и призван покрыть все сферы деятельности предприятия – финансы, производство, закупки и продажи, складские операции и т. п.
Описание формата
Версия 1.0.1 формата включает в себя описание 94 типов бизнес-сущностей из различных областей бизнеса (подробное описание формата можно найти здесь). Формат является расширяемым – фирма «1С» будет добавлять в него описание новых бизнес-сущностей и расширять существующие сущности новыми полями. Поддержка формата в продуктах фирмы «1С» обеспечивает совместимость снизу вверх – все программы сторонних производителей, обменивающихся данными в формате EnterpriseData с продуктами «1С», при выходе новых версий формата корректно продолжат работу.
Формат предназначен для обмена информацией между любыми информационными системами: он не зависит от особенностей собственного программного обеспечения или структур информационных баз, которые участвуют в обмене и не содержит в себе явных ограничений использования.
Обмен данными с программами «1С»
Предварительная настройка на стороне «1С»
Чтобы начать обмен данными в формате EnterpriseData между приложением «1С» и сторонним приложением, надо на стороне «1С» настроить синхронизацию данных. В ходе настройки указывается уникальный код приложения, с которым будет производиться обмен, а также по какому каналу будет происходить обмен данными. В настоящий момент доступны следующие опции:
веб-сервис,
файловый обмен через каталог,
файловый обмен через FTP.
Обмен через электронную почту
В случае обмена через веб-сервис стороннее приложение будет инициировать сеанс обмена данными путем вызова соответствующих веб-методов приложения «1С». В остальных случаях инициатором сеанса обмена будет приложение «1С».
Также на стороне «1С» настраивается, с какой периодичностью будет происходить синхронизация (для вариантов с файловым обменом через каталог и электронную почту):
по расписанию (с заданной периодичностью);
вручную; пользователь должен будет вручную запускать синхронизацию каждый раз, когда это ему потребуется.
Формат файлов обмена
В ходе синхронизации приложения «1С» и сторонние приложения обмениваются сообщениями – XML-файлами определенной структуры. Эти файлы состоят из двух секций – <Header> и <Body>. Секция <Header> содержит сообщение-квитанцию <Confirmation> (о ней ниже), а <Body> – информацию об измененных бизнес-сущностях в формате EnterpriseData.
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С:
«1C:Enterprise Development Tools» – это инструмент нового поколения для разработчиков бизнес-приложений системы программ «1С:Предприятие 8».
Планируется, что он будет использоваться для создания приложений параллельно с текущим инструментом (конфигуратором). При этом формат разрабатываемых приложений будет полностью соответствовать текущим версиям 1С:Предприятия 8. Преимуществами нового инструмента разработки являются: интегрированная среда разработки (соответствие современным тенденциям и требованиям), быстрое развитие инструментов разработки, возможность расширения инструментов разработки. В DT заложена принципиально новая архитектура, которая обеспечивает большой запас развития для реализации различных механизмов автоматизации разработки и повышения удобства разработки. В ознакомительной версии возможности этой архитектуры задействованы только в небольшой части. В данный момент важно реализовать функциональность, аналогичную конфигуратору, но основное предназначение DT в возможности создания новых мощных инструментов для разработчика.
DT разработан с использованием открытой платформы Eclipse (www.eclipse.org). За счет данной интеграции технологий, инструмент объединил в себе преимущества как инструментов разработки «1С:Предприятия», так и стандартных возможностей Eclipse.
Схема работы Конфигуратора
Конфигуратор (входящий в состав системы программ «1С:Предприятие» версии 8.x) работает с конфигурацией, описывающей прикладное решение. Конфигуратор подключается к информационной базе, в которой (во внутреннем формате) хранится конфигурация. В один момент времени конфигуратор может работать только с одной информационной базой, и, как следствие, только с той конфигурацией, которая хранится в этой информационной базе. Более того, для запуска и отладки используется одна версия платформы «1С:Предприятие» – та, с помощью которой выполняется подключение к информационной базе.
Схема работы «1C:Enterprise Development Tools»
DT предлагает принципиально другую схему работы.
Во-первых, конфигурация хранится не в информационной базе, а в файловой системе. Из этого вытекает возможность использования популярной системы контроля версий (git, svn), что, очевидно, является вторым существенным преимуществом. При этом следует понимать, что DT не реализует работу с системой контроля версий самостоятельно, а использует готовые механизмы платформы Eclipse. Поэтому использоваться может только та система контроля версий, поддержка (расширение) которой есть в Eclipse.
Хранение редактируемой конфигурации в файловой системе, а не в информационной базе, означает, что редактирование конфигурации можно выполнять вообще без системы «1С:Предприятие», установленной на компьютере разработчика. Однако, при необходимости запустить прикладное решение или отладить какой-то механизм, наличие установленной версии «1С:Предприятия» является обязательным.
Главные Enterprise Development Tools отличия от обычного Конфигуратора:
1. Платформа Eclipse и возможность написания своих плагинов для удобства работы
2 . Кросплатформенность, т.е наконец-то можно работать на Mac
3. Конфигурация хранится не в информационной базе, а в файловой системе. Из этого вытекает возможность использования популярной системы контроля версий (git, svn)
4. Разрабатываемая конфигурация может использоваться с разными информационными базами и разными версиями «1С:Предприятия»
5. Одновременно можно редактировать несколько конфигураций
6. Работа в DT имеет некоторые отличия в части работы с объектами конфигурации и сохранения результатов работы, т.к. используется платформа Eclipse
7. Более удобная и быстрая командная разработка
Скачиваем и запускаем установку:
1. Сначала платформу 8.3.6
2. потом Enterprise Development Tools
Скачиваем, разархивируем и запускаем DT.exe и получаем ошибку , но это не проблема
Надо установить Java RE, идем на сайт oracle и скачиваем соответствующую вашей операционной системе версию и устанавливаем
иииииии - барабанная дробь вот она, новая среда разработки:
При первом запуске будет запрошен каталог хранения рабочей области. Установка флажка Use this as the default and do not ask again (Использовать это значение по умолчанию в дальнейшем) приведет к тому, что указанный каталог будет автоматически использовать при последующих запусках DT. Для смены рабочей области следует использовать команду File – Switch Workspace (Файл – Сменить рабочую область).
Открылся 1C: Enterprise Development Tools:
Добавление конфигурации
Добавить конфигурации можно по разному, можно загрузить из файла, можно из файлов, можно из git, а можно через импорт существующей базы.
В правом нижнем углу отображены Информационные базы, импортируем одну для теста:
Появляется окно
Если что-то не так, то изменяем и жмем Готово (Кстати, если база открыта в обычном конфигураторе, то вылетит ошибка!)
Идет импорт, спросит пользователя и пароль...
На моем Core i5 с 6 ГБ оперативки, импорт тестовой базы размером 2.5 мегабайта шел чуть больше минуты. И вот с открытым справочником Номенклатура:
Форма
Модуль (подсветка синтаксиса попроще)
Мгновенное определение ошибок (наведя курсор):
Щелкнув по красному крестику - предлагает решение, Создать Элемен , хотя надо просто дописать букву т
Слева в разделе Схема отражены все функции модуля, можно быстро перемещаться по ним:
Синтаксис-помощник мгновенно показывает информацию по свойству или функции на которой установлен курсор
Еще один интересный раздел, все огрехи в конфигурации:
Схема компоновки данных из отчета:
Так же мгновенно показывает ошибки и недочеты в запросе!
Конструктор запроса выглядит так:
Открыть Перспективу
Отладка - думаю, понятно и не буду останавливаться
Ресурсы - показывает разложенную по файлам конфигурацию. Каждый файл можно открыть для просмотра:
Синхронизация совместной работы - допустим через Git
Git - Подключение к Git
Справочная система
Справка , по сути, как и в обычном конфигураторе, только дополненная, выглядит так:
Использование помощника HelpF.pro
Наш помощник пока работает только под Windows, но вскоре мы скомпилируем под Linux и Mac
Открыв код, жмем Alt+H и в появившемся окне вводим запрос (например проверка это новый?) и жмем Найти
В результатах поиска выбираем нужное нам:
Далее в статье (1) выделяем нужный нам код и (2) жмем появившуюся кнопку Вставить
Результат вставки:
Кроме этого работают и горячие клавиши:
Вот пример нажатия Alt+D (Внимание! Alt - правый, левый работает штатно):
При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта.
Механизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно.
Механизм заданий решает следующие задачи:
Возможность определения регламентных процедур на этапе конфигурирования системы;
Выполнение заданных действий по расписанию;
Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
Получение списка текущих заданий;
Возможность ожидания завершения одного или нескольких заданий;
Управление заданиями (возможность отмены, блокировка выполнения и др.).
Механизм заданий состоит из следующих компонентов:
Метаданных регламентных заданий;
Регламентных заданий;
Фоновых заданий;
Планировщика заданий.
Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.
Регламентные задания & предназначены для выполнения прикладных задач по расписанию. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигурации. Метаданные регламентного задания содержат такую информацию как наименование, метод, использование и т.д.
Регламентное задание имеет расписание, которое определяет, в какие моменты времени нужно выполнять связанный с регламентным заданием метод. Расписание, как правило, задается в информационной базе, но может быть задано и на этапе конфигурирования (например, для предопределенных регламентных заданий).
Планировщик заданий используется для планирования выполнения регламентных заданий. Для каждого регламентного задания планировщик периодически проверяет, соответствует ли текущая дата и время расписанию регламентного задания. Если соответствует, планировщик назначает такое задание на выполнение. Для этого по данному регламентному заданию планировщик создает фоновое задание, которое и выполняет реальную обработку.
С описанием, думаю, хватит - приступим к реализации:
Создание регламентного задания
Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!
Использование – признак использования регламентного задания.
Предопределенное – указывает, является ли регламентное задание предопределенным.
Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное. В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.
Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.
Интервал повтора при аварийном завершении задания – с какой периодичностью будет выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.
Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах
Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.
В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.
После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.
В клиент-серверном варианте для выполнения фоновых заданий используется планировщик заданий, который физически находится в менеджере кластера. Планировщик для всех поставленных в очередь на выполнение фоновых заданий получает наименее загруженный рабочий процесс и использует его для выполнения соответствующего фонового задания. Рабочий процесс выполняет задание и уведомляет планировщик о результатах выполнения.
В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:
На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
В некоторых других случаях (например, при обновлении конфигурации базы данных).
Обработки запуска и просмотра регламентных заданий вы можете скачать здесь:
Что же делать и как это победить, и так по порядку:
Клиенты очень медленно работают с серверной версией 1С
Кроме медленной работы 1С, так же наблюдается медленная работа с сетевыми файлами. Проблема встречается при обычной работе и при RDP
для решения этого, после каждой установки Семерки или 2008-го сервера всегда запускаю
netsh int tcp set global autotuning=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled chimney=disabled
и сеть работает без проблем
иногда оптимальным является:
netsh interface tcp set global autotuning= HighlyRestricted
вот как выглядит установка
Далее посмотрите настройки брандмауэра Windows
Настроить брандмауэр Антивируса или Windows
Как настроить брандмауэр Антивируса или Windows для работы сервера 1С (связка из Сервера 1С: Предприятие и MS SQL 2008, например).
Добавьте правила:
Если сервер SQL принимает подключения на стандартный порт TCP 1433, то разрешаем его.
Если порт SQL динамический, то необходимо разрешить подключения к приложению %ProgramFiles%\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe.
Сервер 1С работает на портах 1541, кластер 1540 и диапазоне 1560-1591. По совершенно мистическим причинам иногда такой список открытых портов все равно не позволяет выполнять подключения к серверу. Чтобы заработало наверняка, разрешите диапазон 1540-1591.
Настройка производительности Сервера / Компьютера
Для того чтобы компьютер работал с максимальной производительностью - нужно настроить его на это:
1. Настройки BIOS
В BIOS сервера отключаем все настройки по экономии электропитания процессора.
Если есть «C1E» & обязательно ОТКЛЮЧАЕМ!!
Для некоторых не очень параллельных задач также рекомендуется выключить гипертрейдинг в биосе
В некоторых случаях (особенно для HP!) надо зайти в BIOS сервера, и ВЫКЛЮЧИТЬ там пункты, в названии которых есть EIST, Intel SpeedStep и C1E.
Взамен надо там же найти пункты, связанные с процессором, в названии которых есть Turbo Boost, и ВКЛЮЧИТЬ их.
Если в биосе есть общее указание режима энергосбережения & включить его в режим максимальной производительности (он ещё может называться «агрессивный»)
2. Настройки схемы в операционной системе - Высокая производительность
Скачайте утилиту PowerSchemeEd.7z , распакуйте с помощь 7zip и запустите PowerSchemeEd.exe
Выберите раздел Управление питанием процессора и выставите параметры 01. Порог при питании от сети 30% и отключите 27. Переопределение ядра... как на картинке.
3. На серверах 1С и MS SQL Server использование антивирусов (даже сам факт инсталяции без включения) будет приводить к снижению производительности в виде периодических массовых замедлений и подвисаний интерфейса.
4. Совмещение ролей сервера 1С и сервера MS SQL Server дает большую производительность, особенно если использовать протокол обмена данных напрямую через память «Shared Memory».
Очень многие не недооценивают важность настройки сервера, когда роли сервера 1С и сервера СУБД совмещены на одном физическом компьютере.
Убедиться, что к примеру используется протокол Shared Memory можно следующим образом:
Обратите внимание, что в версиях платформы некоторые релизы «переключались» на протокол «именнованых каналов».
Для работы 1С Предприятие в режиме Shared Memory с SQL Server 2012 должен быть установлен NativeClient от SQL Server 2008 (backward compatibility connectivity components из дистрибутива SQL Server 2012 или отдельный пакет)
5. Отключение ненужных служб Виндовс
Одним из самых действенных способов ускорения компьютера является отключение неиспользуемых (ненужных) служб операционной системы. У ОС Windows по умолчанию включено огромное количество служб, на работу которых требуется большое количество ресурсов системы. Многие из них можно отключить без потери функциональности и снижения безопасности системы.
Какие службы можно отключить для оптимизации Windows:
Авто настройка WWAN – в том случае, если у Вас нет CDMA или GSM модулей, эту службу можно безболезненно отключить
Адаптивная регулировка яркости – эта служба регулирует яркость экрана при наличии датчика освещенности, если такой датчик отсутствует – отключаем.
Брандмауэр Windows – предназначен для защиты компьютера. Рекомендуется пользоваться сторонними приложениями для этих целей (например, Comodo, KIS, DrWEB и т.п.).
Защитник Windows – отключаем, совершенно ненужная служба!
Служба помощника по совместимости программ (Program Compatibility Assistant) – эту службу можно отключить, только в случае несовместимости программ нужно будет вручную устанавливать параметры, что бывает не так уж часто.
Служба автоматического обнаружения веб-прокси WinHTTP – можно отключать.
Служба политики диагностики (Diagnostic Policy Service) – практически не нужна.
Смарт-карта – если Вы не пользуетесь такими картами, то отключаем.
Удаленный реестр (Remote Registry) – обязательно отключаем в целях безопасности.
Центр обеспечения безопасности (Security Center) – напоминает о различных событиях вроде отсутствия антивируса, устаревших обновлениях и т.п. – отключаем, если не хотите их видеть.
Список, конечно, получился не особо емким, на самом деле служб, которые можно отключить, намного больше. Кроме того, среди стандартных служб появятся дополнительные службы сторонних программ, которые установлены на Вашем ПК, их также можно отключить.
Кэширование записей на дисках в Windows
Кэшированием записей на устройстве хранения называется использование высокоскоростной энергозависимой памяти для накопления команд записи, отправляемых на устройства хранения данных, и их кэширования до тех пор, пока их не обработает более медленный носитель (либо физические диски, либо недорогая флэш-память). Для большинства устройств, использующих кэширование записей, требуется непрерывная подача электропитания.
Для управления кэшированием записей на диске откройте Панель управления - Диспетчер устройств.
В разделе Дисковые устройства дважды щелкните нужный диск.
Ввод сведений о командировках в программе 1С: Зарплата и управление персоналом 8 (ред.30) осуществляется в Разделе Кадры - Все кадровые документы - Создать - Командировка
Откроется документ:
Ввод сведений о командировках в программе 1С: Зарплата и управление персоналом 8 (ред.2.5) осуществляется на двух основных уровнях: кадрового учета и расчета зарплаты.
Итак, в подсистеме кадрового учета вводится документ через меню Кадровый учет → Учет невыходов → Командировки организации, где указываются организация (независимо от того, в разрезе одной или нескольких ведется учета в программе), страна и город назначения, компания, в которую отправляется сотрудник или группа сотрудников, основание командировки, сотрудник/сотрудники, время нахождения, цель командировки и источник финансирования. На основании данного документа в подсистеме кадрового учета возможен ввод документа "Возврат на работу организаций".
Документ, который окажет непосредственное влияние на расчет суммы командировочных называется "Оплата по среднему заработку" и может вводиться через меню Расчет зарплаты по организациям → Неявки. Предназначен документ для начисления сохраняемого за сотрудником среднего заработка, за исключением оплаты компенсации дней отпуска при увольнении или вынужденных простоев.
На основании данных о командировках, введенных документом кадрового учета "Командировки организаций" можно при помощи обработки «Анализ неявок» автоматически ввести необходимое количество документов «Оплата по среднему заработку»: окрыть данную обработку из документа "Командировки организаций" по кнопке Открыть начисления и в открывшейся обработке выполнить команду Создать документы.
Следует при оформлении учитывать, что согласно ТК РФ запрещается направлять в командировку беременных женщин (ч.1 ст. 259 ТК РФ), работников в возрасте до 18 лет (ст.268 ТК) и работников в период действия ученического договора - в данном случае предусмотрено исключение: если данная командировка связана с ученичеством ( ч.3 ст. 208 ТК РФ).
Инструкция создания одностороннего обмена данными между конфигурациями "Источник" и "Приемник" с нуля:
1 Скачиваем последнюю версию конфигурации "Конвертация данных". Сейчас на сайте ИТС перестали почему-то публиковать полные дистрибутивы, поэтому находим где-нибудь изначальный релиз и накатываем обновления с сайта.
2 В процессе установки обновлений у вас в папке с шаблонами конфигураций (смотрите её расположение в настройках окна запуска 1С) появится папка Conversion с вложенными папками версий конвертации данных. Заходите в последнюю версию на которую обновились и берите оттуда следующие файлы:
MD80Exp.epf, MD81Exp.epf, MD82Exp.epf, V8Exchan.epf, V8Exchan81.epf, V8Exchan82.epf.
3 Отдельно обращаю ваше внимание. Для успеха операции крайне важно использовать эти файлы из той версии конфигурации "Конвертация данных" в которой вы создаете правила обмена.
4 Следующий этап: выгрузка метаданных Источника и Приемника в xml файлы. Для этого предназначена обработка MD**Exp.epf. Галки выгружать регистры и прочее снимаете. Используйте нужную в зависимости от платформы. Опять же, повторюсь, - из одного и того же комплекта конвертации данных. Иначе ничего не получится.
5 Теперь открывайте базу "Конвертация данных".
6 Заходите в "Справочники"-"Конфигурации". Добавить новый элемент. В качестве файла загрузки указываете выгруженные метаданные. Выбираете "Загрузить в новую конфигурацию". Таким образом создаете две конфигурации с именами, например, Источник и Приемник.
7 Теперь заходите в "Справочники"->"Конвертации". Добавить новый элемент. Указываете в качестве конфигураций источника и приемника наши созданные конфигурации.
8 Конвертация данных предложит вам создать правила конвертации объектов и выгрузки автоматически. Соглашайтесь. Тут я подробностей писать не буду. Об этом в интернете много уже есть.
9 Теперь выгрузите созданный файл правил обмена на диск.
10 И, наконец, крайне важно для выгрузки и загрузки данных по созданным нами правилам обмена использовать не встроенный универсальный обмен в формате XML из самих конфигураций, а использовать наши V8Exchan**.epf, упомянутые выше.
Итак, главное правило: MD**Exp.epf и V8Exchan**.epf должны быть из одного комплекта, прилагающегося к версии Конвертация данных. Причем той же версии, в которой создавались правила обмена. И никаких встроенных обработок для универсального обмена в формате XML, только V8Exchan**.epf.
Многие спрашивают А где хранится лицензия на 1С: Предприятие 8? или Где посмотреть лицензионный ключ в 1С?
В 1С информацию о полученной лицензии можно посмотреть нажав «Справка» — «О программе»
В разделе Лицензия: сначала идет клиентская лицензия, затем, если это серверный вариант, лицензия сервера 1С
Например будет указан Регистрационный номер комплекта и будет указан путь к файлу лицензии «file://C:/ProgramData/1C/1Cv82/conf/20120430015941.lic».
Начиная с версии платформы 1С:Предприятия — 8.2.15 список сеансов инф. базы в консоли Администрирование серверов 1С:Предприятия содержит колонку с информацией о лицензии, используемой каждым сеансом. Так что учет используемых лицензий аппаратных и программных можно вести в Консоли Администрирования серверов 1С. В средствах программного администрирования имеется свойство License объекта ISessionInfo. В более ранних версиях платформы 1С:Предприятия 8.2 таких средств нет.
Дополнительно:
Файл однопользовательской лицензии лежит в каталоге
C:\Documents and Settings\All Users\1C\1Cv82\conf
файл называется примерно так:
20120302155201.lic
...
Только что установил как описано в статье: сначала после активации в один сеанс пустило, а на втором: "Ключ защиты не обнаружен ....".
Проблема решилась копированием файла лицензии (она по умолчанию сразу попала в каталог:"C:\Users\All Users\1C\1Cv82\conf\2*.lic") в каталог:
C:\Program Files (x86)\1cv82\conf\
...
Если используются программная лицензия на сервер 1С-64x и многопользовательские лицензии лучше сразу отредактировать файлы:
C:\Program Files (x86)\1cv82\8.2.##.###\bin\conf\conf.cfg
C:\Program Files\1cv82\8.2.##.###\bin\conf\conf.cfg
указав один и тот же путь к программным лицензям, например:
ConfLocation=C:\Program Files\1cv82\conf
и в этот каталог положить обе лицензии.
Без этого на платформе 8.2.15 периодически наблюдались траблы типа: лицензию на сервер вижу, а много пользовательские не вижу.
Из всех других файлы лицензий убрать - иначе возможна ситуация когда 1С сама допишет файл лицензии текстом:
"На компьютере *** используются две копии одного и того же файла программной лицензии: file://C:/Program Files/1cv82/conf/2*.lic и file://C:/Program Files (x86)/1cv82/8.2.15.289/bin/conf/2*.lic"
ОСОБЕННОСТИ ЛИЦЕНЗИЙ С ПРОГРАММНОЙ ЗАЩИТОЙ
Клиентские программные лицензии разделяются на однопользовательские и многопользовательские.
Однопользовательская лицензия предназначена для установки на компьютер пользователя и разрешает запуск с этого компьютера произвольного количества сеансов с системой "1С:Предприятие 8". Информационные базы в этих сеансах могут быть созданы с различными конфигурациями. Поддерживается работа клиента как в файловом, так в клиент-серверном варианте.
Многопользовательская лицензия устанавливается:
на компьютер сервера "1С:Предприятия" в случае клиент-серверного варианта информационной базы;
на компьютер веб-сервера в случае файлового варианта информационной базы.
Многопользовательская лицензия позволяет запускать не более обозначенного в Лицензионном соглашении количества сеансов с системой "1С:Предприятие". Данная лицензия не привязана к какому-либо компьютеру пользователя, подсчет количества сеансов выполняется на сервере.
В основные поставки, обеспечивающие запуск приложения на одном рабочем месте, а также в клиентскую лицензию на одно рабочее место входит комплект пинкодов для получения одной однопользовательской лицензии (аналог ключа аппаратной защиты на одно рабочее место).
В каждую клиентскую лицензию на 5, 10 и 20 рабочих мест входит по два комплекта пинкодов: для получения соответствующего количества однопользовательских лицензий и многопользовательской лицензии на соответствующее количество рабочих мест. Перед получением первой лицензии из такого продукта необходимо определиться, как ее предполагается использовать:
установить по одной однопользовательской лицензии на определенные компьютеры и запускать с них произвольное количество сеансов с "1С:Предприятием"
или
установить лицензию на сервер и запускать "1С:Предприятие" с произвольных компьютеров, но при этом ограничить количество одновременно запущенных сеансов.
Важно сделать выбор типа клиентской лицензии перед первым получением лицензии, так как получение лицензии по пинкоду для однопользовательской лицензии сделает невозможным получение лицензии по пинкоду для многопользовательской лицензии, и наоборот, получение многопользовательской лицензии сделает невозможным получение из данного комплекта однопользовательской лицензии.
В клиентских лицензиях на 50, 100, 300 и 500 рабочих мест поставляется комплект пинкодов для получения многопользовательской лицензии на соответствующее количество рабочих мест.
Если требуется увеличить число рабочих мест, то следует докупить нужное количество программных лицензий и установить их на компьютеры пользователей либо на сервер. На сервер может быть установлено произвольное количество программных лицензий в любых комбинациях из поставляемых вариантов.
Программная лицензия на сервер устанавливается на компьютер сервера "1С:Предприятия". Как и в лицензиях на сервер с аппаратной защитой, программная лицензия на 64-разрядный сервер поддерживает также работу 32-разрядного сервера.
Если взамен 32-разрядного сервера с программной защитой потребуется использовать 64-разрядный сервер, то для этого необходимо сделать апгрейд, см. далее раздел "Апгрейд лицензии на сервер".
Программные лицензии представляют собой файл, который в зашифрованном виде содержит параметры лицензии и характеристики компьютера, для которого данная лицензия получена. Доступ к этому файлу определяется правами доступа файловой системы. Если файл лицензии находится в каталоге, к которому нет доступа у пользователя, от имени которого работает экземпляр 1С:Предприятия, пытающегося получить лицензию - значит лицензия не будет получена!
2. Как работает программная лицензия?
Приложение 1С:Предприятия (клиентское или серверное) при необходимости получения лицензии выполняет поиск файлов по всем доступным путям. Далее из файлов получаются параметры самой лицензии и характеристики компьютера, для которого лицензия получена. Если параметры текущего компьютера не совпадают с полученными - файл лицензии отвергается. В противном случае выполняются проверки, связанные с количеством пользователей и типом лицензии (клиентская или серверная).
3. Что есть что в диалоге получения лицензии.
В диалоге получения лицензии есть два момента, которые вызывают наибольшие трудности - такое ощущение складывается по этому форуму.
Это страницы помощника с выбором компьютера, для которого должна быть установлена лицензия и выбор доступности лицензии (текущему пользователю или всем пользователям).
При получении программных лицензий необходимо выбрать, характеристики какого компьютера будут использоваться при привязке лицензии. От вида лицензии и компьютера, на котором запущен Конфигуратор, зависит, какой пункт следует выбирать при получении лицензии.
"На компьютер сервера 1С:Предприятия" имеет смысл выбирать в случае получения любых программных лицензий, если использование полученной лицензии предполагается на компьютере, где расположен сервер "1С:Предприятия" и это не тот компьютер, на котором выполняется получение программной лицензии. В этом случае файл с полученной программной лицензией всегда будет размещаться в каталоге профиля того пользователя, от имени которого работает сервер "1С:Предприятия" (по умолчанию — USR1CV82) на том компьютере, на котором работает сервер "1С:Предприятия".
"На этот компьютер" имеет смысл выбирать во всех остальных случаях. Исключением является многопользовательская программная лицензия, для которой выбирать пункт "На этот компьютер" имеет смысл только при запуске Конфигуратора на терминальном сервере или в терминальной сессии. Также в этом случае можно будет выбирать, куда будет помещен файл с активированной лицензией — в каталог профиля текущего пользователя или в каталог, доступный всем пользователям системы. Это будет каталог того компьютера, на котором выполняется активация программной лицензии.То, какой набор лицензий будет доступен для использования, зависит от того, куда будут размещены файлы с активированными лицензиями. Если они размещены в каталоге профиля пользователя, от имени которого выполняется активация лицензии, то другие пользователи этого же компьютера не получат доступ к этим лицензиям. Например, если на терминальном сервере активирована однопользовательская программная лицензия, и она размещена в каталоге профиля текущего пользователя (например, User1), то другой пользователь (например, User2) не сможет работать в то время, когда пользователь User1 не работает. Для того чтобы активированная лицензия была доступна всем пользователям компьютера, ее надо размещать в каталоге, предназначенном для всех пользователей системы. Тогда однопользовательская лицензия из примера, приведенного выше, будет доступна любому пользователю терминального сервера, при условии, что другие пользователи не используют данную лицензию (т.к. она однопользовательская).
4. Как активировать дополнительную программную лицензию?
Если требуется активировать дополнительную клиентскую программную лицензию на компьютере, на котором уже активирована программная лицензия, то делать это необходимо в точности так, как и при первой активации программной лицензии на выбранном компьютере.
Если выполняется получение серверной и многопользовательской программной лицензии и существует возможность запустить Конфигуратор на компьютере с установленным сервером "1С:Предприятия", то рекомендуется выполнять получение обеих лицензий на компьютере сервера, при этом получать лицензию следует "На этот компьютер" и "Всем пользователям данного компьютера".
ВНИМАНИЕ! Не рекомендуется размещать один файл программной лицензии одновременно в нескольких различных каталогах, доступных приложениям "1С:Предприятия". Это может привести к тому, что файл с лицензией станет непригодным для использования, т. к. является одним из вариантов нарушения лицензионного соглашения.
5. Рекомендации по получению программных лицензий
5.1. Файловый вариант информационной базы
5.1.1. Лицензия получается на клиентском компьютере
Однопользовательскую лицензию рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".Многопользовательскую лицензию активировать не имеет смысла.
5.1.2. Лицензия получается на терминальном сервере
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.2. Файловый вариант информационной базы через веб-сервер
5.2.1. На компьютере, где получается лицензия, возможно запустить Конфигуратор
Рекомендуется установить на компьютер с веб-сервером толстый клиент и с помощью Конфигуратора получить лицензию (любую) "На этот компьютер" и "Всем пользователям данного компьютера". Так можно поступить, если веб-сервер развернут на ОС Windows.
5.2.2. На компьютере, где получается лицензия, невозможно запустить Конфигуратор
Установить на этот компьютер сервер необходимой разрядности и получить лицензию для компьютера сервера с любого компьютера в сети, на котором установлен толстый клиент. Серверное приложение позволит получать программную лицензию даже в том случае, если отсутствует серверная лицензия. Рекомендуется получать лицензию (любую) "На компьютер сервера 1С:Предприятия". С помощью этого способа можно получить, например, многопользовательскую программную лицензию для работы с файловой информационной базой через веб-сервер, развернутый на ОС Linux.
5.3. Клиент-серверный вариант информационной базы
5.3.1. Лицензия получается на клиентском компьютере
Однопользовательскую лицензию рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
Многопользовательскую лицензию рекомендуется получать "На компьютер сервера 1С:Предприятия".
Получать многопользовательскую лицензию "На этот компьютер" не имеет смысла.
5.3.2. Лицензия получается на терминальном сервере
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.3.3. Лицензия получается на компьютере сервера "1С:Предприятия"
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.4. Серверная лицензия
5.4.1. Лицензия получается на клиентском компьютере
Рекомендуется получать программную лицензию (любую) "На компьютер сервера 1С:Предприятия".
5.4.2. Лицензия получается на компьютере сервера "1С:Предприятия"
Рекомендуется получать программную лицензию (любую) "На этот компьютер" и "Всем пользователям данного компьютера".
Хранилище конфигурации предназначено для коллективной разработки конфигурации. В хранилище сохраняется история разрабатываемой конфигурации, а также информация о том, когда и кто вносил изменения в конфигурацию. Разработка конфигурации с использованием хранилища может вестись неограниченным числом пользователей.
Принцип работы
Хранилище конфигурации представляет собой базу данных, в которой сохраняются все изменения конфигурации, сделанные в процессе её разработки. После подключения информационной базы к хранилищу из него в информационную базу загружается последняя версия конфигурации, и все объекты метаданных конфигурации становятся недоступными для редактирования.
Гранулой редактирования - объектами разработки - являются все основные объекты метаданных (такие как справочники, документы, регистры сведений), а также формы и макеты. Объекты разработки могут редактироваться независимо друг от друга разными пользователями. Реквизиты, табличные часть и т.д. не являются отдельными объектами с логической точки зрения, поэтому они не были включены в состав объектов разработки. Данные объекты метаданных редактируются в составе своих родительских объектов, являющихся объектами разработки.
Для получения возможности редактирования объекта необходимо произвести его захват в хранилище. При выполнении захвата из хранилища будет получена (в случае наличия) новая версия объекта разработки. После внесения изменений объект необходимо поместить в хранилище, после этого обновленная версия объекта становится доступной для других пользователей, участвующих в процессе разработки конфигурации. Если же изменения не должны быть помещены в хранилище, то предусмотрена процедура отмены захвата, при которой из хранилища получается старая версия объекта разработки. Таким образом, можно выделить четыре простейшие операции работы с хранилищем: захват объекта в хранилище;
помещение объекта в хранилище;
получение объекта из хранилища;
отмена захвата в хранилище.
Для параллельной разработки конфигурации в хранилище используется стратегия пессимистической блокировки: в то время, пока объект разработки редактируется одним пользователем, другие пользователи не имеют возможности его редактировать.
Стоит обратить внимание на тот факт, что при подключении информационной базы к хранилищу конфигурации происходит полная замена текущей редактируемой конфигурации конфигурацией хранилища . Это необходимо для обеспечения полного соответствия идентификаторов объектов метаданных. Если все же имеется информационная база, часть объектов метаданных конфигурации которой необходимо перенести в конфигурацию хранилища, то необходимо: выгрузить конфигурацию из информационной базы в файл,
подключить информационную базу к хранилищу конфигурации,
выполнить захват объектов, которые необходимо заместить,
произвести объединение с требуемой конфигурацией.
Важно понимать, что предметом разработки является конфигурация, а не отдельные объекты. Хранилище ведет историю развития конфигурации. При помещении объектов разработки в хранилище создается новая версия конфигурации, для которой записываются: дата создания версии, пользователь, создавший версию, а также списки объектов разработки, которые были добавлены, изменены, удалены в процессе получения данной версии конфигурации. История объектов разработки не ведется. Несмотря на то, что имеется возможность просмотра истории объекта разработки, отдельно загрузить из хранилища объект разработки какой-либо версии конфигурации невозможно, возможна лишь загрузка из хранилища версии конфигурации целиком. Однако все же имеется возможность получения объекта определенной версии конфигурации: необходимо захватить объект и выполнить объединение с версией конфигурации, в которой данный объект имеет требуемое состояние.
При создании новой версии конфигурации хранилища имеется возможность записать комментарий к этой версии. Рекомендуется комментировать версии конфигурации, для того чтобы впоследствии можно было понять, что именно было изменено в данной версии конфигурации. Для наиболее значимых версий (например: выпуск релиза) рекомендуется также устанавливать метку - строку, кратко описывающую версию конфигурации хранилища.
В процессе разработки конфигурации с использованием хранилища рекомендуется периодически получать актуальное состояние объектов разработки. Это позволяет избежать возможных трудностей при помещении объектов в хранилище (например при удалении объектов метаданных из конфигурации).
Средства работы с хранилищем конфигурации позволяют просматривать историю версий конфигурации хранилища, сохранять конфигурацию определенной версии в файл, сравнивать с другими версиями конфигурации данного хранилища или же сравнивать с другой конфигурацией из файла.
Если по каким-либо причинам хранилище конфигурации недоступно, то имеется возможность продолжать работу с объектами разработки, захваченными ранее в хранилище. Таким образом, можно вести разработку, не имея постоянной непосредственной связи с хранилищем конфигурации.
Режимы использования
Для работы с хранилищем конфигурации предусмотрено несколько способов: с подключением информационной базы к хранилищу;
без подключения информационной базы к хранилищу.
Данные режимы отличаются друг от друга как набором функциональности, предоставляемой платформой 1С:Предприятия, так и своим предназначением.
Работа с подключением информационной базы к хранилищу
Этот режим является основным режимом работы с хранилищем. Он используется для групповой разработки конфигурации несколькими пользователями.
Работа в данном режиме начинается с процедуры подключения информационной базы к хранилищу. К одному хранилищу может быть одновременно подключена одна информационная база от имени одного пользователя. Если пользователь, у которого уже имеется информационная база, подключенная к данному хранилищу, произведет попытку подключения другой информационной базы, то ему будет выдано соответствующее предупреждение. Если же подключение все же будет осуществлено, то прежняя информационная база уже не сможет работать с данным хранилищем конфигурации без предварительного отключения от него. Аутентификация в хранилище от имени пользователя, не подключавшего данную информационную базу к хранилищу, невозможна.
При подключении информационной базы к хранилищу в нем регистрируется строка соединения с информационной базой. Если при последующих соединениях с хранилищем данная строка будет изменена (по каким-либо причинам информационная база была перемещена на другой ресурс), то платформой будет выдано соответствующе предупреждение, и, в случае подтверждения соединения, строка соединения будет обновлена. Если соединение происходило копией информационной базы, то работа оригинала с данным хранилищем будет невозможна без предварительного отключения от него.
Работа без подключения информационной базы к хранилищу
Режим обеспечивает возможность просмотра и администрирования хранилища без подключения к нему, т.е. без замены редактируемой конфигурации конфигурацией хранилища. В данном режиме пользователь может получить конфигурацию определенной версии хранилища, посмотреть историю конфигурации или отдельных объектов разработки, произвести действия по редактированию прав пользователей или изменению их состава.
Работа в данном режиме начинается с открытия хранилища конфигурации, данная процедура заключается в аутентификации пользователя в хранилище, которая будет автоматически предложена при выполнении любого первого действия с хранилищем в данной сессии работы Конфигуратора. Для открытия другого хранилища в данной сессии Конфигуратора необходимо закрыть текущее хранилище конфигурации, выполнив соответствующий пункт меню.
Предполагается, что данный режим будет использоваться для подготовки дистрибутивов конфигураций на основе файлов выгрузки информационных баз. Данная процедура может выглядеть следующим образом:
Создать новую информационную базу.
Открыть хранилище конфигурации.
Из хранилища конфигурации загрузить конфигурацию нужной версии.
Произвести заполнение информационной базы необходимыми данными.
Произвести подготовку дистрибутива конфигурации.
В процессе модернизации конфигурации хранилища для выпуска новых дистрибутивов необходимо повторить процедуру, начиная с пункта 2, и, если новых данных вводить не требуется, сразу выполнить подготовку дистрибутива.
Контроль ссылочной целостности
Стандартные механизмы контроля ссылочной целостности конфигурации обеспечивают контроль на уровне объектов метаданных: нельзя, например, удалить из конфигурации справочник, если на него ссылается реквизит документа и т.д. На уровне интерфейсов, форм и макетов такой контроль не ведется.
Пример: удаление справочника Склады из демонстрационной конфигурации ":
происходит проверка имеющихся на этот объект ссылок в других объектах:
"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
Документ.РасходнаяНакладная.Реквизит.Склад.Тип
РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
после удаления обнаруженных ссылок справочник Склады успешно удаляется из конфигурации, хотя ссылка не него по-прежнему имеется в интерфейсе Основной (кнопка Склады из подменю Справочники содержит действие "Склады: Открыть справочник") и формах документов ПриходнаяНакладная, РасходнаяНакладная (поля ввода, предназначенные для редактирования реквизитов Склад по-прежнему имеют тип СправочникСсылка.Склады).
При разработке конфигурации без использования хранилища этого вполне хватает. Однако для параллельной разработки конфигурации такой контроль ссылочной целостности недостаточен.
Хранилище конфигурации обеспечивает более строгий контроль ссылочной целостности конфигурации. Производится полный контроль ссылок между объектами метаданных как на уровне самих объектов, так и на уровне содержимого их форм и макетов, а также содержимого интерфейсов.
Следствием этого факта является необходимость получения из хранилища (помещения в хранилище) объектов, так или иначе связанных с объектом, над которым непосредственно производится действие. Однако хранилище конфигурации производит анализ ссылок объекта и требует получения (помещения) дополнительных объектов только в случае необходимости.
Анализ ссылок производится рекурсивно: сначала производится анализ объекта, с которым производится действие в хранилище; затем при обнаружении необходимости выполнения операции над дополнительными объектами аналогичный анализ производится для них, и так до тех пор, пока ссылки всех требуемых объектов не будут проанализированы.
Особенности конфигурирования
Разработка конфигурации в информационной базе, подключенной к хранилищу конфигурации, имеет некоторые особенности.
Как уже говорилось ранее, для получения возможности редактирования объекта необходимо произвести его захват в хранилище конфигурации. Если необходимо внести изменения в объект метаданных, не являющийся объектом разработки (реквизиты, табличные части), то необходимо произвести захват того объекта разработки, который содержит данные объекты метаданных.
Для добавления нового объекта метаданных или же для изменения порядка следования существующих объектов необходимо произвести захват родительского объекта разработки.
Удаление объектов конфигурации
Особое внимание стоит уделить процедуре удаления объектов метаданных из конфигурации. Для удаления объекта метаданных из конфигурации необходимо захватить в хранилище сам удаляемый объект, его родительский объект, а также все подчиненные объекты удаляемого. После чего появится возможность удалить объект из конфигурации.
Однако при помещении в хранилище, если на удаленный объект имеются ссылки в других объектах, средства работы с хранилищем потребуют помещение этих объектов в хранилище с очищенными ссылками на удаленный объект.
Рекомендуется перед удалением объекта из конфигурации производить поиск ссылок на данный объект. Произвести захват в хранилище всех обнаруженных объектов и вычистить из них все ссылки на удаляемый объект. После этого необходимо удалить все ссылки на удаляемый объект из форм, интерфейсов и макетов. После чего удалить объект из конфигурации и произвести попытку помещения изменений в хранилище. Если помещение в хранилище завершится неудачей из-за обнаружения ссылок на удаленный объект, то необходимо захватить указанные объекты и произвести повторную попытку помещения изменений в хранилище.
Пример: удаление справочника Склады из демонстрационной конфигурации:
Производим поиск ссылок на удаляемый объект:
"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
Документ.РасходнаяНакладная.Реквизит.Склад.Тип
РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
Захватываем данные объекты и удаляем из них реквизиты, ссылающиеся на справочник Склады.
Захватываем интерфейс "Основной" и удаляем из него кнопку Склады из подменю Справочники с действием "Склады: Открыть справочник".
Захватываем корневой объект конфигурации и справочник Склады.
Удаляем справочник Склады из конфигурации.
Производим попытку помещения корневого объекта конфигурации в хранилище
Параметры командной строки для работы с хранилищем конфигурации
Параметры командной строки режима работы с хранилищем конфигурации
/ConfigurationRepositoryF <каталог хранилища> — указание имени каталога хранилища.
/ConfigurationRepositoryN <имя> — указание имени пользователя хранилища.
/ConfigurationRepositoryDumpCfg <имя cf файла> [-v <номер версии хранилища>] — сохранить конфигурацию из хранилища в файл (пакетный режим запуска).
-v <номер версии хранилища> v — номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия.
/ConfigurationRepositoryUpdateCfg [-v <номер версии хранилища>] [-revised] — обновить конфигурацию хранилища из хранилища (пакетный режим запуска).
-v<номер версии хранилища> — номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия, если конфигурация не подключена к хранилищу, то параметр игнорируется;
-revised — получать захваченные объекты, если потребуется. Если конфигурация не подключена к хранилищу, то параметр игнорируется;
-force — если при пакетном обновлении конфигурации из хранилища должны быть получены новые объекты конфигурации или удалиться существующие, указание этого параметра свидетельствует о подтверждении пользователем описанных выше операций. Если параметр не указан — действмия выполнены не будут.
/ConfigurationRepositoryUnbindCfg [-force] — отключение конфигурации от хранилища конфигурации (у пользователя должны быть административные права в данной информационной базе). Если пользователь аутентифицируется в хранилище (интерактивно или через параметры командной строки), то отключение конфигурации от хранилища также отражается в самом хранилище конфигурации (информация о подключении удаляется), если же пользователь не аутентифицировался в хранилище, то производится только локальное отключение конфигурации от хранилища.
В случае, если в конфигурации имеются захваченные объекты, которые были изменены относительно хранилища, то будет выдано соответствующее сообщение и отключения не выполнится.
–force — ключ для форсирования отключения от хранилища (пропуск диалога аутентификации, если не указаны параметры пользователя хранилища, игнорирование наличия захваченных и измененных объектов).
/ConfigurationRepositoryReport <имя файла> [-NBegin <номер версии>] [-NEnd <номер версии>] [-GroupByObject] [-GroupByComment] — построение отчета по истории хранилища. Если параметры группировки не указаны и режим совместимости указан "Не используется", то отчет формируется с группировкой по версиям. В режимах совместимости "Версия 8.1" и "Версия 8.2.13" отчет формируется с группировкой по объектам. Если конфигурация базы данных отличается от редактируемой по свойству совместимости, при обработке командной строки учитывается значение режима совместимости конфигурации базы данных.
<имя файла> — имя файла, в который выводится отчет;
NBegin — номер сохраненной версии, от которой начинается строиться отчет;
NEnd — номер сохраненной версии, по которую строится отчет;
GroupByObject — признак формирования отчета по версиям с группировкой по объектам;
GroupByComment — признак формирования отчета по версиям с группировкой по комментарию.
Примеры: для конфигурации, не присоединенной к текущему хранилищу:
для присоединенной к хранилищу конфигурации, информация для отчетов берется из текущего хранилища:
Не редко возникает необходимость загрузить в справочники или документы 1С данные из текстового файла. Приведенный пример внешней обработки позволит преобразовать текстовый файл с известным разделителем данных в поле табличного документа для последующей обработки уже внутри 1С:Предприятия. Обработка содержит функцию разбора строки на массив данных, настраиваемый разделитель строки текста на "столбцы", процедуру чтения данных из текстового файла.
Разбор строки в массив с использованием функций из конфигурации 1С
Для разложения строки в массив в конфигурация 1С:Бухгалтерия, 1С:Торговля и 1С:УПП имеется замечательная функция - Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт. Функция "расщепляет" строку на подстроки, используя заданный разделитель. Разделитель может иметь любую длину. Если в качестве разделителя задан пробел, рядом стоящие пробелы считаются одним разделителем, а ведущие и хвостовые пробелы параметра "Стр" игнорируются. Подробнее можно прочесть внутри конфигурации - "Общие модули" -> "Общего назначения". Функция возвращает массив значений, элементы которого - подстроки.
Чтение текстового файла (txt) в 1С
Операцию импорта - экспорта текстовых файлов (формат тхт или csv, а также htm, html) очень удобно реализовать при помощи конструкции следующего вида:
1. Функция ПолучитьПотокЧтенияСтрок(Файл) - Назначение: Проверить наличие файла (функция Файл()), Создать текстовый документ (Новый ТекстовыйДокумент()), вызвать метод "Прочитать" для открытия потока чтения файла. Возвращает поток, готовый для чтения.
2. Процедура ЧтениеТХТФайла(Элемент) - Назначение: В цикле произвести последовательное чтение строк файла текстового документа, разбирая на массив колонок данных и добавляя значения массива в табличное поле;
Исходный код 1С функции создания текстового потока чтения файла ТХТ:
В данном примере была произведена загрузка из текстового файла в следующем формате:
******************************* FAQ **************************************
(1) Как организовать дозвон? (тонкости организации дозвона)
1. Во первых, надо вручную создать подключение в списке удаленного
доступа (win 2000 - пуск, настройка, сеть и уд.доступ, создание
нового подключения).
Или создать подключение с помощью компоненты (см. "Атрибуты
подключений" и "СохранитьНастройкиПодключения()").
2. Если импульсный набор, то перед номером телефона надо ставить "p"
напр "p212121", тоновый - по умолчанию или "t". Если необходимо ждать
гудка после цифры, то ставится "w", напр. "t8w0952223333".
3. (только если RAS-сервер находится под управлением Windows 95-98)
Если система-клиент NT, 2000 или XP тогда в свойствах созданного
в п.1 соединения в разделе "Безопасность" выберите возможность
отправления незашифрованного пароля (win 2000 - закладка
"безопасность", п. Дополнительные (особые параметры), кн
"Настройка", п.Разрешить следующие протоколы, галочка
ТОЛЬКО на "Незашифрованный пароль PAP")
4. При вызове дозвона, необходимо использовать имя созданного в
п.1 подключения в качестве первого параметра.
5. При использовании процедуры "ОбработкаВнешнегоСобытия" (последний
параметр = 1 в Дозвониться (RASDIAL), ПолучитьПисьмо,
ПолучитьВсеПисьма (POP3), ОтправитьПисьмо, ОтправитьВсеПисьма(SMTP)
форма подключения в обязательном порядке должна быть в "фокусе",
иначе события могут теряться. Вернее они не теряются, а начинают
(пытаются) обрабатываться в глобальном модуле.
*********************************************************************
(2) Через какие объекты добраться до общих методов ?
Если методы и свойства "общие" это значит, что у объектов POP3 и SMTP есть одинаково действующие
методы и свойства.
!!! Отметим при этом, что Получ.РабочийКаталог<>Отпр.РабочийКаталог !!!
"РабочийКаталог" - одинаковое свойство для объектов POP3 и SMTP
*********************************************************************
(3) Почему при дозвоне компонента 3 раза подряд генерирует
событие "Начало Аутенфикации"?.
Дозвон происходит через системную DLL'ку RasDial.
Все события, которые генерируются этой DLL'кой перенаправляются
компонентой DialMail в 1С (процедура ОбработкаВнешнегоСобытия(...))
Так что от компоненты в данном случае ничего не зависит.
Причина этого (можно предположить) лежит на уровне того сервера,
к которому идет подсоединение (кто мешает аутенфикацию
проводить 3 раза или 3-мя различными способами?).
*********************************************************************
(4) При дозвоне (отправке, приеме почты) у меня в форме перестают
генерироваться события в процедуре ОбработкаВнешнегоСобытия(...),
хотя дозвон (отправка, прием почты) продолжает свою работу.
Это глюк 1С. Проявляется иногда во время работы компоненты при
сворачивании окон программ,открытия новых окон программ, при
потере фокуса 1С-Предприятием. Лечится это следующим образом.
На самом деле все события, сгенерированные компонентой, не пропадают
если процедуру ОбработкаВнешнегоСобытия(...) разместить
в глобальном модуле. В этом случае нам нужна будет глобальная
переменная - контекст нашей формы. Все переменные, которые нам
понадобятся в процедуре ОбработкаВнешнегоСобытия(...), можно
сделать либо глобальными, либо разместить на нашей форме в виде
невидимых реквизитов.
КоличествоСобытий - реквизит, размещенный на нашей форме
========================================
*********************************************************************
(5) Можно ли использовать дозвон для разговоров по телефону?
Нет. Компонента не предназначена для простых звонков на
телефон. Только для установления "сетевого" соединения между
2-мя компьютерами (например, между клиентским компьютером и
компьютером провайдера).
*********************************************************************
(6) Хотелось бы использовать компоненту DialMail в проектах,
написанных на Visual Basic, Delphi и т.д.
Компонента 1С хоть и полностью COM объект, но интерфейс
особый, свой - 1С-ий. Чтобы работать с данной компонентой
из других средств разработки, надо полностью переписывать
компоненту. Мне это не нужно, да и нет времени.
Модули Synapse, на которых базируются почтовые клиенты компонеты, лежат
в http://www.ararat.cz/synapse/ , могу прислать примеры компоненты
и интерфейсный модуль RasUnit.pas (для облегченной работы с RAS API -
тоже кстати из инета). Могу оказать посильную помощь, если что-то с этими
исходниками будет неясно. Но полностью исходники выложу в свободное
распространение только когда не буду поддерживать компоненту.
*********************************************************************
(8) Почему при передаче/приеме почты возникает ошибка 10054?
10054 - "Connection reset by peer", т.е. "Соединение сброшено удаленной
системой"
Происходит в результате:
1. Выключения сокета на удаленной машине в
рез-те ресета или таймаута
2. Вызывается локальной машиной при обнаружении потери
соединения (например, если дозванивались по dial-up и соединение
разорвалось - свойственно плохим модемам и плохим тел. линиям)
3. Связано с неправильным использованием "потоков" при приеме/передаче
Например, последовательность
может вызвать именно эту ошибку.
Пояснение: Т.к. получение запущено в отдельном потоке (3-ий параметр=1),
команда отключения вызовет закрытие сокета. Поток, который принимает почту,
из-за закрытия сокета "внешним процессом" инициирует данную ошибку -
фактически причина №2.
*********************************************************************
(9) RasDial: Как задать импульсный/тоновый набор номера,
паузу для ожидания гудка, и т.п. ?
Начинаться номер телефона может с "p" или "t" - cоответственно импульсный
или тоновый набор номера, по умолчанию - тоновый набор номера.
"w" - пауза, дождемся гудка - "линия свободна", "," - пауза в не помню сколько
времени (1 сек?) Пример задания телефонного номера: p8w095,,1234567
В данном примере - 'p' - импульсный набор, после '8' пауза, дождемся гудка,
после '095' подождем 2 сек и продолжим набирать номер. Более подробную
информацию по данным управляющим символам можно найти на просторах интернета.