И вот случилось долгожданное: Вышел 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С:Предприятия, так и своим предназначением.
Работа с подключением информационной базы к хранилищу
Этот режим является основным режимом работы с хранилищем. Он используется для групповой разработки конфигурации несколькими пользователями.
Работа в данном режиме начинается с процедуры подключения информационной базы к хранилищу. К одному хранилищу может быть одновременно подключена одна информационная база от имени одного пользователя. Если пользователь, у которого уже имеется информационная база, подключенная к данному хранилищу, произведет попытку подключения другой информационной базы, то ему будет выдано соответствующее предупреждение. Если же подключение все же будет осуществлено, то прежняя информационная база уже не сможет работать с данным хранилищем конфигурации без предварительного отключения от него. Аутентификация в хранилище от имени пользователя, не подключавшего данную информационную базу к хранилищу, невозможна.
При подключении информационной базы к хранилищу в нем регистрируется строка соединения с информационной базой. Если при последующих соединениях с хранилищем данная строка будет изменена (по каким-либо причинам информационная база была перемещена на другой ресурс), то платформой будет выдано соответствующе предупреждение, и, в случае подтверждения соединения, строка соединения будет обновлена. Если соединение происходило копией информационной базы, то работа оригинала с данным хранилищем будет невозможна без предварительного отключения от него.
Работа без подключения информационной базы к хранилищу
Режим обеспечивает возможность просмотра и администрирования хранилища без подключения к нему, т.е. без замены редактируемой конфигурации конфигурацией хранилища. В данном режиме пользователь может получить конфигурацию определенной версии хранилища, посмотреть историю конфигурации или отдельных объектов разработки, произвести действия по редактированию прав пользователей или изменению их состава.
Работа в данном режиме начинается с открытия хранилища конфигурации, данная процедура заключается в аутентификации пользователя в хранилище, которая будет автоматически предложена при выполнении любого первого действия с хранилищем в данной сессии работы Конфигуратора. Для открытия другого хранилища в данной сессии Конфигуратора необходимо закрыть текущее хранилище конфигурации, выполнив соответствующий пункт меню.
Предполагается, что данный режим будет использоваться для подготовки дистрибутивов конфигураций на основе файлов выгрузки информационных баз. Данная процедура может выглядеть следующим образом:
Создать новую информационную базу.
Открыть хранилище конфигурации.
Из хранилища конфигурации загрузить конфигурацию нужной версии.
Произвести заполнение информационной базы необходимыми данными.
Произвести подготовку дистрибутива конфигурации.
В процессе модернизации конфигурации хранилища для выпуска новых дистрибутивов необходимо повторить процедуру, начиная с пункта 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С версий (7.x) совместимы «снизу вверх» с незначительными исключениями. Языки для платформ 1С:7х и 1С:8х совместимы по основным операторам, но значительно отличаются в работе с прикладными объектами, вследствие чего перенос кода из 1С:7х в 1С:8х не имеет смысла.
Для того, чтобы настраивать программы в зависимости от потребностей конкретной организации, необходимо знание программирования 1с. Знания в этой области позволяют вносить изменения в программные решения таким образом, чтобы пользователи могли применять их максимально эффективно. Опыт и навыки дают возможность настраивать базы данных и обновлять систему. Навыки помогут специалистам ИТ-отдела поддерживать систему в рабочем состоянии.
Для того, чтобы получить навыки конфигурирования 1С, Вы можете пройти в учебных центрах 1С программу обучения. Изучение предмета поможет как начинающим, так и опытным ИТ-специалистам. Все курсы преподаются опытными педагогами-практиками, которые помогут Вам не только получить теоретическую основу, но рассмотреть решение конкретных задач. Такой комплексный подход к изучению 1С программирования позволяет получить самую необходимую информацию, и быстро справляться с любыми проблемами.
Программирует, настраивает и конфигурирует системы 1С - 1С программист!
Программист 1С может:
- Выполнить необходимые работы у вас в офисе на почасовой основе - это удобно, если у вас много задач по программированию и конфигурированию 1С, которые проще решить на месте.
- Помочь вам составить техническое задание и оценить объем и стоимость предстоящих работ по нему для задач с фиксированным договорным объемом работ.
- Выполнить работы по имеющемуся у вас техническому заданию удаленно или у вас в офисе, при этом стоимость работ мы можем оговорить заранее и зафиксировать в договоре.
В услуги 1С программиста входят: - Услуга программирование 1с - доработка конфигурации 1С под ваши потребности - написание дополнительных отчетов, модификация проведения документов по счетам бухгалтерского учета, отражение специфики деятельности Вашей организации в учетных программах 1С - Услуга настройка 1с - безопасность данных, права доступа, связь с клиент-банком и другими програмами - Услуга обслуживание 1с - профилактика и оптимизация баз 1с, восстановление после сбоев - Услуга сопровождение 1с - обновление баз 1С и отчетности, обеспечение сохранности данных
Нашёл такие грабли – когда делаешь параметр списком значений, СКД зачем-то сама в этот список вставляет строку с пустым значением.
Я этот параметр передаю в запрос, и если тип параметра является иерархическим справочником, это пустое значение похоже отбирает любого родителя в иерархии, и как следствие, все значения справочника. Кстати, такой же косяк можно увидеть в отборах, если сделать вид сравнения «в группе из списка» и в список добавить строку с пустым значением.
А так как юзер тупо заполняет этот список подбором, то ему по фигу, что там какие-то пустые значения. Объяснять, что пустых значения в списке надо удалять – бесполезно. Виноват-то программист!
Нашёл, как это лечить, может кому-то пригодится.
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля "Представление" от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля "Представление". Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля "Представление" через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Применение функции Представление() также может быть полезным при получении представления поля - перечисления, в случае исполнения запроса через COM-соединение
Поле Представление
Каждая объектная таблица в информационной базе имеет виртуальное поле - "Представление". Это поле содержит текстовое представление объекта. В запросе возможно получать данное поле точно также как и другие поля таблиц, однако никакие операции с данным полем выполнять нельзя. Данная особенность связана с тем, что это поле является виртуальным, и, на самом деле, при получении данного поля из базы данных, запрос получает несколько полей, а при получении значения поля из результата запроса преобразовывает полученные значения в строку. Таким образом, единственное, что можно сделать с полем "Представление", это получить его в результат запроса.
Как следствие, результат запроса не рекомендуется упорядочивать по полю "Представление", т.к. это не приведет к желаемому результату - результат запроса будет упорядочен в порядке возрастания ссылок объектов. Подробнее об этом можно прочитать в разделе "Особенности упорядочивания по ссылочным полям".
Виртуальная таблица "РегистрРасчета.<ИмяРегистра>.ДанныеГрафика" определена для тех регистров расчета, которые поддерживают период действия. При конфигурировании с таким регистром расчета необходимо связать непериодический регистр сведений который и будет поставлять информацию о графике.
Для более удобного получения данных графика в системе определена виртуальная таблица, которая помимо прочих полей содержит виртуальные поля:
То есть для каждого числового ресурса регистра сведений, назначенного регистру расчета в качестве графика, можно получить для строк регистра расчета его сумму с учетом базового периода строки регистра расчета, периода действия, периода регистрации и фактического периода действия.
При построении виртуальной таблицы данных графика происходит соединение таблиц регистра расчета, регистра сведений, а в случае получения поля "<Имя ресурса графика>ФактическийПериодДействия" - еще и таблицы фактического периода действия регистра расчета. Так как данные для всех четырех перечисленных полей получаются путем соединения с таблицей регистра сведений по разным условиям, это значит, что в общем случае будет выполнено четыре соединения с таблицей регистра сведений.
При получении виртуальных таблиц система старается действовать оптимально, в частности, выполняется только то количество соединений, которое необходимо для получения полей виртуальной таблицы перечисленных в разделе "ВЫБРАТЬ".
Следствием этого является то, что при составлении текста запроса не следует выбирать поля данной виртуальной таблицы "про запас". Эта рекомендация может показаться общей, но следует помнить, что, как правило, получение "ненужного" поля в запросе к реальным таблицам или другим виртуальным таблицам приводит к некоторому увеличению сетевого трафика и, в общем случае, весьма незначительному снижению производительности. Ясно, что получение в запросе пяти полей регистра мало чем отличается от получения в запросе еще одного, шестого поля, если речь не идет о "больших" полях. Но в случае виртуальной таблицы данных графика появление еще одного виртуального поля из ряда перечисленных выше изменяет ситуацию принципиально. Время выполнения запроса может измениться в разы. То есть рекомендация составлять запросы оптимально по части числа выбираемых полей принимает особый смысл для данной виртуальной таблицы.
Следует также заметить, что принципиальное влияние на производительность запроса к виртуальной таблице данных графика оказывает не столько число виртуальных полей, сколько число их различных "видов".
Рассмотрим пример. В регистре сведений, назначенном в качестве графика, есть ресурсы "ЧислоДней" и "ЧислоЧасов". Рассмотрим три запроса.
При сопоставлении времени выполнения этих запросов мы обнаружим, что второй запрос при прочих равных условиях выполняется почти то же время, что и первый запрос, несмотря на появление еще одного виртуального поля. А вот третий запрос исполняется заметно дольше (возможно, в несколько раз), чем второй, несмотря на одинаковое число выбираемых виртуальных полей.
Это связано с тем, что для получения полей "ЧислоДнейПериодРегистрации" и "ЧислоЧасовПериодРегистрации" выполняется одно соединение с регистром сведений по значению поля "ПериодРегистрации" регистра расчета (сколько бы ресурсов регистра при этом не пришлось суммировать). А при получении еще и поля "ЧислоЧасовПериодДействия", выполняется еще одно соединение с регистром сведений, которое выполняется по значению поля "ПериодДействия".
Причины возникновения
Причины этой ошибки разняться по своей "природе", но их объединяето то, что уже существующее (т.е. ранее установленое) соединение с клиентом разрывает сервер.
1. С версии 8.1.11 включен циклический перезапуск процессов, по наступлению интервала происходит автоматический перезапуск рабочих процессов rphost.
2. В некоторых случаях причиной ошибки могут стать утечки памяти.
3. Действия администратора в консоли (команда удалить пользователя)
4. Процесс rphost на серверном компьютере завершился аварийно
5. Ошибочное принятие высокой интенсивности пользователей за атаку на протокол в некоторых случаях Windows
6. Устаревание данных в кэшах
7. Плохо отслеживаемые события в фоновых процессах
8. Нестандартные запросы могут приводить к падениям rphost
Способы устранения
1. с 8.1.11 включен циклический перезапуск процессов, для анализа этого события на компьютере сервера 1С:Предприятия необходимо включить запись в технологический журнал событий PROC (пример файла logcfg.xml).
Когда процесс выключается, будет выведено событие PROC со свойством Txt=Process become disable.
Когда процесс останавливается, будет выведено событие PROC со свойством Txt=Process terminated. Any clients finished with error. Если аварийные завершения работы пользователей совпадают по времени с выводом этого события, то причиной является принудительная остановка рабочего процесса либо администратором (через консоль кластера), либо вследствие автоматического перезапуска.
2. перезагрузить сервер
3. убедиться, что причиной являются/не являются действия администратора в консоли
4. создать на сервере приложения два или более рабочих процесса, чтобы иметь возможность переподключиться в случаи сбоя рабочего процесса
5. Запусти программу regedit.exe, добавь новое значение типа DWORD с именем SynAttackProtect в раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ и присвой ему значение 00000000
Имеет смысл делать для ОС Windows 2003 SP1 (http://msdn.microsoft.com/ru-ru/library/ms189083.aspx).
8. найти технологическим журналом запрос, приводящий к падению
p.s. Кроме того, 54 ошибку можно получить на релизах <= 8.1.12.98 при ри конвертации конвертором ИБ 77(DBF) -> 81(SQL) в типовой ТиС (демо, взятой с ИТС) релиз. 954 в клиент-серверном варианте.
обойти можно так:
- выполните конвертацию в файловый фариант информационной базы 1С:Предприятия 8.1,
- выгрузите полученную информационную базу в файл,
- загрузите в клиент-серверный вариант информационной базы 1С:Предприятия 8.1.