Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Batchir ::: Спасибо сказали: 1427 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
09.02.09, 12:51 Технология создания внешних компонент для 1С:Предприятие 8. Расширение для карманных компьютеров
Технология создания внешних компонент включает в себя все необходимые сведения по созданию внешних компонент и их взаимодействию с 1С:Предприятие 8. Расширение для карманных компьютеров.
В состав ИТС входят примеры реализации внешних компонент.

Технология внешних компонент позволяет решать широкий спектр специальных задач, в частности, задачи, связанные с использованием различного оборудования, например сканеров штрих-кодов совместно с Расширением для карманных компьютеров. Внешние компоненты позволяют расширить возможности 1С:Предприятие 8. Расширение для карманных компьютеров.

Внешняя компонента может порождать события, обрабатываемые в предопределенной процедуре языка ОбработкаВнешнегоСобытия. Это позволяет подключать к Расширению для карманных компьютеров сканеры и другие устройства, требующие асинхронного обмена данными.  
andreykyiv@bigmir.net,
09.02.09, 12:21 Использование серийных номеров мобильных устройств при работе с "1С:Предприятие 8. Расширение для карманных компьютеров"
"1С:Предприятие 8. Расширение для карманных компьютеров" использует серийные номера мобильных устройств для идентификации подключений к серверу мобильных приложений. Кроме того, активация лицензий данного продукта производится для конкретного устройства, определяемого его серийным номером. Серийный номер устройства является уникальным и однозначно идентифицирует устройство. Определяется серийный номер автоматически программой установки и представляет собой произвольную последовательность символов, которая может содержать буквы английского алфавита и цифры. Уникальность серийного номера обеспечивает производитель устройства, реализующий ОС.
Если программа установки не смогла получить серийный номер устройства, рекомендуется воспользоваться специальной программой получения серийного номера, входящей в комплект поставки (PDASerialNumberCE.exe или PDASerialNumberWM.exe - в зависимости от операционной системы).

Данную программу необходимо скопировать на карманный компьютер посредством ActiveSync и запустить как обычное Windows-приложение.
Программа для ОС Windows CE отображает диалоговое окно с указанием серийного номера устройства, который можно использовать для активации продукта. Программа для ОС Windows Mobile выдает диалоговое окно с предложением указать способ определения серийного номера. Предлагается три варианта: 

· Стандартный для Pocket PC

· Стандартный для Windows Mobile

· Нестандартный

Стандартный вариант для Pocket PC использует типовой для данной ОС (Pocket PC 2003, Pocket PC 2003 SE) метод определения серийного номера. Стандартный для Windows Mobile использует другой метод, типовой для ОС Windows Mobile 5.0 и выше.

Кроме того, в ряде случаев может использоваться нестандартный способ. Данный способ востребован, когда стандартный способ не позволяет правильно определить серийный номер.

Для определения серийного номера устройства используются средства операционной системы. 

В варианте "Стандартный для Pocket PC" используется специальный метод Windows Mobile API, который возвращает набор шестнадцатеричных цифр (цифр от 0 до 9 и букв от a до f ) и включает тип устройства и уникальный номер устройства. Длина набора зависит от конкретного устройства. При реализации данного метода для ряда конкретных устройств некоторые производители используют иную - нестандартную схему формирования серийного номера, при которой тип устройства и его код переставлены местами. Вследствие этого возникает ситуация, когда программа установки "1С:Предприятие 8. Расширение для карманных компьютеров" для разных устройств получает один и тот же серийный номер (определяющий, по сути, тип устройства, а не его код). В результате одновременная работа сервера мобильных приложений с такими устройствами становится невозможной.

В варианте "Стандартный для Windows Mobile" используется другой метод, при использовании которого не возникает описанных выше проблем.

После указания в диалоге способа определения серийного номера приложение отображает диалог, содержащий серийный номер устройства. Кроме того, в корневой директории устройства создается файл 1CV8PSN.INI. Файл имеет следующую структуру:

[Serial number]
type=1
 

Значение параметра type определяет, какая схема определения серийного номера используется. Если type = 0 - используется стандартная схема определения серийного номера для Pocket PC. Если type = 1 - используется нестандартная схема. Если type = 2 - используется стандартная схема для Windows Mobile.

При отсутствии данного файла программа установки платформы исполнения использует стандартную схему в зависимости от ОС - для Pocket PC, либо для Windows Mobile.

Следует отметить, что способ определения "Стандартный для Windows Mobile" включен в "1С:Предприятие 8. Расширение для карманных компьютеров", начиная с версии 8.1.5. В предыдущих версиях использовался способ определения серийного номера "Стандартный для Pocket PC" (либо "Нестандартный" в случае явного указания этого), независимо от версии ОС.

Поэтому, перед установкой программы, если серийный номер был определен предыдущими версиями программы (до 8.1.5), необходимо обязательно сформировать файл 1CV8PSN.INI. При этом должен быть указан способ определения серийного номера, при помощи которого ранее был получен серийный номер (либо "Стандартный для Pocket PC", либо "Нестандартный", независимо от используемой ОС). При отсутствии указанного ini-файла, либо при указании способа "Стандартный для Windows Mobile" в данном случае серийный номер, определяемый платформой, будет определяться с использованием варианта "Стандартный для Windows Mobile" и не будет соответствовать ранее полученному, вследствие чего программа не будет активирована.

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

Файл 1CV8PSN.INI должен быть создан на устройстве до запуска программы установки.

Примечание
При получении кода активации не следует указывать в качестве серийного номера устройства его код IMEI - серийный номер устройства, необходимый для активации продукта, не совпадает с кодом IMEI.
andr_andrey,
09.02.09, 11:34 Особенности работы с хранилищем конфигурации
Хранилище конфигурации предназначено для коллективной разработки конфигурации. В хранилище сохраняется история разрабатываемой конфигурации, а также информация о том, когда и кто вносил изменения в конфигурацию. Разработка конфигурации с использованием хранилища может вестись неограниченным числом пользователей.

Принцип работы

Хранилище конфигурации представляет собой базу данных, в которой сохраняются все изменения конфигурации, сделанные в процессе её разработки. После подключения информационной базы к хранилищу из него в информационную базу загружается последняя версия конфигурации, и все объекты метаданных конфигурации становятся недоступными для редактирования. 

Гранулой редактирования - объектами разработки - являются все основные объекты метаданных (такие как справочники, документы, регистры сведений), а также формы и макеты. Объекты разработки могут редактироваться независимо друг от друга разными пользователями. Реквизиты, табличные часть и т.д. не являются отдельными объектами с логической точки зрения, поэтому они не были включены в состав объектов разработки. Данные объекты метаданных редактируются в составе своих родительских объектов, являющихся объектами разработки.

Для получения возможности редактирования объекта необходимо произвести его захват в хранилище. При выполнении захвата из хранилища будет получена (в случае наличия) новая версия объекта разработки. После внесения изменений объект необходимо поместить в хранилище, после этого обновленная версия объекта становится доступной для других пользователей, участвующих в процессе разработки конфигурации. Если же изменения не должны быть помещены в хранилище, то предусмотрена процедура отмены захвата, при которой из хранилища получается старая версия объекта разработки. Таким образом, можно выделить четыре простейшие операции работы с хранилищем:

  • захват объекта в хранилище;
  • помещение объекта в хранилище;
  • получение объекта из хранилища;
  • отмена захвата в хранилище.
Для параллельной разработки конфигурации в хранилище используется стратегия пессимистической блокировки: в то время, пока объект разработки редактируется одним пользователем, другие пользователи не имеют возможности его редактировать.

Стоит обратить внимание на тот факт, что при подключении информационной базы к хранилищу конфигурации происходит полная замена текущей редактируемой конфигурации конфигурацией хранилища . Это необходимо для обеспечения полного соответствия идентификаторов объектов метаданных. Если все же имеется информационная база, часть объектов метаданных конфигурации которой необходимо перенести в конфигурацию хранилища, то необходимо:

  • выгрузить конфигурацию из информационной базы в файл,
  • подключить информационную базу к хранилищу конфигурации,
  • выполнить захват объектов, которые необходимо заместить,
  • произвести объединение с требуемой конфигурацией.
Важно понимать, что предметом разработки является конфигурация, а не отдельные объекты. Хранилище ведет историю развития конфигурации. При помещении объектов разработки в хранилище создается новая версия конфигурации, для которой записываются: дата создания версии, пользователь, создавший версию, а также списки объектов разработки, которые были добавлены, изменены, удалены в процессе получения данной версии конфигурации. История объектов разработки не ведется. Несмотря на то, что имеется возможность просмотра истории объекта разработки, отдельно загрузить из хранилища объект разработки какой-либо версии конфигурации невозможно, возможна лишь загрузка из хранилища версии конфигурации целиком. Однако все же имеется возможность получения объекта определенной версии конфигурации: необходимо захватить объект и выполнить объединение с версией конфигурации, в которой данный объект имеет требуемое состояние.

При создании новой версии конфигурации хранилища имеется возможность записать комментарий к этой версии. Рекомендуется комментировать версии конфигурации, для того чтобы впоследствии можно было понять, что именно было изменено в данной версии конфигурации. Для наиболее значимых версий (например: выпуск релиза) рекомендуется также устанавливать метку - строку, кратко описывающую версию конфигурации хранилища.

В процессе разработки конфигурации с использованием хранилища рекомендуется периодически получать актуальное состояние объектов разработки. Это позволяет избежать возможных трудностей при помещении объектов в хранилище (например при удалении объектов метаданных из конфигурации).

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

Если по каким-либо причинам хранилище конфигурации недоступно, то имеется возможность продолжать работу с объектами разработки, захваченными ранее в хранилище. Таким образом, можно вести разработку, не имея постоянной непосредственной связи с хранилищем конфигурации.


Режимы использования

Для работы с хранилищем конфигурации предусмотрено несколько способов:

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

Работа с подключением информационной базы к хранилищу

Этот режим является основным режимом работы с хранилищем. Он используется для групповой разработки конфигурации несколькими пользователями. 

Работа в данном режиме начинается с процедуры подключения информационной базы к хранилищу. К одному хранилищу может быть одновременно подключена одна информационная база от имени одного пользователя. Если пользователь, у которого уже имеется информационная база, подключенная к данному хранилищу, произведет попытку подключения другой информационной базы, то ему будет выдано соответствующее предупреждение. Если же подключение все же будет осуществлено, то прежняя информационная база уже не сможет работать с данным хранилищем конфигурации без предварительного отключения от него. Аутентификация в хранилище от имени пользователя, не подключавшего данную информационную базу к хранилищу, невозможна. 

При подключении информационной базы к хранилищу в нем регистрируется строка соединения с информационной базой. Если при последующих соединениях с хранилищем данная строка будет изменена (по каким-либо причинам информационная база была перемещена на другой ресурс), то платформой будет выдано соответствующе предупреждение, и, в случае подтверждения соединения, строка соединения будет обновлена. Если соединение происходило копией информационной базы, то работа оригинала с данным хранилищем будет невозможна без предварительного отключения от него.

Работа без подключения информационной базы к хранилищу

Режим обеспечивает возможность просмотра и администрирования хранилища без подключения к нему, т.е. без замены редактируемой конфигурации конфигурацией хранилища. В данном режиме пользователь может получить конфигурацию определенной версии хранилища, посмотреть историю конфигурации или отдельных объектов разработки, произвести действия по редактированию прав пользователей или изменению их состава.

Работа в данном режиме начинается с открытия хранилища конфигурации, данная процедура заключается в аутентификации пользователя в хранилище, которая будет автоматически предложена при выполнении любого первого действия с хранилищем в данной сессии работы Конфигуратора. Для открытия другого хранилища в данной сессии Конфигуратора необходимо закрыть текущее хранилище конфигурации, выполнив соответствующий пункт меню.

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

  1. Создать новую информационную базу.
  2. Открыть хранилище конфигурации.
  3. Из хранилища конфигурации загрузить конфигурацию нужной версии.
  4. Произвести заполнение информационной базы необходимыми данными.
  5. Произвести подготовку дистрибутива конфигурации.
  6. В процессе модернизации конфигурации хранилища для выпуска новых дистрибутивов необходимо повторить процедуру, начиная с пункта 2, и, если новых данных вводить не требуется, сразу выполнить подготовку дистрибутива.
Контроль ссылочной целостности

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

Пример: удаление справочника Склады из демонстрационной конфигурации "Примеры ИТС":


  • происходит проверка имеющихся на этот объект ссылок в других объектах: 
    "Справочник.Склады" использован в:
    
    
    Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
    Документ.РасходнаяНакладная.Реквизит.Склад.Тип
    РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
  • после удаления обнаруженных ссылок справочник Склады успешно удаляется из конфигурации, хотя ссылка не него по-прежнему имеется в интерфейсе Основной (кнопка Склады из подменю Справочники содержит действие "Склады: Открыть справочник") и формах документов ПриходнаяНакладная, РасходнаяНакладная (поля ввода, предназначенные для редактирования реквизитов Склад по-прежнему имеют тип СправочникСсылка.Склады).
При разработке конфигурации без использования хранилища этого вполне хватает. Однако для параллельной разработки конфигурации такой контроль ссылочной целостности недостаточен.

Хранилище конфигурации обеспечивает более строгий контроль ссылочной целостности конфигурации. Производится полный контроль ссылок между объектами метаданных как на уровне самих объектов, так и на уровне содержимого их форм и макетов, а также содержимого интерфейсов.

Следствием этого факта является необходимость получения из хранилища (помещения в хранилище) объектов, так или иначе связанных с объектом, над которым непосредственно производится действие. Однако хранилище конфигурации производит анализ ссылок объекта и требует получения (помещения) дополнительных объектов только в случае необходимости.

Анализ ссылок производится рекурсивно: сначала производится анализ объекта, с которым производится действие в хранилище; затем при обнаружении необходимости выполнения операции над дополнительными объектами аналогичный анализ производится для них, и так до тех пор, пока ссылки всех требуемых объектов не будут проанализированы.


Особенности конфигурирования

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

Как уже говорилось ранее, для получения возможности редактирования объекта необходимо произвести его захват в хранилище конфигурации. Если необходимо внести изменения в объект метаданных, не являющийся объектом разработки (реквизиты, табличные части), то необходимо произвести захват того объекта разработки, который содержит данные объекты метаданных.

Для добавления нового объекта метаданных или же для изменения порядка следования существующих объектов необходимо произвести захват родительского объекта разработки.

Удаление объектов конфигурации

Особое внимание стоит уделить процедуре удаления объектов метаданных из конфигурации. Для удаления объекта метаданных из конфигурации необходимо захватить в хранилище сам удаляемый объект, его родительский объект, а также все подчиненные объекты удаляемого. После чего появится возможность удалить объект из конфигурации.

Однако при помещении в хранилище, если на удаленный объект имеются ссылки в других объектах, средства работы с хранилищем потребуют помещение этих объектов в хранилище с очищенными ссылками на удаленный объект.

Рекомендуется перед удалением объекта из конфигурации производить поиск ссылок на данный объект. Произвести захват в хранилище всех обнаруженных объектов и вычистить из них все ссылки на удаляемый объект. После этого необходимо удалить все ссылки на удаляемый объект из форм, интерфейсов и макетов. После чего удалить объект из конфигурации и произвести попытку помещения изменений в хранилище. Если помещение в хранилище завершится неудачей из-за обнаружения ссылок на удаленный объект, то необходимо захватить указанные объекты и произвести повторную попытку помещения изменений в хранилище.

Пример: удаление справочника Склады из демонстрационной конфигурации "Примеры ИТС":


  • Производим поиск ссылок на удаляемый объект: 
    "Справочник.Склады" использован в:
    
    
    Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
    Документ.РасходнаяНакладная.Реквизит.Склад.Тип
    РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
  • Захватываем данные объекты и удаляем из них реквизиты, ссылающиеся на справочник Склады.
  • Захватываем интерфейс "Основной" и удаляем из него кнопку Склады из подменю Справочники с действием "Склады: Открыть справочник".
  • Захватываем корневой объект конфигурации и справочник Склады.
  • Удаляем справочник Склады из конфигурации.
  • Производим попытку помещения корневого объекта конфигурации в хранилище:
artamir, aRUSt,
09.02.09, 10:07 Настройка поставки и создание файлов поставки и обновления
Рассмотрим вопрос подготовки и создания комплектов поставки прикладных решений.
Поставка конфигураций может производится с помощью файлов различных форматов и содержания: 

  • файл конфигурации (cf), содержащий дистрибутив конфигурации;
  • файл информационной базы (1cd), содержащий готовую к работе, но пустую базу данных (или заполненную некоторыми обязательными начальными данными);
  • файл информационной базы, содержащий демонстрационные данные, соответствующие им файлы выгрузки информационной базы (dt).
Для создания конфигурации, которая может быть использована в качестве конфигурации поставщика, необходимо подготовить специальные варианты этих файлов. Основой для них является файл дистрибутива конфигурации (cf), подготовка которого будет описана. В конце раздела будет рассмотрен вопрос создания файлов других форматов с помощью файла конфигурации.

Настройка поставки

Настройка поставки позволяет задать правила, по которым будет осуществляться поддержка конфигурации у пользователей. Самыми важными являются правила поставки различных объектов метаданных. Следует обратить внимание, что правила поставки задаются только для объектов верхнего уровня, таких как справочники, документы, регистры. Для объектов метаданных, им подчиненных, таких как реквизиты, табличные части, формы, макеты, будут использоваться соответствующие правила родительских объектов. Напомним, что для объекта можно задать три варианта правила поставки:

  • изменения разрешены;
  • изменения не рекомендуются;
  • изменения запрещены.
Эти варианты определяют допустимые правила поддержки, которые будут устанавливаться пользователем. Более подробно вопрос описан в разделе "Введение в поставку и поддержку конфигураций".

Для объектов так же можно задать правила поставки модулей. Для этого используется флажок "Включать тексты модулей объекта". В случае отмены поставки текстов модулей пользователь не будет иметь возможности просматривать и изменять тексты программ на встроенном языке "1С:Предприятия", что может являться как элементом защиты интеллектуальной собственности поставщика, так и элементом поддержки логической целостности конфигурации. 

В настройке поставки конфигурации так же можно установить флажок "Файл поставки может использоваться для обновления". Как было описано в разделе "Введение в поставку и поддержку конфигураций", для обновления конфигурации поставщика могут использоваться как специальные файлы обновления (cfu), так и полные файлы конфигурации (cf). Сброс данного флажка отменяет последнюю возможность. Это может быть полезно, когда новая версия конфигурации требует сложной обработки базы данных. 

Например, изменение типа реквизита справочника со строки на ссылку на другой справочник требует "двухпроходного обновления". Сначала требуется добавить новый реквизит типа ссылки, заполнить его на основе значения старого реквизита, и только потом можно удалить старый реквизит, а новый переименовать. Такую процедуру нельзя выполнить в рамках одного изменения структуры базы данных с предшествующим и / или последующим выполнением специальной обработки. Требуется подготовить промежуточную версию конфигурации, в которой новый реквизит будет добавлен, а старый еще не удален, и написать соответствующие обработки. Процедуру обновления конфигурации в этом случае, конечно, следует подробно описать в документации, но всегда существует вероятность ошибочных действий со стороны пользователя. Использование флажка "Файл поставки может использоваться для обновления" позволяет поставщику подстраховаться от ошибок пользователя в процессе обновления. Общая схема может быть примерно такой:

  • Подготавливается файл обновления конфигурации с предыдущих версий до промежуточной.
  • Подготавливается файл обновления конфигурации с промежуточной (только) версии до конечной.
  • Подготавливается файл конфигурации с отключенным флажком "Файл поставки может использоваться для обновления".
Пользователь, имеющий конфигурацию старой версии, не сможет нарушить правильный порядок обновления, поскольку, даже если он получит файл конфигурации новой версии, выполнить с помощью него обновление он не сможет. Однако следует иметь в виду недостаточную гибкость этого средства. При его отключении пользователь не сможет при необходимости выполнить "обратное обновление" с более поздней версии. По умолчанию флажок "Файл поставки может использоваться для обновления" включен. 

Стандартная структура каталогов файлов поставки и обновления

Механизм поставки конфигураций предлагает определенную схему размещения на диске файлов поставки и поддержки разных версий. В диалоге "Создание файлов поставки и обновления конфигурации" нажав кнопку "Каталог файлов поставки" можно задать корневой каталог для размещения создаваемых файлов. Файлы поставки и обновления будут по умолчанию располагаться в подкаталогах, имеющих имена, соответствующие свойству "Версия" конфигурации. Использование этой схемы позволит упростить подготовку обновлений для новых версий конфигурации, как это будет описано ниже. Следует иметь ввиду, что корневой каталог не сохраняется внутри самой конфигурации и будет изменен при переносе файла информационной базы "1cd" на другой компьютер.

Создание файлов поставки и обновления конфигурации


Файлы поставки и обновления могут создаваться как одновременно, так и раздельно, из диалога "Создание файлов поставки и обновления". Но одновременно может быть создан только один файл обновления. Для создания нескольких файлов обновления с разного набора предыдущих версий следует выполнить процедуру создания файлов обновления несколько раз. Файл поставки при этом может быть создан только однажды. Впрочем, отказ от создания файла поставки не приведет к ускорению создания файла обновления. В случае конфигурации большого объема это достаточно длительный процесс, время исполнения которого зависит от количества выбранных версий, подлежащих обновлению.

При включении флажка "Создать файл обновления конфигурации" следует указать один или несколько файлов предыдущих версий, для которых и будет подготовлено обновление. Следует напомнить что, как было описано в разделе "Введение в поставку и поддержку конфигураций", файлы обновления не являются кумулятивными, то есть создание обновления с версии "4" до версии "6" не позволит с помощью этого файла произвести обновление с версии "5", если только она не была указана при создании. Для выбора файлов предыдущих версий можно пользоваться как кнопкой "Добавить" и прямым выбором файла, так и кнопкой "Добавить из предыдущих версий", которая сама найдет и предложит для выбора файлы, если они были размещены на диске в соответствии с описанной выше стандартной структурой каталогов. С помощью команды "Добавить" можно указать и файлы других конфигураций. После чего обновление может быть выполнено и для них, однако это должны быть именно файлы поставки, а не произвольные файлы конфигурации.


Создание файлов поставки других форматов


Как было отмечено в начале раздела, созданный файл поставки конфигурации (cf) должен являться основой для всех других файлов поставки. Рассмотрим подготовку файла информационной базы (1cd), содержащего, например, демонстрационные данные. Демонстрационную базу можно подготовить отдельно, пользуясь при этом, например, конфигурацией, полученной обычной выгрузкой из информационной базы, в среде которой осуществляется разработка дистрибутива. Конфигурации не обязательно должны быть строго идентичными, но расхождения между ними должны позволять производить обновление конфигурации базы данных (и самих данных) без проблем. 

Открыв в режиме конфигуратора файл информационной базы, содержащий необходимые данные, следует выполнить команду "Конфигурация\Загрузить конфигурацию из файла...", согласиться на замену текущей конфигурации и выполнить обновление конфигурации базы данных. Полученную в результате информационную базу можно использовать для поставки. Для подготовки файла выгрузки конфигурации (dt) следует в ее среде выполнить стандартную команду "Администрирование\Выгрузить информационную базу".
buddha667, char_p,
09.02.09, 9:32 Рекомендации по модификации конфигурации поставщика
Адаптация тиражной конфигурации под требования конкретного пользователя должна быть продумана с точки зрения последующих обновлений. Существующий в платформе 1С:Предприятие 8 механизм поддержки значительно упрощает данный процесс, но в случае внесения в конфигурацию поставщика достаточно серьезных изменений, интеграция обновлений, содержащихся в новой версии поставщика, в модифицированную конфигурацию требует ручной работы. Приведенный ниже список рекомендаций получен на основе анализа использования данного механизма и призван упростить решение этой задачи. Некоторые из рекомендаций более подробно описаны в разделах по поставке и поддержке конфигураций. Здесь дается сводный перечень рекомендаций:


  • Не рекомендуется снимать объекты с поддержки. Нормальным правилом для объекта является "Редактируется с сохранением поддержки". Полное снятие с поддержки имеет смысл, только если дальнейшее развитие объекта предполагается производить собственными силами. Также снятие объекта с поддержки требуется, если возникает необходимость удаления объекта. 
  • Следует с осторожностью относиться к удалению объектов поставщика, даже в том случае, если не предполагается их непосредственное использование. Алгоритмы конфигурации поставщика могут использовать эти объекты для "внутренних нужд", и их удаление может привести к нарушению логической целостности конфигурации. 
  • Сортировка объектов метаданных. Особенность реализации объединения конфигураций заключается в том, что в случае серьезных различий в составе поддерева объектов выбор правила "Порядок из конфигурации поставщика" не гарантирует полного сохранения порядка после объединения. Если сохранение данного порядка представляется критичным, можно после обновления конфигурации выполнить объединение с конфигурацией поставщика, вызываемое из диалога настройки поддержки. Повторное выполнение объединения (после обновления) приведет к полному восстановлению порядка. 
  • Сопоставление объектов. При выполнении обновления новым объектам поставщика можно поставить в соответствие пользовательские объекты. Однако следует очень аккуратно относиться к этой процедуре, поскольку в последствии изменить данное соответствие будет невозможно. 
  • Добавление подчиненных объектов. Необходимость добавить реквизит или новый макет (форму) в объект, например справочник, не является поводом для снятия самого справочника с поддержки. Механизм поддержки обеспечит сохранение этого реквизита после обновления справочника. Но следует помнить, что не любое добавление подчиненного объекта одинаково просто. Например, добавление измерения в регистр серьезно меняет его функционирование.  
  • Обновление конфигурации в среде групповой разработки. Самая лучшая рекомендация заключается в полном захвате всех объектов конфигурации перед обновлением. Если объект не захвачен в хранилище, то его обновление выполнено не будет. Наконец захват корневого объекта конфигурации является обязательным требованием выполнения обновления. 
  • Редактирование конфигурации в процессе настройки обновления. Мы не рекомендуем пользоваться этой возможностью. Во-первых, последующее обновление сравнения потребует времени. Во-вторых, если в процессе редактирования появился новый объект, для которого нужно выполнить обновление, то расстановка правил по умолчанию для него выполнена не будет. Если подобная необходимость все-таки возникает, следует после завершения редактирования закрыть окно сравнения конфигураций и заново выполнить команду обновления конфигураций. В отличие от нажатия кнопки "Обновить", будет произведена полная установка правил обновления объектов. 
  • Не рекомендуется без серьезной необходимости переименовывать объекты метаданных, процедуры и функции. Следует помнить, что имя, используемое в модуле для доступа к какому-либо объекту, может формироваться динамически, и обнаружение и исправление таких мест может представлять собой сложную задачу. Кроме того, изменение большого количества модулей создаст дополнительные проблемы при последующих обновлениях. 
  • Локализация текстов модулей. Редактирование параметров функции НСтр() рекомендуется производить с использованием средства "Редактирование текстов интерфейса" а не прямым исправлением модулей. В случае использования в строках некоторых знаков препинания, корректная форма шаблона для функции НСтр() может выглядеть довольно сложной. Лучше поручить это перекодирование программе. 
  • Объединение сложных свойств. Следует помнить, что действительное объединение таких свойств, как формы, макеты или интерфейсы, то есть установка для них правил "Объединять с приоритетом ...", является достаточно сложным процессом, и требует обязательного ручного контроля результатов. Рекомендуется пользоваться средствами формирования визуального отчета о сравнении таких свойств для анализа различий. Иногда может оказаться целесообразным отказаться от объединения и заново внести доработки в новую версию формы поставщика. 
  • Модификация общих модулей. При разработке собственных универсальных процедур, рекомендуется располагать их в новых модулях, а не помещать в модули поставщика. Если возникает необходимость модификации модулей поставщика, при обновлении следует помнить о возможности настройки объединения на уровне отдельных процедур. 
  • По аналогии с модификацией модулей, рекомендуется по возможности добавлять новые процедуры и функции, а не изменять существующие. Если подобное невозможно (например, требуется модификация обработчика события), следует оформлять добавляемый код в отдельную процедуру, а в процедуре поставщика вставлять только ее вызов. 
  • Анализ изменений внесенных поставщиком. Хотя механизм формирования отчета о сравнении предоставляет достаточно полную информацию о внесенных изменениях, его анализ может занять много времени. Рекомендуется внимательно ознакомиться с прилагаемым к новой версии конфигурации поставщика файлом описания внесенных изменений. Это может помочь выбрать правильную стратегию для обновления различных объектов. 
  • Не следует обновлять объекты, используя копирование через буфер обмена. Это не только нарушит нормальное функционирование механизма поддержки, но может привести к нарушению логической целостности конфигурации и потере данных. 
  • Ознакомьтесь с разделами ИТС, посвященными механизму поставки и поддержки конфигураций. Понимание принципов его функционирования повысит эффективность его использования.
lena77,
09.02.09, 9:28 Пример создания и публикации обновления
Пример создания и публикации обновления

Рассмотрим задачу создания разработчиками обновления типовой конфигурации, публикации обновления на http-ресурсе и использования опубликованного обновления конечными пользователями. 

Предположим, сотрудники организации "Моя Фирма" на версии 8.1.13 платформы "1С:Предприятия" разработали версию 1.0.1.27 конфигурации "МояКонфигурация" и поставили ее конечным пользователям . Через некоторое время разработана новая версия конфигурации - 1.0.2.18. Требуется создать обновление конфигурации, опубликовать его на http-ресурсе и обновить с использованием http-ресурса у конечного пользователя конфигурацию с версии 1.0.1.27 на версию 1.0.2.18.

Ниже, в качестве примера, приводится пошаговая инструкция решения поставленной задачи. 

Будем работать с четырьмя каталогами: 

D:\WORK - каталог информационной базы;
D:\VERS - каталог для хранения версий файлов поставки и файлов обновления;
D:\DIST - каталог дистрибутивов;
каталог TEST на гипотетическом ресурсе http://my_http (при рассмотрении примера используйте свой http-ресурс).

1. Загружаем версию 1.0.1.27 конфигурации. 
2. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Создать файлы поставки и обновления конфигурации ...". 
3. Нажимаем кнопку "Каталог файлов поставки". 
4. Указываем каталог D:\VERS.
5. Убираем флажок "Создать файл обновления конфигурации"
6. Нажимаем кнопку "Выполнить". 
7. Убеждаемся, что создался файл D:\VERS\1.0.1.27\1Cv8.cf.
8. Загружаем версию 1.0.2.18 конфигурации. 
9. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Создать файлы поставки и обновления конфигурации ...".
10. Убеждаемся, что оба флажка установлены и:
имя файла поставки - D:\VERS\1.0.2.18\1Cv8.cf;
имя файла обновления - D:\VERS\1.0.2.18\1Cv8.cfu.
11. Нажимаем кнопку "Добавить из предыдущих версий".
12. Выбираем D:\VERS\1.0.1.27\1Cv8.cf и нажимаем кнопку "ОК"
13. Нажимаем кнопку "Выполнить". 
14. Убеждаемся, что создались файлы:
D:\VERS\1.0.2.18\1Cv8.cf;
D:\VERS\1.0.2.18\1Cv8.cfu.
15. Выбираем пункт меню "Конфигурация - Поставка конфигурации - Комплект поставки ...".
16. Выбираем "Создать новое описание комплекта поставки" и нажимаем кнопку "ОК". 
17. В диалоге "Создание описания комплекта поставки" нажимаем кнопку "Готово".
18. Выбираем ветку Шаблоны конфигураций\МояКонфигурация (..., версия 1.0.2.18) и нажимаем кнопку "Добавить".
19. Выбираем "Отдельный файл", указываем путь D:\VERS\1.0.2.18\1Cv8.cfu и нажимаем кнопку "ОК".
20. В каталоге информационной базы D:\WORK создаем файл описания порядка обновления 1cv8upd.htm (наряду с *.htm можно использовать *.html, *.txt, *.mxl) и добавляем его по аналогии с D:\VERS\1.0.2.18\1Cv8.cfu.
21. Выбираем ветку "Вариант поставки" и нажимаем кнопку "Добавить".
22. Переименуем "Вариант поставки 1" в "Поставка обновления". 
23. Нажимаем ссылку "Редактировать".
24. В диалоге "Вариант построения" ставим флажок возле файлов 1Cv8.cfu и 1cv8upd.htm и нажимаем кнопку "ОК".
25. Нажимаем кнопку "Создать файлы комплекта". 
26. В диалоге "Выбор варианта построения" выбираем "Поставка обновления" и нажимаем кнопку "ОК".
27. Выбираем каталог D:\DIST и нажимаем кнопку "Open". 
28. Убеждаемся, что создались файлы:
D:\DIST\КаталогПоставщика\1Cv8.cfu;
D:\DIST\КаталогПоставщика\1cv8upd.htm;
D:\DIST\КаталогПоставщика\1Cv8.mft.
29. Выбираем пункт меню "Конфигурация - Поддержка - Шаблоны конфигураций и обновлений...".
30. Указываем каталог D:\DIST и нажимаем кнопку "Open". 
31. Убеждаемся, что видна ветка МояКонфигурация, редакция 1.0 - 1.0.2.18(обновление).
32. Выбираем "Действия - Создать файл списка шаблонов". 
33. Убеждаемся, что создался файл D:\DIST\v8cscdsc.lst. 
34. Копируем содержимое (с подкаталогами) D:\DIST\ в http://my_http/TEST, так, что путь к v8cscdsc.lst - http://my_http/TEST/v8cscdsc.lst. 
35. Загружаем версию 1.0.1.27 конфигурации, находящуюся на поддержке. 
36. Выбираем пункт меню "Конфигурация - Поддержка - Обновить конфигурацию...".
37. Выбираем "Поиск доступных обновлений". 
38. Убираем флажок "Искать в текущем каталоге ...". 
39. Нажимаем кнопку "Добавить", и в диалоге "Выбор каталога" указываем путь http://my_http/TEST.
40. Нажимаем кнопку "Далее >". 
41. Выбираем 1.0.2.18(обновление) и нажимаем кнопку "Готово".
42. Читаем порядок обновления и нажимаем кнопку "Продолжить обновление"
43. Обновляем конфигурацию "МояКонфигурация" поставщика "Моя Фирма" с версии 1.0.1.27 на версию 1.0.2.18.
aRUSt, lena77, roman457,
08.02.09, 21:16 Встроенный язык программирования
Встроенный язык программирования


Встроенный язык – очень важная часть "1С:Предприятия". Он имеет много общих черт с такими языками, как Pascal, Java Script, Basic, но не является прямым аналогом какого-либо из этих языков. Как уже было сказано, прикладные решения в "1С:Предприятии" не программируются (кодируются) целиком, большая их часть описывается параметрически — в виде структур метаданных, с помощью дизайнера форм, отчетов и т.д.

Соответственно, встроенный язык "1С:Предприятия" является скриптовым языком, предназначенным в первую очередь для программирования бизнес-логики в контексте объектной модели "1С:Предприятия". На нем программируются обработчики различных событий, изменяющих состояние объектов системы, например, обработчики команд пользователя, обработчики проведения документов и т.д.

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

В числе наиболее значимых технологических особенностей встроенного языка:
  • предварительная компиляция. Перед исполнением модули преобразуются во внутренний код;
  • кэширование скомпилированных модулей в памяти;
  • мягкая типизация — тип переменных может изменяться в процессе работы;
  • отсутствие программного описания объектов конфигурации — прикладное решение может манипулировать либо встроенными в платформу "1С:Предприятия" объектами, либо объектами, описанными разработчиком в процессе визуального конструирования системы в виде объектов метаданных.
VadikStarter,
08.02.09, 20:49 Запуск двух сеансов 1С:Предприятия
В процессе работы с 1С:Предприятием возникают ситуации, когда системой выполняются продолжительные действия, например формирование больших отчетов или групповое перепроведение документов. В такие моменты пользователь программы не может выполнять другую работу в ней, поскольку программа занята.

Если есть необходимость продолжить работу с 1С:Предприятием, можно запустить второй сеанс так же, как вы это делаете обычно. Во втором сеансе пользователь может работать точно так же, как любой другой пользователь с этой информационной базой. После того, как сеанс уже не нужен, его рекомендуется закрыть, чтобы программа не занимала оперативную память.
niklain-k, Wolf1982,
08.02.09, 19:56 Основы формирования табличного документа на основе макета
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.

Области макета предназначены для однократного или многократного вывода.

Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".

Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).

Общая схема
1. Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
2. Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
3. Получение макета в переменную (метод ПолучитьМакет).
4. Получение областей макета (метод ПолучитьОбласть).
5. Заполнение параметров области (свойство Параметры).
6. Вывод области в табличный документ (методы Вывести и Присоединить).
7. Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
8. Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

Пример вывода табличного документа

Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:


Процедура Печать(ТабДок) Экспорт

//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент;

//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Основной");

//получим область "Заголовок" как новый табличный документ (!)
Область = Макет.ПолучитьОбласть("Заголовок");

//укажем параметры области
Область.Параметры.НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;

//выведем заполненную область "Заголовок" в табличный документ
ТабДок.Вывести(Область);

//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");

//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры.Заполнить(СтрСостава);

//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);

КонецЦикла;

//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);

//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;

//покажем табличный документ на экране
ТабДок.Показать();

КонецПроцедуры


Основные методы

Основные методы формирования итогового табличного документа следующие:
Вывести
Выводит в печатную форму очередной фрагмент (табличный документ), добавляя его снизу, начиная с первой колонки.
Присоединить
Присоединяет к печатной форме очередной фрагмент (табличный документ) справа, начиная со строки, с которой выводился предыдущий фрагмент методом Вывести
Область
Позволяет получить область как объект типа "ОбластьЯчеекТабличногоДокумента". Через этот объект можно устанавливать форматирование области: задавать размер и цвет шрифта, цвет фона и узор ячеек.
ПолучитьОбласть
Позволяет получить область как объект типа "ТабличныйДокумент". Этот объект можно затем передать в методы Вывести и Присоединить. Через этот объект также указываются значения параметров области.
1cnovice, Romio, stark,
08.02.09, 19:33 Назначение прикладного объекта "План видов характеристик"
С помощью плана видов характеристик можно организовать хранение свойств объектов, которые еще не известны на момент разработки конфигурации. Т.е. пользователь может самостоятельно вводить новые свойства, например, цвет, размер, габариты, мощность. Для каждой группы товаров может быть свой набор свойств: для холодильников — это объем морозильной камеры, число компрессоров, уровень шума; для компьютеров — объем оперативной памяти, объем жесткого диска; для одежды — размер, рост, цвет и т.д. Затем на основе этих характеристик можно строить отчеты, анализировать объем продаж, получать ценную информацию для принятия решений.

Важной особенностью плана видов характеристик, отличающей его от других объектов, является его свойство "Тип значения". Это свойство позволяет определить список возможных типов данных, используемых для видов характеристик. Т.е. обычно используется составной тип данных, при этом можно указать как примитивные типы данных (число, строка, дата, булево), так и ссылочные типы данных (СправочникСсылка, ДокументСсылка и т.д.). Для каждого вида характеристики указывается тип значений из списка выбранных типов, например, для характеристики Поставщик выбирается СправочникСсылка.Контрагенты. Пользователь может вводить новые характеристики в режиме "Предприятие" и указывать им тип значения из списка типов, указанных в конфигураторе для плана вида характеристик.

Другое важное свойство плана видов характеристик — это свойство "Дополнительные значения характеристик", в котором указывается подчиненный справочник, например, ЗначенияСвойствОбъектов, содержащий возможные значения характеристик. Обычно этот справочник используется пользователем в режиме "Предприятие" при вводе новых видов характеристик, для которых нет подходящих справочников в конфигурации, тогда в справочник ЗначенияСвойствОбъектов пользователь может ввести список возможных значений для каждого вида характеристики.

В качестве примера можно посмотреть как реализован механизм свойств в типовой конфигурации "Управление торговлей". Для этого используются следующие объекты:
 - План видов характеристик СвойстваОбъектов, у которого в качестве типа значения характеристик используется составной тип данных, куда входят примитивные типы данных (число, строка, дата, булево) и ссылки на различные прикладные объекты: справочники, документы, перечисления.
 - Справочник ЗначенияСвойствОбъектов, подчиненный плану видов характеристик СвойстваОбъектов. Этот справочник содержит список возможных значений для данного свойства, например, перечень всех цветов для свойства "Цвет": красный, зеленый, белый и т.д.
 - Регистр сведений ЗначенияСвойствОбъектов, имеющий измерения Объект (СправочникСсылка, ДокументСсылка) и Свойство (ПланВидовХарактеристикСсылка.СвойстваОбъектов) и ресурс Значение, который содержит значение конкретного свойства для конкретного объекта.

Примечание. Для упрощения понимания здесь не затронут механизм назначения свойств объектов. Данный механизм использует реквизит плана видов характеристик и еще один регистр сведений.

Другим важным применением плана видов характеристик является аналитический учет по субконто в бухгалтерском учете. В плане видов характеристик заводятся предопределенные виды субконто, например, контрагенты, номенклатура, договоры и т.д. Затем эти виды субконто прикрепляются к счету, хранящемуся в плане счетов. Пользователь в режиме "Предприятие" также может ввести новые виды субконто в план видов характеристик.

Для примера рассмотрите, как реализован учет по субконто в демонстрационной конфигурации "Бухгалтерский учет", поставляемой на диске ИТС. При этом используются следующие объекты:
 - План видов характеристик ВидыСубконто. В качестве типов значений используются ссылочные типы данных. Крайне не рекомендуется для учета по субконто использовать примитивные типы данных, это снизит производительность системы.
 - План счетов Основной, в которых в качестве источника видов субконто указан этот план видов характеристик
 - Справочник Субконто, подчиненный плану видов характеристик.
andreykyiv@bigmir.net, Naila,
08.02.09, 19:29 Общая схема выполнения запросов
Запросы в системе "1С:Предприятие 8" предназначены для выборки информации из базы данных. По сути, запрос — это обращение к системе с просьбой выбрать определенную информацию из базы данных, а часто не только выбрать, но и произвести некоторую обработку: сгруппировать, отсортировать, вычислить. Например, с помощью запроса можно легко узнать объем продаж каждого товара в течение года с детализацией до месяца или выбрать элементы справочников по определенному условию. Заметьте, что изменять данные с помощью запросов в 1С:Предприятии не разрешается.

Язык запросов 1С:Предприятия 8 основан на стандартном SQL, но при этом содержит значительное количество расширений, ориентированных на финансово-экономические задачи, и значительно облегчает разработку бизнес-приложений.

Для работы с запросами в системе "1С:Предприятие 8" предусмотрено несколько специальных объектов, а именно:
- Запрос
- РезультатЗапроса
- ВыборкаИзРезультатаЗапроса.

Общая схема выполнения запроса такова:
1. Установка текста запроса

Объект "Запрос" имеет свойство "Текст", которое содержит строку с текстом запроса на языке запросов. Этому свойству, во-первых, можно явно присвоить значение или, во-вторых, воспользоваться конструктором объекта "Запрос". В последнем случае текст запроса передается в качестве параметра в конструктор объекта "Запрос" при его создании.

1-й вариант:


НашЗапрос = Новый Запрос;
НашЗапрос.Текст = "
| ВЫБРАТЬ Ссылка, Наименование, Родитель КАК Группа
| ИЗ Справочник.Номенклатура
| ГДЕ Ссылка В ИЕРАРХИИ (&ВыбГруппа)";


2-й вариант (с другим текстом запроса):


НашЗапрос = Новый Запрос ("ВЫБРАТЬ * ИЗ Справочник.Номенклатура");
 

2. Установка параметров запроса

Объект "Запрос" имеет метод "УстановитьПараметр", с помощью которого в запрос передаются значения параметров. Параметры запроса обычно используются в условиях отбора (конструкции ГДЕ, ИМЕЮЩИЕ) или в качестве параметров вызова виртуальных таблиц. В тексте запроса параметры обозначаются знаком "&" (например, параметр "ВыбГруппа" в первом запросе).

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


//здесь: "ВыбГруппа" - параметр запроса,
// а "ВыбраннаяГруппаТоваров" - переменная, содержащая ссылку на группу справочника "Номенклатура".
НашЗапрос.УстановитьПараметр("ВыбГруппа", ВыбраннаяГруппаТоваров);


3. Выполнение запроса

После присвоения текста и установки параметров, запрос запускается на выполнение с помощью метода "Выполнить()" объекта "Запрос". Этот метод возвращает другой объект "РезультатЗапроса", содержащий выбранные данные из базы данных.


РезультатЗапроса = НашЗапрос.Выполнить();
 

Далее возможны три варианта:
во-первых, из результата запроса может быть получена выборка (линейная, иерархическая и т.д.),
во-вторых, результат запроса может быть выгружен в таблицу или дерево значений,
в-третьих, результат запроса может являться источником данных для сводной таблицы.

4. Получение выборки из результата запроса

Объект "РезультатЗапроса" имеет метод "Выбрать()", который возвращает новый объект "ВыборкаИзРезультатаЗапроса". В зависимости от параметра <ТипОбхода> метода "Выбрать()" выборка будет линейной (по умолчанию), иерархической или по группировкам. Далее выборка обходится с помощью цикла "Пока Выборка.Следующий() Цикл", а в теле цикла производятся какие-то действия, например, вывод областей в табличный документ.


Выборка = РезультатЗапроса.Выбрать(); //по умолчанию применяется прямой тип обхода
//обход записей в выборке
Пока Выборка.Следующий() Цикл
//обращение к полям
Сообщить(Выборка.Наименование);
КонецЦикла;


5. Выгрузка результата запроса в таблицу или дерево значений

Объект "РезультатЗапроса" имеет метод "Выгрузить()", который возвращает таблицу значений или дерево значений, в зависимости от переданного параметра <Тип обхода>. Если устанавливается прямой тип обхода (по умолчанию), то будет создана таблица значений, иначе — дерево значений. Далее таблица значений (дерево значений) может быть обработана средствами встроенного языка или показана пользователю в табличном поле.


ТабЗнач = РезультатЗапроса.Выгрузить(); //по умолчанию прямой тип обхода
ДеревоЗнач = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);


6. Формирование сводной таблицы

Результат запроса может быть использован как источник данных для сводной таблицы. При этом итоги (см. предложение ИТОГИ в тексте запроса) становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями сводной таблицы. В качестве источника данных для сводной таблицы может быть также использован объект "ПостроительОтчета", но ему на вход тоже подается запрос, поэтому можно сказать, что основа любой сводной таблицы — это запрос к базе данных.


ТД = ЭлементыФормы.ПолеТабличногоДокумента1;
СводнаяТаблица = ТД.ВстроенныеТаблицы.СводнаяТаблица1;
СводнаяТаблица.ИсточникДанных = РезультатЗапроса; //<= вот здесь самое важное!
СводнаяТаблица.ОтображатьПоля = Истина;



Резюме
- Язык запросов 1С:Предприятия 8 значительно изменился по сравнению с версией 7.7 и стал похож на стандартный SQL.
- Для работы с запросами применяются программные объекты типа Запрос, РезультатЗапроса и ВыборкаИзРезультатаЗапроса.
- В запросе могут быть использованы параметры, которые нужно явно передавать в запрос с помощью метода УстановитьПараметр() объекта "Запрос".
- При выполнении запроса мы получаем объект типа "РезультатЗапроса", из которого обычно производится выборка.
- Результат запроса может быть также выгружен в таблицу / дерево значений или использован для формирования сводной таблицы.
Romio,
08.02.09, 19:10 Сводные таблицы
Система 1С:Предприятие 8 содержит новый механизм сводных таблиц, который позволяет представлять многомерные данные, например, объем продаж в разрезе контрагентов и наименований номенклатуры.

Значения измерений отображаются в шапке или боковике, а ячейки области данных содержат сводную информацию на пересечении данных измерений. Пользователь имеет возможность методом перетаскивания (drag-n-drop) добавить или удалить измерения и ресурсы, поменять их расположение.

В специальном окне "Поля сводной таблицы", которое отображается, если сводная таблица активна, можно управлять видимостью и расположением измерений и ресурсов. Если оно не выводится, то щелкните правой кнопкой на ячейке сводной таблицы и в контекстном меню выберите пункт "Отображать поля". Это окно можно также включить средствами встроенного языка, если свойству "ОтображатьПоля" объекта "СводнаяТаблица" присвоить значение Истина.

Если какое-то значение измерения является группировкой, то дважды щелкнув на нем, пользователь может развернуть или свернуть эту группировку. Глубина вложенности группировок неограниченна.


Формирование сводных таблиц



Всегда нужно помнить, что сводная таблица размещается в табличном документе. Добавить ее в табличный документ можно интерактивно или программно. Чтобы вставить сводную таблицу в макет в режиме "Конфигуратор" нужно установить курсор на ячейку макета и выбрать пункт меню "Таблица => Встроенные таблицы => Вставить сводную таблицу". Сводную таблицу можно также добавить в табличный документ программно, как, например, в следующем фрагменте:


ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
НашаСводнаяТаблица = ТабДок.ВстроенныеТаблицы.Добавить(Тип("СводнаяТаблица"));


Чтобы обратиться к сводной таблице средствами встроенного языка, нужно воспользоваться свойством-коллекцией "ВстроенныеТаблицы" объекта "ТабличныйДокумент", например:


ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
НашаСводнаяТаблица = ТабДок.ВстроенныеТаблицы.СводнаяТаблица1;


Самое главное свойство сводной таблицы — это свойство "ИсточникДанных", которое принимает значения типа "РезультатЗапроса" или "ПостроительОтчета". Это свойство определяет, откуда сводная таблица будет брать данные для отображения. Итоги запроса становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями.

Следующий фрагмент программы был использован для формирования приведенной выше сводной таблицы:


Запрос = Новый Запрос ("
| ВЫБРАТЬ
| Номенклатура,
| ПодразделениеКомпании,
| СуммаПродажи
| ИЗ
| РегистрНакопления.ПродажиКомпании
|
| ИТОГИ СУММА(СуммаПродажи) ПО
| Номенклатура ИЕРАРХИЯ,
| ПодразделениеКомпании ИЕРАРХИЯ
| ");

РезультатЗапроса = Запрос.Выполнить();

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
СводТаб = ТабДок.ВстроенныеТаблицы.СводнаяТаблица1;
СводТаб.ИсточникДанных = РезультатЗапроса; //самое важное!
СводТаб.ОтображатьПоля = Истина;


Управление сводной таблицей из встроенного языка

В предыдущем примере выполнялся запрос и его результат назначался в качестве источника данных для сводной таблицы. Далее пользователь должен был самостоятельно включить нужные ему измерения и ресурсы, расположить их в строках или колонках и т.д. В 1С:Предприятии 8 есть возможность управлять сводной таблицей средствами встроенного языка.

Следующий фрагмент включает измерение "Номенклатура" (по строкам), измерение "ПодразделениеКомпании" (по колонкам) и ресурс "СуммаПродажи" (область данных):


СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура);
СводТаб.Колонки.Добавить(СводТаб.Поля.ПодразделениеКомпании);
СводТаб.Данные.Добавить(СводТаб.Поля.СуммаПродажи);


Здесь мы воспользовались следующими свойствами-коллекциями объекта "СводнаяТаблица":
Поля
Коллекция всех доступных полей сводной таблицы, включая все измерения и ресурсы (в том числе выключенные). Эта коллекция заполняется при назначении источника данных на основе итогов в запросе. Функции из предложения ИТОГИ становятся ресурсами, а группировочные поля, по которым они подсчитываются, становятся измерениями.Используя свойства объекта "ПолеСводнойТаблицы" можно определить тип поля (измерение или ресурс), тип значения (объект "ОписаниеТипов"), прочитать или установить количество открытых уровней.
Строки
Коллекция отображаемых полей сводной таблицы, расположенных в строках (сверху вниз).
Колонки
Коллекция отображаемых полей сводной таблицы, расположенных в колонках (слева направо).
Данные
Коллекция отображаемых полей сводной таблицы, расположенных в области данных.

Обычно при каждом программном изменении состава отображаемых измерений или ресурсов сводная таблица обновляет свое содержимое, на что требуется некоторое время. Чтобы ускорить это процесс, можно временно отключить автоматическое обновление, установить строки, колонки и данные, а потом опять его включить, например:


СводТаб.Обновление = Ложь;
СводТаб.Строки.Добавить(СводТаб.Поля.ПодразделениеКомпании);
СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура);
СводТаб.Данные.Добавить(СводТаб.Поля.СуммаПродажи);
СводТаб.Обновление = Истина;


В любой момент содержимое сводной таблицы можно принудительно обновить с помощью специального метода Обновить(), но необходимо понимать, что при этом запрос заново не выполняется, а обновляется только экранное отображение сводной таблицы.

Следующие свойства позволяют управлять внешним видом сводной таблицы:
- ОтображатьПодписиИтогов (отображать строку типа "Отдел розничной торговли Итог")
- ПоложениеИтоговСтрок (сверху или снизу)
- ПоложениеИтоговКолонок (слева или справа)
- Автофиксация (фиксация названий строк и колонок при прокрутке)

Последняя группа свойств, которую мы рассмотрим, позволяет обращаться к областям сводной таблицы. Они содержат объекты типа "ОбластьЯчеекТабличногоДокумента", через которые можно управлять форматированием этих областей:

Область  -  Область табличного документа, в которой располагается сводная таблица.
ОбластьДанных  -  Область ячеек табличного документа, в которой располагаются данные сводной таблицы, т.е. ресурсы.
ОбластьЗаголовковКолонок  -  Область ячеек табличного документа, в которой располагаются заголовки колонок.
ОбластьЗаголовковСтрок  -  Область ячеек табличного документа, в которой располагаются заголовки строк.

Рассмотрим и последний метод объекта "СводнаяТаблица" — это метод ПолучитьЗначения. Данный метод принимает в качестве параметра область ячеек, а возвращает структуру, содержащую данные сводной таблицы, расположенные в этой области, например:


СтруктураДанных = СводТаб.ПолучитьЗначения(ТабДок.Область("R4C3:R4C3"));


При этом ключи структуры будут содержать имена полей (измерений и ресурсов), а значения структуры — значения измерений и ресурсов.

Резюме
- Система 1С:Предприятие 8 содержит механизм сводных таблиц, который позволяет представлять многомерные данные.
- В специальном окне "Поля сводной таблицы" можно управлять видимостью и расположением измерений и ресурсов. Также поддерживаются операции перетаскивания измерений и ресурсов (drag-n-drop).
- Если какое-то значение измерения является группировкой, то дважды щелкнув на нем, пользователь может развернуть или свернуть эту группировку.
- Свойство "ИсточникДанных" сводной таблицы принимает значения типа "РезультатЗапроса" или "ПостроительОтчета".
- Итоги запроса становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями.
- Средства встроенного языка позволяют управлять структурой и внешним видом сводной таблицы
pablo,
08.02.09, 18:13 Периодические регистры сведений
Многие программисты, знакомые с версией 7.7 и желающие освоить версию 8, спрашивают, куда делись периодические реквизиты справочников и периодические константы. А если их нет, то какой механизм их заменяет? В 1С:Предприятии 8 для хранения истории изменения значений предназначены периодические регистры сведений.

Вообще регистры сведений предназначены для хранения информации, развернутой по комбинации измерений. Главное отличие периодического регистра сведений от обычного заключается в том, что в нем присутствует дополнительное системное измерение "Период", имеющее тип "дата". Это позволяет получать не только текущие сведения об объекте, но также на любой момент времени.

Для периодического реквизита при создании указывается свойство "Периодичность" из следующих возможных значений:
- в пределах секунды,
- в пределах дня,
- в пределах месяца,
- в пределах квартала,
- в пределах года,
- по позиции регистратора (доступен, если режим записи у регистра — «Подчинение регистратору»).

Обратите внимание, что тип ресурса сведений может быть как примитивный (число, строка, дата, булево), так и ссылочный (СправочникСсылка, ДокументСсылка, ПеречислениеСсылка и т.д.). Более того, в регистре сведений можно хранить даже картинки и другие неструктурированные сведения, поскольку можно создать ресурс типа "ХранилищеЗначения".

Самый простой пример периодического регистра сведений — КурсыВалют. Этот регистр сведений хранит курсы всех валют на каждый день.

Подробная информация о структуре регистра сведений КурсыВалют приведена в следующей таблице:
Измерения:          Валюты                              тип "СправочникСсылка.Валюты", ведущее, запрет незаполненных значений
Ресурсы:             Курс                                  тип "число", длина 15, точность 4, неотрицательное
                          Кратность                           тип "число", длина 10, точность 0, неотрицательное
Периодичность     В пределах дня
Режим записи       Независимый


Данные в этот регистр сведений можно вводить вручную с помощью формы списка.
ВНИМАНИЕ. В регистр сведений с определенной периодичностью, не равной "По позиции регистратору", нельзя ввести две записи с одинаковым набором измерений и периодом, т.е. нельзя ввести два курса одной валюты в один день. Если периодичность записи регистра имеет значение "По позиции регистратора", то ключ уникальности записи также содержит и ссылку на документ-регистратор, т.е. в таком регистре не может существовать две записи с одинаковым набором измерений, периодом и регистратором. Это неотъемлемое свойство регистра сведений, отличающее его от остальных регистров.
Добавление новых записей в регистр сведений, а также перебор имеющихся записей производится стандартным для всех регистров способом. В данном разделе мы рассмотрим только самое важное
— получение информации из периодического регистра на определенный момент времени.

Обращение к периодическим сведениям с помощью методов
Объект РегистрСведенийМенеджер позволяет обращаться к «итогам» регистра. Под «итогами» периодического регистра сведений понимаются первые или последние значения ресурсов по указанным измерениям. При этом применяются следующие методы:

Получить (<Период>, <Отбор>)
Возвращает в виде структуры значения ресурсов одной записи регистра, соответствующей указанным значениям всех (!) измерений регистра и периоду.
ПолучитьПоследнее (<Конец периода>, <Отбор>)
Этот метод возвращает актуальное значение ресурсов, действовавшее на заданную дату. Если он не находит запись в регистре по данной комбинации измерений точно на заданный период, то возвращается структура, содержащая значения ресурсов ближайшей более поздней записи.
ПолучитьПервое (<Начало периода>, <Отбор>)
Этот метод действует аналогично методу ПолучитьПоследнее, но если записи на данный момент не находится, то возвращается структура, содержащая значения ресурсов ближайшей более ранней записи.
СрезПоследних (<Конец периода>, <Отбор>)
Эти методы аналогичны методам ПолучитьПоследнее и ПолучитьПервое соответственно , но при их использовании, как правило, не указывается одно или несколько измерений. В результате возвращается не структура, как в предыдущих случаях, а таблица значений, заполненная данными найденных записей регистра сведений.

При вызове методов ПолучитьПервое, ПолучитьПоследнее, СрезПервых и СрезПоследних первый параметр может иметь тип "дата", МоментВремени или Граница, но его можно вообще не указывать, тогда будут найдены значения ресурсов из самой первой или последней записи регистра соответственно.

Продемонстрируем использование этих методов на примерах:

Пример 1. Получение курса валюты точно на заданную дату (если записи именно на эту дату нет, то в элементах структуры будут пустые значения).


ВалютаОтбор = Новый Структура("Валюта", ВыбВалюта);
СтруктураКурсКратность = РегистрыСведений.КурсыВалют.Получить(ВыбДата, ВалютаОтбор);
Если СтруктураКурсКратность.Курс = 0 Тогда
Сообщить("Курс точно на эту дату не указан!");
Иначе
Сообщить("Курс валюты:" + СокрЛП(СтруктураКурсКратность.Курс) + ", кратность: " + СокрЛП(СтруктураКурсКратность.Кратность));
КонецЕсли;


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


ВалютаОтбор = Новый Структура("Валюта", ВыбВалюта);
СтруктураКурсКратность = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ВыбДата, ВалютаОтбор);
Сообщить("Актуальный курс на заданную дату: " + СтруктураКурсКратность.Курс);


Пример 3. Получение актуальных курсов всех валют на заданную дату (отбор не указан, т.е. мы хотим получить сведения по всем значениям измерений).


тзДанные = РегистрыСведений.КурсыВалют.СрезПоследних(ВыбДата, );
Для Каждого Стр Из тзДанные Цикл
Сообщить("Для валюты " + Строка(Стр.Валюта) + " курс на заданную дату: " + Строка(Стр.Курс) + ", кратность: " + Строка(Стр.Кратность));
КонецЦикла;


Пример 4. Получение актуальных оптовых цен на товары (указан отбор по измерению "ТипЦен")


ОтборТипЦен = Новый Структура("ТипЦен", Перечисления.ТипыЦен.Оптовая);
тзДанные = РегистрыСведений.ЦеныКомпании.СрезПоследних(ВыбДата, ОтборТипЦен);
Для Каждого Стр Из тзДанные Цикл
Сообщить("Для номенклатуры " + Строка(Стр.Номенклатура) + " оптовая цена: " + Строка(Стр.Цена));
КонецЦикла;



Обращение к периодическим сведениям с помощью запросов

Для получения данной информации служит виртуальная таблица среза последних/первых записей регистра сведений. По структуре она полностью идентична основной таблице регистра сведений и содержит следующие поля:
<Имя измерения> - Набор полей, содержащий значения измерений регистра. Имена полей соответствуют именам измерений.
<Имя реквизита> - Набор полей, содержащий значения реквизитов регистра.
<Имя ресурса> - Набор полей, который содержит значения ресурсов регистра.
Активность - Содержит признак активности записи. Записи, для которых значение данного свойства установлено в Ложь, не будут учитываться при получении «первых» или «последних» записей регистра, а также при получении сведений на определенный момент времени.
МоментВремени  - Содержит момент времени записи регистра.
НомерСтроки -  Содержит номер строки, определяемый как порядковый номер записи в наборе записей.
Период -  Содержит период, к которому относится запись регистра.
Регистратор -  Содержит ссылку на документ-регистратор движения.

При обращении к виртуальным таблицам СрезПервых и СрезПоследних можно указать следующие параметры:

Дата - Указывается дата или момент времени, на которые будут получены сведения. Если параметр не задан, будут выбираться наиболее поздние/ранние записи.
Условие - Указывается условие на языке запросов. Оно будет использовано для ограничения состава записей, среди которых будут выбираться наиболее поздние/ранние. Условие будет применяться к исходным записям, а не к уже отобранным.

Приведем примеры обращения к записям регистра сведений с помощью запросов:

Пример 1. Выбрать все записи регистра сведений


ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют


Пример 2. Получить актуальный курс одной валюты на заданную дату


ВЫБРАТЬ Валюта, Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата, Валюта = &ВыбВалюта);


Пример 3. Выбрать актуальные курсы всех валют на заданную дату


ВЫБРАТЬ Валюта, Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата);


Пример 4. Получить актуальный прайс-лист на заданную дату (указан определенный тип цен, например, "Розничная")


ВЫБРАТЬ Номенклатура, Цена
ИЗ РегистрСведений.ЦеныКомпании.СрезПоследних(&ВыбДата, ТипЦен=&ВыбТипЦен);



Резюме
- Периодический регистр сведений является мощным инструментом для хранения истории изменения практически любой информации.
- Периодичность регистра сведений может изменяться в широких пределах: от позиции документа-регистратора (минимальная периодичность) до года (максимальная периодичность). В 1С:Предприятии 8 есть также непериодические регистры сведений.
- Тип ресурсов регистра сведений может быть примитивный (число, строка, дата, булево), ссылочный (ссылка на элемент справочника, документ, значение перечисления) или ХранилищеЗначения.
- Периодический регистр сведений может выдавать значения ресурсов точно на заданную дату, наиболее позднее или наиболее раннее значение на заданную дату или срез первых и срез последних на определенную дату по заданным значениям измерениям.
- Обращение к данным регистра сведений возможно как с помощью методов, так и с помощью запросов.
ankidu, HULKHULK,
08.02.09, 17:56 Предложение ВЫБРАТЬ (SELECT) в языке запросов 1С:Предприятия 8
В данной статье рассмотрено предложение ВЫБРАТЬ, его место и роль в языке запросов 1С:Предприятия 8.

Предложение ВЫБРАТЬ является единственным обязательным элементом любого запроса, поэтому изучение языка запросов начинается именно с него. Основная цель предложения ВЫБРАТЬ заключается в том, чтобы указать поля выборки, которые должны попасть в результат запроса.

Ниже рассмотрены следующие темы:
- Место предложения ВЫБРАТЬ в структуре запроса 1С:Предприятия 8
- Примеры запросов с предложением ВЫБРАТЬ:
   - Выборка всех полей (кроме виртуальных) из таблиц
   - Выборка только определенных полей из таблиц
   - Виртуальные поля
   - Разыменование ссылочных полей
   - Псевдонимы полей (ключевое слово КАК / AS)
   - Обращение к табличной части как вложенной таблице
   - Обращение к табличной части как таблице-источнику
   - Ключевое слово РАЗЛИЧНЫЕ / DISTINCT
   - Ключевое слово ПЕРВЫЕ / TOP
   - Выражения в списке полей выборки

Место предложения ВЫБРАТЬ в структуре запроса
В любом запросе должно быть хотя бы одно предложение ВЫБРАТЬ.
В списке полей выборки должно быть описание хотя бы одного поля выборки, которое в общем случае является выражением.

Примеры запросов с предложением ВЫБРАТЬ

1. Выборка всех полей (кроме виртуальных) из таблиц

Вместо перечисления списка полей можно указать звездочку ("*") и тогда в результат запроса попадут все поля таблицы-источника, кроме виртуальных. Например:



//обращение к таблице справочника
ВЫБРАТЬ * ИЗ Справочник.Номенклатура

//обращение к таблице документа
ВЫБРАТЬ * ИЗ Документ.РасходныйКассовыйОрдер

//обращение к основной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании

//обращение к виртуальной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты


Замечание: В языке запросов есть возможность обойтись без предложения ИЗ, если описание поля содержит полный путь к нему с указанием таблицы-источника, например,



//выборка всех невиртуальных полей из таблицы справочника
ВЫБРАТЬ Справочник.Номенклатура.*

//выборка определенных полей из таблицы справочника
ВЫБРАТЬ
Справочник.Номенклатура.Код,
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.Представление //виртуальное поле


2. Выборка только определенных полей из таблиц

Самым обычным способом является перечисление нескольких полей из таблицы-источника запроса, тогда только эти поля попадут в результат запроса.



//обращение к таблице справочника
ВЫБРАТЬ Код, Наименование, Артикул, СтранаПроисхождения
ИЗ Справочник.Номенклатура

//обращение к таблице документа
ВЫБРАТЬ Номер, Дата, ПодразделениеКомпании, СуммаДокумента
ИЗ Документ.РасходныйКассовыйОрдер


3. Виртуальные поля

Некоторые поля в таблицах-источниках виртуальные, например, поле «Представление» для таблицы справочника и документа, или поле «МоментВремени» для документа. Это значит, что они не хранятся в базе данных, а генерируются «на лету». Виртуальные поля не включаются в результат запроса, когда вместо списка полей указана звездочка («*»), их нужно указывать явно, например «ВЫБРАТЬ *, Представление ИЗ Справочник.Товары». Такое решение было принято для ускорения выполнения классического запроса «ВЫБРАТЬ * ИЗ...». В этом случае не требуется генерировать представления для элементов справочников и документов, следовательно запросы будут выполняться быстрее.

Например,



//обращение к таблице справочника (выбрать два обычных поля и одно виртуальное)
ВЫБРАТЬ Код, Наименование, Представление
ИЗ Справочник.Номенклатура

//обращение к таблице документа (выбрать все невиртуальные поля и два виртуальных)
ВЫБРАТЬ *, Представление, МоментВремени
ИЗ Документ.РасходныйКассовыйОрдер


4. Разыменование ссылочных полей

В 1С:Предприятии 8 допускается обращение к свойствам объектов через одну или несколько точек, например, «Номенклатура.Поставщик.Страна». Это позволяет значительно упростить написание запросов. Рекомендуется всегда пользоваться разыменованием полей там, где это возможно, чтобы не усложнять запросы лишними конструкциями.



//обращение к свойству объекта через одну точку
ВЫБРАТЬ
Ссылка,
ЮрФизЛицоКонтрагента.ИНН,
ПодразделениеКомпании.Код
ИЗ Документ.РасходныйКассовыйОрдер

//обращение к свойствам объектов через несколько точек
ВЫБРАТЬ
Ссылка,
Ответственный.ОсновнойБанковскийСчет.Банк.КоррСчет
ИЗ Документ.АвансовыйОтчет


5. Псевдонимы полей (ключевое слово КАК / AS)

Для поля может быть назначен псевдоним с помощью ключевого слова КАК. Это позволяет обращаться к полю по псевдониму при указании итогов и порядка сортировки, а также при обходе выборки из результата запроса, например:



ВЫБРАТЬ
Ссылка КАК Документ,
Ответственный КАК МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО МатериальноОтветственный


Ключевое слово КАК является необязательным, то есть вышеприведенный запрос можно записать так:



ВЫБРАТЬ
Ссылка Документ,
Ответственный МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет


6. Обращение к табличной части как вложенной таблице

В этом случае поле результата запроса будет иметь тип РезультатЗапроса, то есть содержать вложенный результат запроса, сформированный на основе табличной части.



//получение табличной части как вложенной таблицы результата запроса
ВЫБРАТЬ Номер, Дата, Товары
ИЗ Документ.АвансовыйОтчет

//получение нескольких колонок табличной части как вложенной таблицы
ВЫБРАТЬ Номер, Дата, Товары.(Номенклатура, Количество)
ИЗ Документ.АвансовыйОтчет


Обратите внимание, что если выполнить следующий запрос, то в результате запроса будет две вложенные таблицы: в первой — одна колонка Номенклатура, а во второй — колонка Количество:



ВЫБРАТЬ Номер, Дата, Товары.Номенклатура, Товары.Количество
ИЗ Документ.АвансовыйОтчет


7. Обращение к табличной части как таблице-источнику

При таком способе обращения имя вложенной таблицы фигурирует в имени таблицы-источника (предложение ИЗ или полные имена полей) и в результате запроса нет вложенных таблиц.



//выборка всех полей из табличной части
ВЫБРАТЬ * ИЗ Документ.АвансовыйОтчет.Товары

// выборка определенных полей из табличной части
ВЫБРАТЬ Номенклатура, Количество, Цена, Сумма
ИЗ Документ.АвансовыйОтчет.Товары

//задание псевдонимов для полей табличной части
ВЫБРАТЬ Документ.АвансовыйОтчет.Товары.(Номенклатура, Сумма КАК СуммаПоСтроке)

//обращение к реквизитам документа и реквизитам табличной части (поле Ссылка)
ВЫБРАТЬ
Ссылка.Номер, Ссылка.Дата, Ссылка.Ответственный, //реквизиты документа
Номенклатура, Количество, Цена, Сумма //реквизиты табличной части
ИЗ Документ.АвансовыйОтчет.Товары


8. Ключевое слово РАЗЛИЧНЫЕ / DISTINCT

Ключевое слово РАЗЛИЧНЫЕ позволяет оставить в результате запроса только отличающиеся строки.



ВЫБРАТЬ РАЗЛИЧНЫЕ Ответственный
ИЗ Документ.АвансовыйОтчет


9. Ключевое слово ПЕРВЫЕ / TOP

Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется в комбинации с сортировкой (предложение УПОРЯДОЧИТЬ ПО).



ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ


10. Выражения в списке полей выборки

В качестве описания поля выборки может быть выражение, использующее следующие элементы:
Литералы типов: число, строка (в кавычках), булево (значения Истина и Ложь), Null, Неопределено. [Замечание: Чтобы указать литерал типа "дата", можно воспользоваться ключевым словом языка запросов ДАТАВРЕМЯ или передать дату через параметр запроса].
Параметры запроса (со знаком &)
Имя поля
Имя табличной части
Разыменование ссылочного поля (через одну или несколько точек)
Арифметические операции (+, -, /, *) [Замечание: операция получения остатка % в языке запросов не поддерживается]
Операция конкатенации строк (+) [Замечание: операцию конкатенации нельзя использовать для виртуальных полей]
Встроенные функции языка запросов (ДЕНЬ, МЕСЯЦ, ГОД и т.д.)
Агрегатные функции (СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО)
Операция выбора ВЫБОР / CASE - позволяет получить одно из возможных значений в соответствии с указанными условиями.
Операция приведения типов ВЫРАЗИТЬ / CAST

Ниже приведено несколько примеров с выражениями в списке полей выборки:



//арифметические операции
ВЫБРАТЬ
Номенклатура,
Количество * Цена КАК РасчСумма1,
Сумма / Количество КАК РасчСумма2
ИЗ Документ.АвансовыйОтчет.Товары

//литералы типа "булево", "число", "строка", "дата"
ВЫБРАТЬ Истина, Ложь, 10.5, "Текст", ДАТАВРЕМЯ(2003,12,25)

//конкатенация строк
ВЫБРАТЬ "Сотрудник " + Ответственный.Наименование
ИЗ Документ.АвансовыйОтчет

//агрегатные функции
ВЫБРАТЬ
ПодразделениеКомпании,
СУММА(СуммаДокумента),
МАКСИМУМ(СуммаДокумента),
МИНИМУМ(СуммаДокумента),
СРЕДНЕЕ(СуммаДокумента),
КОЛИЧЕСТВО(*)
ИЗ Документ.АвансовыйОтчет
СГРУППИРОВАТЬ ПО ПодразделениеКомпании

//операция выбора
ВЫБРАТЬ Наименование,
ВЫБОР
КОГДА СтранаПроисхождения.Наименование = "КИТАЙ" ТОГДА "Азия"
КОГДА СтранаПроисхождения.Наименование = "ТАЙВАНЬ" ТОГДА "Азия"
КОГДА СтранаПроисхождения.Наименование = "США" ТОГДА "Америка"
КОГДА СтранаПроисхождения.Наименование = "КАНАДА" ТОГДА "Америка"
ИНАЧЕ "Другое"
КОНЕЦ КАК Страна
ИЗ Справочник.Номенклатура

//операция приведения типов
ВЫБРАТЬ
Ссылка,
Номенклатура,
ВЫРАЗИТЬ(Сумма / 3 КАК Число(5,2)) КАК ТретьСуммы
ИЗ Документ.АвансовыйОтчет.Товары





Таким образом, предложение ВЫБРАТЬ является важнейшим элементом языка запросов, поскольку позволяет указать требуемые поля результата запроса. Гибкие возможности предложения ВЫБРАТЬ позволяют использовать язык запросов для решения самых разнообразных задач.
Keyword1109,
06.02.09, 12:57 1С 7.7. Порядок сортировки, установленный для базы данных, отличается от системного
Варианта два: 
1. Зайходим в Панель управлеия - Настройки - Языки и региональные стандарты и меняем на тот который определен для информационной базы (обычно либо русский, либо украинский) 
2. Запускаем 1С в режиме Конфигуратор, выполняем "Администрирование>Кодовая страница таблиц ИБ..." и выставляем тот язык, который выставлен в регоинальных настройках (обычно либо русский, либо украинский).
Ortman_fon_but,

22 страниц V  « < 20 21 22
RSS Текстовая версия Сейчас: 27.04.24, 20:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!