В процессе работы предприятия нередко возникает необходимость узнать кто, когда и что именно изменял в документе или справочнике программы.
Очень часто мне задают вопросы:
Как в 1С 8.2 посмотреть поменявшего документ?
Как в 1с посмотреть изменившего документ?
Как в 1С узнать кто и когда изменял документы?
Как в 1С узнать кто изменил проводку в документе?
Как посмотреть кто изменял документ в 1с?
Журнал регистрации
Содержит информацию о том, какие события происходили в информационной базе в определенный момент времени или какие действия выполнял тот или иной пользователь. Для каждой записи журнала, отражающей изменение данных, отображается статус завершения транзакции (транзакция завершена успешно, или же транзакция отменена).
Журнал регистрации доступен как в режиме 1С:Предприятие, так и в режиме Конфигуратор.
Доступ к журналу регистрации возможен как из режима Конфигуратора (через меню Администрирование - Журнал регистрации), так и из режима Предприятия (меню Сервис - Журнал регистрации). В режиме Такси (Основное меню - Все функции - Стандартные - Журнал регистрации)
Вид журнала регистрации (Обычные формы и Такси):
Отбор в журнале регистрации (Обычные формы и Такси):
Используя средства работы со списками имеется возможность выгрузить журнал регистрации в табличный или, при необходимости, текстовый документ (через Действия - Вывести список) , который в дальнейшем может быть сохранен например в формате Excel , TXT или HTML. При этом существует возможность настройки уровня событий, которые будут фиксироваться в журнале регистрации, а также периодичности разделения журнала на отдельные файлы (в режиме конфигуратора меню Администрирование - Настройка журнала регистрации).
И там же есть возможность сократить количество записей данного журнала до определенной даты, что делается для ускорения работы с механизмом анализа и регистрации событий в системе или за ненадобностью неактуальной информации.
Где хранится журнал регистрации
В Файловой базе: в каталоге базы папка 1Cv8Log - это и есть директория содержащая журнал регистрации.
Если вы планируете перенести файловую базу данных и хотите сохранить историю журнала регистрации & вам обязательно надо скопировать папку 1Cv8Log в категорию новой базы 1С. Если необходимо очистить журнал регистрации 1С в файловой базе просто удалите папку 1Cv8Log.
В Клиент-серверной базе: C:\Program Files\1cv8\srvinfo\<Имя кластера сервера>\<Идентификатор базы на сервере>\1Cv8Log
С версии 8.3.5.1068. Значительно переработали журнал регистрации для того, чтобы увеличить скорость выполнения запросов к журналу и повысить надёжность хранения данных.
Для этого, в том числе, потребовалось изменить формат хранения журнала регистрации. Теперь он хранится в одном файле базы данных SQLite. Этот файл имеет расширение lgd.
Версионирование объектов
В некоторых конфигурациях 1С внедрен специальный механизм «Версионирование объектов».
По умолчанию версионирование выключено, чтобы включить откройте Сервис - Настройки учета - Настройка параметров учета
По кнопке «Настройка версионирования объектов» выбираем, какие справочники и документы нужно версионировать (наблюдать за тем, кто, что и когда изменил).
По умолчанию наблюдение за объектами информационной базы не ведется, поетому напротив каждого типа документов установлен признак «Не версионировать». Если нужно чтоб наблюдение велось, нужно установить «Версионировать» напротив интересующего журнала документов.
Все, при закрытии окна и нажатии на кнопку «Оk» наблюдение за объектами будет вестись.
Для того чтоб просмотреть все изменения которые кто-то делал в документе или справочнике нужно перейти в меню: Сервис - История изменений объектов
Для управления регистрацией документа в последовательности документов служит набор записей регистрации в последовательности документов.
У документа есть свойство ПринадлежностьПоследовательностям. Значением свойства является коллекция наборов записей регистрации в последовательности документов. Для каждой последовательности, в которой участвует документ, существует свой собственный экземпляр набора записей. Если у документа стоит режим автоматического заполнения последовательностей, то перед записью документа наборы записей регистрации будут автоматически заполнены. Для последовательностей без измерений набор записей будет содержать только одну запись. Для последовательностей с измерениями число записей зависит от содержания документа и настройки соответствия измерений последовательности реквизитам документа.
Набор записей автоматически заполняется до записи документа и записывается после записи документа в одной транзакции с ним. Это позволяет в обработчиках событий документа ПередЗаписью() и ПриЗаписи() переопределить набор записей регистрации. Так, например, если документ входит в последовательность Последовательность1 и у документа стоит признак автоматического заполнения последовательности, то для того что бы отменить его регистрацию в последовательности в зависимости от значения реквизита документа достаточно в модуль документа вставить обработчик события ПередЗаписью() следующего содержания:
В этом случае если реквизит Регистрировать имеет значение "Ложь", то документ не будет зарегистрирован в последовательности Последовательность1. Кроме отмены регистрации документа в последовательности, доступна возможность написания собственного алгоритма регистрации документа в последовательности. Для этого надо очистить набор записей регистрации и заполнить его новыми записями.
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента
Для вывода используется используется запрос:
Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка, сделаем это так:
Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных
В 8.1 для многих объектов (справочники, регистры сведений и т.п.) в свойствах можно было настроить способ редактирования записей/элементов: в диалоге или в списке или обоими способами
В 8.2 эту возможность убрали из целей производительности, Максим Радченко пишет в своей книге:
В версии 8.2 не поддерживается режим редактирования ссылочных данных информационной базы в списке. Данные можно редактировать только в форме.
При работе в режиме управляемого приложения свойство объекта конфигурации Способ редактирования игнорируется, и данные редактируются всегда в отдельной форме.
Это относится ко всем таблицам, источником данных которых является динамический список.
Если же таблица имеет другой источник данных (табличная часть, дерево значений и т.д.), то ее данные редактируются непосредственно в списке
В обычных формах, программно можно установить режим редактирования в списке
Для Регистра Сведений или Справочника - открыть палитру Свойства - закладка - представление - установить способ редактирования В Списке
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для кого-то могут быть полезны.
Итак, начнем. Запрос - это специальный объект в 1С 8.2, который используется для формирования и выполнения запросов к таблицам базы данных в системе. Для выполнения запроса необходимо составить текст запроса, в котором описывается какие таблицы будут использоваться в качестве источников данных запроса, какие нужно выбрать поля, какие применить сортировки и группировки и т.д. Подробнее о запросах можно прочитать в книге "1С 8.2 Руководстве разработчика". Язык запросов 1С 8.2 очень похож синтаксисом на другие SQL языки запросов баз данных, но есть и отличия. Из основных преимуществ встроенного языка запросов стоит отметить разыменование полей, наличие виртуальных таблиц, удобная работа с итогами и нетипизированные поля в запросах. Из недостатков – в качестве выходного поля нельзя использовать запрос, нельзя использовать хранимые процедуры, нельзя преобразовать строку в число.
Приведу сведения и рекомендации по языку запросов по пунктам:
1.Для повышения читабельности запроса и уменьшения количества параметров запроса можно в запросе применять обращение к предопределенным данным конфигурации с помощью литерала ЗНАЧЕНИЕ (ПРЕДСТАВЛЕНИЕЗНАЧЕНИЯ). В качестве представления значений могут использоваться значение перечислений, предопределенные данные справочников, планов видов расчета, планов видов характеристик, планов счетов, пустые ссылки, значения точек маршрута, значения системных перечислений (например, ВидДвиженияНакопления, ВидСчета).
Примеры: ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва) ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка) ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга) ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.Согласование.ТочкаМаршрута.Согласие)
Выражение в скобках всегда начинается со слова в единственном числе (Справочник, Перечисление и т.д.), которое соответствует типу предопределенного значения.
2.Автоупорядочивание в запросе может сильно тормозить процесс. Если сортировка не нужна, лучше вообще ее не использовать. Во многих случаях эффективнее записать сортировку через ключевое слово УПОРЯДОЧИТЬ ПО.
3.Нужно следить, чтобы при использовании псевдонимов не появилось неоднозначное поле. Иначе система не поймет к какому объекту надо обращаться.
Пример запроса с неоднозначным полем: ВЫБРАТЬ Номенклатура.Ссылка, ОстаткиТоваровОстатки.КоличествоОстаток ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки ПО ОстаткиТоваровОстатки.Номенклатура = Номенклатура.Ссылка
Нужно исправить псевдоним таблицы, например, так: «Справочник.Номенклатура КАК Номенклатура1», а «Номенклатура.Ссылка» соответственно исправить на «Номенклатура1.Ссылка».
4.Иногда полезно получать представление ссылочных полей с помощью ключевого слова ПРЕДСТАВЛЕНИЕ наряду со ссылкой для того, чтобы не было повторного обращения к базе данных. Это бывает полезно при выводе результата запроса в таблицу.
Пример: ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(Документ.Контрагент) КАК Получатель, ПРЕДСТАВЛЕНИЕ(Документ.Основание) ИЗ Документ.РасходнаяНакладная КАК Документ
5.Использование в запросе ВЫРАЗИТЬ(Поле КАК Тип) позволяет убрать лишние таблицы из соединения с полем составного типа данных. Тем самым ускорить выполнение запроса.
Пример (регистратор - поле с составным типом для физической таблицы регистранакопления ОстаткиТоваров, в запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа Дата и Номер через Регистратор не происходит множественного соединения таблицы регистра с таблицами документов, являющихся регистраторами для регистра ОстаткиТоваров): ВЫБРАТЬ РАЗЛИЧНЫЕ [b] ВЫРАЗИТЬ(ОстаткиТоваров.Регистратор КАК Документ.ПоступлениеТоваров).Номер КАК НОМЕРПОСТУПЛЕНИЯ,[/b] [b]ВЫРАЗИТЬ(ОстаткиТоваров.Регистратор КАК Документ.ПоступлениеТоваров).Дата КАК ДАТАПОСТУПЛЕНИЯ[/b] [b]ИЗ РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваровГДЕ (ВЫРАЗИТЬ(ОстаткиТоваров.Регистратор КАК Документ.ПоступлениеТоваров) ЕСТЬ НЕ NULL)[/b]
6.Когда в конфигурации 1С есть пользователи, у которых права ограничены на определенные объекты конфигурации, в запросе к таким объектам необходимо использовать ключевое слово РАЗРЕШЕННЫЕ, чтобы запрос выполнился без ошибки (Выбрать Разрешенные ...)
7.При объединении таблиц, содержащих вложенные таблицы (например, Документ с табличной частью) бывает полезно ключевое слово ПУСТАЯТАБЛИЦА, когда, например, в одном из документов нет табличной части.
Пример: ВЫБРАТЬ Ссылка.Номер, ПУСТАЯТАБЛИЦА.(Ном, Тов, Кол) КАК Состав ИЗ Документ.РасходнаяНакладная ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Ссылка.Номер, Состав.(НомерСтроки, Номенклатура, Количество) ИЗ Документ.РасходнаяНакладная
8.При работе с соединениями таблиц, содержащих по одной строке, бывает нужно склеить строки таблиц (при этом в обеих таблицах нет такого поля, по которому их можно было соединить). Этого можно добиться, применив конструкцию «ПОЛНОЕ СОЕДИНЕНИЕ Таблица По ИСТИНА». Если в таблицах больше, чем одна строка, то в результате будет количество строк, равное произведению количества строк обеих таблиц. Если в одной таблице О строк, то в результирующей таблице количество строк будет равно количеству строк второй таблицы. Также для соединения таких таблиц можно применять декартово произведение таблиц , при котором в результирующей таблице будут встречаться все комбинации строк из обеих таблиц. Надо помнить, что если в одной из таблиц 0 строк, тогда и декартово произведение будет 0, поэтому полное соединение будет лучше. Вообще вместо полного соединения ПО ИСТИНА можно использовать и любой другой тип соединения, но в таком случае тоже возможна ситуация, когда в результирующей таблице будет 0 строк, даже если в одной из таблиц будет ненулевое количество строк. В случае полного соединения такая ситуация будет только в одном случае, если количество строк в обеих таблицах равно 0. Если знать, что в таблице есть точно хотя бы одна строка, тогда можно использовать и ЛЕВОЕ СОЕДИНЕНИЕ с другой таблицей с условием ПО ИСТИНА.
Пример (правда надуманный, для Полного соединения): ВЫБРАТЬ Первые 1 Пол.Ссылка, К.Контрагент ИЗ Перечисление.Пол КАК Пол ПОЛНОЕ СОЕДИНЕНИЕ (Выбрать Первые 1 Д.Контрагент ИЗ Документ.РеализацияТоваров КАК Д Упорядочить По Д.МоментВремени ) КАК К ПО (ИСТИНА)
9. Для того чтобы получить уникальные записи по какому-то полю, правильней вместо группировки пользоваться ключевым словом РАЗЛИЧНЫЕ в запросе, потому что такая конструкция намного наглядней и ключевое слово СГРУППИРОВАТЬ ПО имеет более широкое применение и часто используется, если дополнительно надо рассчитать агрегатные функции по группировкам. В некоторых случаях необходимо вывести ограниченное количество строк. Для этого в описании запроса в описании запроса следует указать ключевое слово ПЕРВЫЕ и после него – требуемое количество строк.
Пример для ПЕРВЫЕ: Выбрать Первые 5 Справочник.Номенклатура.Наименование, Справочник.Номенклатура.ЗакупочнаяЦена Упорядочить По Справочник.Номенклатура.ЗакупочнаяЦена Убыв
Пример для РАЗЛИЧНЫЕ: Выбрать Различные Документ.Расходная.Контрагент
10.Агрегатные функции в запросе можно использовать без ключевого слова СГРУППИРОВАТЬ. В таком случае все результаты будут сгруппированы в одну строку.
Пример: Выбрать Сумма(Накладная.Сумма) Как Сумма Из Документ.РасходнаяНакладная.Состав Как Накладная
11.В запросах в полях выборки можно свободно обращаться к реквизитам полей выборки. Эта возможность называется разыменованием полей выборки. Если источник данных - вложенная таблица (табличная часть документа), то в полях выборки можно обращаться также к полям основной таблицы (например, через поле Ссылка обратиться к полю основной таблицы Контрагент)
Пример: ВЫБРАТЬ [b] ПоступлениеТоваровИУслугТовары.Номенклатура, ПоступлениеТоваровИУслугТовары.Номенклатура.Код, ПоступлениеТоваровИУслугТовары.Количество КАК Количество, ПоступлениеТоваровИУслугТовары.Ссылка.КонтрагентИЗ Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТоварыГДЕ ПоступлениеТоваровИУслугТовары.Ссылка = &Ссылка[/b]
Есть одна особенность использования разыменования полей, если в запросе есть группировки. В любых запросах с группировками в списках полей запроса можно свободно обращаться к реквизитам группировочных полей.
Пример: ВЫБРАТЬ ПоступлениеТоваровИУслугТовары.Номенклатура, ПоступлениеТоваровИУслугТовары.Номенклатура.Код, СУММА(ПоступлениеТоваровИУслугТовары.Количество) КАК Количество, ПоступлениеТоваровИУслугТовары.Ссылка.Контрагент, ПоступлениеТоваровИУслугТовары.Ссылка.Дата ИЗ Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары ГДЕ ПоступлениеТоваровИУслугТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ПоступлениеТоваровИУслугТовары.Номенклатура, ПоступлениеТоваровИУслугТовары.Ссылка
В справке 1С написано, что при наличии группировки, в полях выборки запроса могут участвовать только группировочные поля и агрегатные функции по полям выборки. Есть один исключительный случай, когда агрегатные функции применены к полям вложенной таблицы. В этом случае в списке полей выборки возможны обращения к полям таблицы верхнего уровня, без группировки результатов по этим полям.
Пример: ВЫБРАТЬ ПоступлениеТоваровИУслуг.Товары.(СУММА(Количество),Номенклатура), ПоступлениеТоваровИУслуг.Ссылка, ПоступлениеТоваровИУслуг.Контрагент ИЗ Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг СГРУППИРОВАТЬ ПО ПоступлениеТоваровИУслуг.Товары.(Номенклатура)
12. Иногда вместо указания какого-либо поля в группировке полезно в поля выборки запроса включить параметр: ВЫБРАТЬ ДокТовары.Номенклатура, &Контрагент, &Период, СУММА(ДокТовары.Количество * ДокТовары.К) КАК Количество, СУММА(ДокТовары.Сумма) КАК СуммаИЗ Документ.Приходная.Товары КАК ДокТоварыГДЕ ДокТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ДокТовары.Номенклатура
А затем установить параметр в тексте запроса: Запрос.УстановитьПараметр(«&Контрагент», ВыбКонтрагент); Запрос.УстановитьПараметр(«&Период», Дата);
13. В универсальных запросах параметры можно использовать в описании источников данных запроса, в условиях ГДЕ, в условиях соединения таблиц и параметрах виртуальных таблиц. Существует два приема для создания универсальных запросов:
А) с помощью механизма конкатенации строк, добавляя в текст запроса переменные;
Пример1: ТипУпорядочивания = ?(НЕКАЯПЕРЕМЕННАЯ,"","УБЫВ"); Запрос.Текст= "Выбрать ... Упорядочить ПО Поле1 " + ТипУпорядочивания + "...";
Пример2: Запрос.Текст = "Выбрать Поле1..."; Если НЕКАЯПЕРЕМЕННАЯ = 1 Тогда Запрос.Текст = Запрос.Текст + ",Поле2 ..."; КонецЕсли;
Б)использовать параметры в различных частях запроса (например, в секции источников данных запроса), а затем метод встроенного языка - СТРЗАМЕНИТЬ(). При проектировании универсальных запросов полезно обращение к свойству объектов МЕТАДАННЫЕ(), с помощью которого можно определить название таблицы для какой-то ссылки (например, для документа будет примерно так - Ссылка.МЕТАДАННЫЕ().ИМЯ), переданной через параметр в некую универсальную процедуру.
Пример: Выбрать ДокТЧ.Номенклатура, ... ИЗ &НекийДокТЧ КАК ДокТЧ
А затем установить параметр в тексте запроса Запрос.Текст = СтрЗаменить(Запрос.Текст, "&НекийДокТЧ", "Документ."+Ссылка.Метаданные().Имя+".Товары");
Параметры можно использовать в условиях запроса, чтобы включить опциональное условие &Параметр ИЛИ НЕ КакоеТоСвойство: Запрос.УстановитьПараметр(“&Параметр”, “Контрагент.Наименование=””Иванов”””);
С помощью литерала ИСТИНА можно убирать определенные фильтры в запросе Запрос.УстановитьПараметр(«&Параметр»,Истина);
14.Очень полезными в конструкторе запросов является команда контекстного меню таблицы - "Переименовать таблицу...", с помощью которого можно придумать некоторое обобщенное имя для источника данных. Для создания запросов к однотипным таблицам, похожим по структуре, бывает полезным для второй таблицы скопировать текст запроса первой таблицы, зайти в окно конструктора запросов и в контекстном меню таблицы выбрать пункт - Заменить таблицу... и выбрать вторую талицу.
15.При работе с созданием вложенных запросов в секциях условий или параметров виртуальных таблиц конструктора запросов используется прием выделения пробела в скобках, тогда появляется в контекстном меню пункт «Конструктор запроса», а при редактировании вложенного запроса в условии выделяют весь запрос в скобках .
Пример вложенного запроса: Товар В ( Выбрать Номенклатура ...)
16. При проектировании отчетов СКД в запросах к регистрам остатков - в качестве параметра Период удобнее и правильнее использовать выражение ДобавитьКДате(КонецПериода(Период,ДЕНЬ),СЕКУДА,1), так как остатки в виртуальных получаются на начало периода, не включая последнюю секунду. Прием +1 секунда не может быть применен с документами: по новой методике проведения документов остатки по регистру надо получать на Период, заданный объектом Граница с моментом времени документа включая (а не на дату документа +1 секунда!), а по старой методике проведения - на момент времени документа (а не на дату документа !). При анализе оборотов или данных за период удобно добавлять параметр с типом СтандартныйПериод (в этом случае не надо приводить последнюю дату интервала на конец дня). У стандартного поля «НачалоПериода» в поле «Выражение» надо прописать «&Период.ДатаНачала». А у стандартного поля «КонецПериода» в поле «Выражение» прописать «&Период.ДатаОкончания». Очень много полезной информации по языку запросов можно найти не в синтакс-помощнике, а в полной справке конфигуратора 1С 8.2 (кнопка F1)
17.Функция запроса ЕстьNull (удобнее писать англоязычный вариант IsNull) обычно используется для избавления от значений типа Null для числовых полей запроса. В ряде случаев, например полного соединения двух таблиц функция IsNull (Параметр1,Параметр2) может с успехом заменить конструкцию ВЫБОР КОГДА ... ТОГДА ..ИНАЧЕ ….КОНЕЦ, когда для какого-либо поля значения NULL могут быть как в первой таблице, так и во второй (такая конструкция позволяет получать не Null значение для поля). Но надо помнить, что в отличие от условного оператора ВЫБОР функция ЕстьNull приводит тип второго аргумента к типу первого аргумента, что нужно учитывать, если типы аргументов отличаются!
Пример: IsNull(Рег.Остаток,0) IsNull(Док.Товар,Док1.Номенклатура)
18. У условной конструкции ВЫБОР есть альтернативный синтаксис для простого случая проверки равенства определенному значению, но, правда, он недокументированный: Выбор Выражение Когда 1 Тогда «Высший» Когда 2 Тогда «Средний» Иначе «Низший» Конец
19.Оператор проверки значения на NULL Eсть Null (Можно рекомендовать использовать англоязычный вариант Is Null). Такая конструкция появилась потому, что любая операция сравнения двух величин, хотя бы одно из которых Null, всегда ложь. Написать Где Наименование = Null неправильно. Интересна также форма отрицания данного оператора Не Есть Null - неправильно, а правильно Есть Не Null или форма Не (Поле1 Есть Null) - это существенное отличие от всех операторов, использующихся совместно с оператором Не.
20. Иногда полезна форма оператора В для проверки совпадения с одним из перечисленных значений.
Пример: ...Где Товар.Наименование В ("Бытовая техника","Компьютеры")
Для справочников может быть полезна форма оператора В проверки принадлежности по иерархии.
Пример: ...Где Номенклатура В ИЕРАРХИИ (&Группа)
Оператор В часто используется для проверки вхождения значения в результат вложенного запроса.
Пример: ...Где Номенклатура.Ссылка В (Выбрать Номенклатура.Ссылка ...).
Во вложенном запросе можно обращаться к полям внешнего запроса в условии.
Пример: // Выбрать названия товаров, которые присутствовали // в расходных накладных ВЫБРАТЬ Товары.Наименование ИЗ Справочник.Номенклатура КАК Товары ГДЕ Товары.Ссылка В (ВЫБРАТЬ РасходнаяНакладнаяСостав.Номенклатура ИЗ Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав ГДЕ РасходнаяНакладнаяСостав.Номенклатура = Товары.Ссылка)
Операция В может использоваться с массивами, списками значений, таблицами значений, вложенными запросами. При этом возможно сокращение условий
Синтаксис для вложенного запроса (выражение1, выражение2,...,выражениеN) В (Выбрать выражение1, выражение2,...,выражениеN ...)
Синтаксис для таблицы значений (выражение1, выражение2,...,выражениеN) В (&ТЗ), где в таблице значений ТЗ используются N первых колонок
20. В интернете есть шутка по поводу того, как конструктор запроса постоянно делает ЛЕВОЕ соединение таблиц (и меняет их местами), как бы мы не указывали ПРАВОЕ: 1С:Предприятие любит «налево».
21. Сложные запросы удобно отлаживать в консоли запросов. Существует их в интернете много. После отладки запроса его можно скопировать и в конструкторе запроса есть замечательная кнопка «Запрос», куда можно вставить его в том же виде и сохранить (раньше была только возможность скопировать в конфигураторе и сделать форматирование запроса посредством символа переноса строки). В окне, которое открывается при нажатии кнопки «Запрос», можно редактировать запрос и смотреть результат выполнения, что довольно удобно.
22.При проектировании отчетов СКД нужно помнить, что если нужно обеспечить фильтрацию по некоторому полю, необязательно добавлять параметр в текст запроса. У конструктора запросов есть вкладка «Компоновка данных», где можно добавлять параметры в условия. Кроме того, на уровне отчета СКД есть закладка условия, где можно добавлять произвольные условия и сохранять в быстрых настройках. В таком случае условия будут универсальными (равенство, неравенство, принадлежность, вхождение в список и т.д.).
23. При работе с документами бывает нужно добавить сортировку по виртуальному полю таблицы МОМЕНТВРЕМЕНИ, но вот незадача - во вложенных запросах сортировка по этому полю правильно не работает. Помогают танцы с бубнами: сортировка по виртуальному полю МОМЕНТВРЕМЕНИ заменяется на две сортировки: по дате и по ссылке. Также решить проблему можно через временную таблицу переносом вложенного запроса в отдельный запрос. На протяжении уже многих релизов данная фича или баг не исправлена.
Пример неправильно работающего запроса, получающего последний проведенный документ по указанному контрагенту (вернее, табличную часть документа): ВЫБРАТЬ РасходнаяТовары.Ссылка, РасходнаяТовары.НомерСтроки, РасходнаяТовары.Товар, РасходнаяТовары.Количество, РасходнаяТовары.Цена, РасходнаяТовары.Сумма ИЗ Документ.Расходная.Товары КАК РасходнаяТовары ГДЕ РасходнаяТовары.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 Д.Ссылка ИЗ Документ.Расходная КАК Д ГДЕ Д.Ссылка.Проведен И Д.Контрагент = &Контрагент УПОРЯДОЧИТЬ ПО Д.Ссылка.МоментВремени УБЫВ)
Возможные решения:
A) Заменить на УПОРЯДОЧИТЬ ПО на УПОРЯДОЧИТЬ ПО Д.Дата УБЫВ УПОРЯДОЧИТЬ ПО Д.Ссылка УБЫВ
Б) Можно перенести вложенный запрос во временную таблицу: ВЫБРАТЬ ПЕРВЫЕ 1 Д.Ссылка ПОМЕСТИТЬ ТЗСсылка ИЗ Документ.Расходная КАК Д ГДЕ Д.Ссылка.Проведен И Д.Контрагент = &Контрагент УПОРЯДОЧИТЬ ПО Д.Ссылка.МоментВремени УБЫВ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РасходнаяТовары.Ссылка, РасходнаяТовары.НомерСтроки, РасходнаяТовары.Товар, РасходнаяТовары.Количество, РасходнаяТовары.Цена, РасходнаяТовары.Сумма ИЗ Документ.Расходная.Товары КАК РасходнаяТовары ГДЕ РасходнаяТовары.Ссылка В (ВЫБРАТЬ Т.Ссылка ИЗ ТЗСсылка КАК Т)
В) Можно обратиться к основной таблице документа, а уже затем к табличной части ВЫБРАТЬ ПЕРВЫЕ 1 Расходная.Ссылка, Расходная.Товары.( Ссылка, НомерСтроки, Товар, Количество, Цена, Сумма ) ИЗ Документ.Расходная КАК Расходная ГДЕ Расходная.Контрагент = &Контрагент И Расходная.Проведен УПОРЯДОЧИТЬ ПО Расходная.МоментВремени УБЫВ
24. При обращении к главной таблице документа(справочника) можно в условии обратиться к данным подчиненной таблицы (табличной части). Такая возможность называется разыменование полей табличной части. В качестве примера задачи можно привести задачу поиска документов, содержащих в табличной части определенный товар.
Пример: Выбрать Приходная.Ссылка ИЗ Документ.Приходная Где Приходная.Товары.Номенклатура = &Номенклатура.
Преимущество этого запроса перед запросом ко вложенной таблице Приходная.Товары в том, что если есть дубли в документах , результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
Сравните: Выбрать Различные Товары.Ссылка ИЗ Документ.Приходная.Товары как Товары Где Товары.Номенклатура = &Номенклатура.
На этом месте, пожалуй, всё. Понятно, что в языке запросов ещё много неосвещенных мной вопросов. Для написания статьи была использована информация, полученная мной после прохождения базового курса 1С 8.2 spec8.ru, а также из книги «1С 8.2 Руководство разработчика» и просторов интернета.
Всем спасибо!
Автор: fpat
ЭлементыФормы (Controls) . Добавить (Add) - Добавляет элемент управления на форму. Синтаксис: Параметры: <Тип> (обязательный)
Тип: Тип. Тип добавляемого элемента управления:
Индикатор; ПолеКалендаря; Кнопка; КоманднаяПанель; Надпись; Панель; Переключатель; ПолеТабличногоДокумента; ПолеHTMLДокумента; ПолеТекстовогоДокумента; ПолеВвода; ПолеВыбора; ПолеСписка; ПолеКартинки; ПолосаРегулирования; Разделитель; РамкаГруппы; ТабличноеПоле; Флажок; ПолеГрафическойСхемы; ПолеГеографическойСхемы. <Имя> (обязательный)
Тип: Строка. Имя создаваемого элемента управления. Имя должно быть указано в соответсвии с правилами написания имен системы 1С:Предприятие 8. В противном случае выполнение метода вызовет исключение. <Видимость> (необязательный)
Тип: Булево. Определяет, создавать новый элемент управления формы видимым или нет. Истина - элемент создается видимым.
Значение по умолчанию: Истина <ПоместитьНа> (необязательный)
Тип: Панель; ПолеТабличногоДокумента. Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме.
Вариант 1: ОкноКлиентскогоПриложения (ClientApplicationWindow)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Возвращаемое значение:
Тип: Строка.
Описание: Получает навигационную ссылку в формате 1С:Предприятия на текущую форму.
Доступность: Тонкий клиент, веб-клиент, толстый клиент, внешнее соединение.
Вариант 2: Глобальный контекст (Global context)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Параметры: <Объект> (обязательный)
Тип: Ссылка на объект информационной базы. Ссылка на объект. <ИмяРеквизита> (необязательный)
Тип: Строка. Имя реквизита объекта или ресурса Регистра сведений, для которого нужно выяснить ссылку. Если это реквизит табличной части объекта, то параметр указывается как <имя табличной части>.<имя реквизита>, то есть с разделителем "." (точка).
<Индекс> (необязательный)
Тип: Число. Индекс строки в табличной части, в том случае если объект является реквизитом табличной части. Первая строка имеет индекс равный 0.
Возвращаемое значение: Тип: Строка.
Описание: Получает текст ссылки на объект информационной базы или его реквизит в формате 1С:Предприятия.
В первом случае принимает в качестве параметра ссылку на объект (это может быть как ссылка, так и ключ записи регистра сведений). Объектом могут быть: справочник, документ, ключ записи регистра сведений, бизнес процессы, задачи.
Во втором, в качестве параметров принимает ключ объекта (это может быть как ссылка, так и ключ записи регистра сведений) и имя реквизита (ресурса). Если нужно получить ссылку на реквизит табличной части, перед именем реквизита необходимо добавить имя табличной части и точку ".".
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание: Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы запрос на сервер не выполняется.
Получить навигационную ссылку для константы?
Вопрос: В конфигурации есть константа с типом ХранилищеЗначения для хранения изображения. Пытаюсь реализовать Загрузку и Выгрузку изображения: СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Константы.Логотип.Получить());
где СсылкаНаКартинку - реквизит формы с типом строка, а на форме есть элемент, у которого путь к данным = СсылкаНаКартинку
Возможно ли реализовать отображение картинки таким образом, или стоит хранить картинку где-либо еще? Ответ:
Навигационную ссылку на константу получить не получится(
Получится только так:
т.е. в процедуру ПриСозданииНаСервере поместить картинку во временное хранилище и она там сидит пока закроете форму
Есть форма списка справочника "Сотрудники".
В нем есть реквизит "Фото", который имеет тип "СправочникСсылка.ХранилищеДополнительнойИнформации" (справочник "ХранилищеДополнительнойИнформации" по структуре полностью совпадает анологичным справочником в 1С 8.1).
В реквизиты формы списка добавил "АдресКартинки" тип "строка", в элементы добавил поле "Картинка" (вид - поле картинки) с путем к данным "АдресКартинки". Как вывести Картинку?
Ответ:
"Хранилище" - это "стандартный" реквизит справочника "ХранилищеДополнительнойИнформации".
Имеется регистр сведений с именем "Изображения" следующей структуры:
Измерения:
- ИдИзображения (тип - уникальный идентификатор);
Реквизиты:
- Изображение (тип - ХранилищеЗначений)
Реализовать возможность записи изображений в него, проблемы не составило. А застрял на получении навигационной ссылки на нужную запись регистра? Ответ - Для регистра сведений первым параметром должен быть ключ записи, а не ссылка на объект.
Т.е. если есть регистр сведений ХранилищеКартинок с изменением Ном (тип справочник Ном) и ресурс Картинка (тип хранилище значений) - код для получения навигационной ссылки должен быть примерно таким:
При использовании в web-клиенте
Стояла следующая задача: отправлять уведомления о изменениях в документах на почту и вкладывать в письмо гиперссылку на измененный документ. База опубликована на web-севере. Полученная в 1С ссылка методом ПолучитьНавигационнуюСсылку() имела следующий вид https://localhost/#e1cib/data/Документы.Счет?ref="ab99005056c0000811e00f627bcddd55"
Вложенная в таком виде ссылка не открывала нужный документ, а лишь инициировала переход в базу.
Как оказалось проблема была в следующем, в URL-адресах не должны присутствовать кавычки, их заменяем на %22 https://localhost/#e1cib/data/Документы.Счет?ref=%22ab99005056c0000811e00f627bcddd55%22
В командном интерфейсе в "Перейти",нет регистров, по которым этот документ делает движения
Сначала надо добавить в "Общие команды" в "Тип парамента команды" документ, затем в отчете, который вызывает эта команда в "Документ" добавить наш документ
В 1С 8.х
В процессе длительной эксплуатации системы в журнале регистрации может накапливаться значительное число записей. Поэтому поддерживается возможность сокращения журнала регистрации и удаления записей, ставших неактуальными. При сокращении журнала регистрации можно записать удаляемые события в файл, если предвидится необходимость их анализа в будущем. В конфигураторе, в меню «Администрирование – Настройка журнала регистрации…» кнопкой «Сократить» – установив текущую дату. Там же можно сохранить журнал в файл.
В поле Текущий диапазон событий, указывается диапазон времени за который есть данные. Удалить события до – здесь указываем до какой даты можно удалить данные.
Удаляемые данные можно сохранить, для этого установим свойство “Записать удаляемые события в файл” и укажем папку в которую сохраним.
Если требуется периодически сокращать журнал и при этом иметь возможность просматривать уже удаленные события журнала, то установите флажок “Сохранять разделение хранения журнала по периодам и объединять с сохраненным ранее журналом“.
Используя средства работы со списками, разработчик имеет возможность выгрузить журнал регистрации в текстовый или табличный документ, который в дальнейшем может быть сохранен в собственном формате или, например, формате листа Excel или документа HTML.
Кроме этого поддерживается выгрузка журнала регистрации в формате XML, что может использоваться для последующего анализа выгруженных записей средствами встроенного языка.
Особенности функционирования журнала регистрации
При создании новой информационной базы для журнала устанавливается режим регистрации событий всех уровней важности; включение и выключение журнала регистрации. При загрузке информационной базы из файла журнал регистрации не очищается.
Временные таблицы - хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа МенеджерВременныхТаблиц. Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу, используется ключевое слово "ПОМЕСТИТЬ В", например:
Временная таблица создается при выполнении запроса, если повторно выполнить запрос, то выдастся ошибка, что таблица уже существует.
Описания временных таблиц хранятся в свойстве запроса МенеджерВременныхТаблиц. К сожалению, нельзя получить список временных таблиц, которые хранятся в запросе.
Пример 1: Как можно выгрузить временную таблицу в таблицу значений и как использовать менеджер временных таблиц:
Вместо перечисления списка полей можно использовать "ВЫБРАТЬ * ".
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно воспользоваться функцией:
Пример 2: Нужно в отчете СКД Связать Данные из Регистра Накопления ВзаиморасчетыСРаботниками и Табличной Части Документа ЗарплатаКВыплате по Ссылке на Документ и ФизЛицу! И вывести полученные данные за указанный Период(с ДатаН по ДатаК) - Запрос будет такой:
Справочник «Внешние обработки, печатные формы, обработки по заполнению табличных частей» содержит список произвольных обработок, произвольных отчетов, дополнительных печатных форм, обработок для заполнения ТЧ объектов, обработок, подключаемых к отчетам.
Общее описание: Произвольная обработка (произвольный отчет)
Для произвольных обработок необходимо указывать только внешнюю обработку, которая находится на диске, для ее загрузки в реквизит элемента справочника. Так же для произвольных обработок необходимо иметь возможность назначать права доступа для их использования.
Обработка для заполнения ТЧ объектов
Для обработок заполнения ТЧ необходимо указывать внешнюю обработку, список объектов и их ТЧ, для которых необходимо использовать данную обработку.
Внешняя печатная форма
Для подключаемых внешних печатных форм необходимо указывать:
внешнюю обработку;
при необходимости можно указать список дополнительных параметров, которые будут передаваться внешней обработке;
список объектов, для которых данная печатная форма используется;
для каждого объекта несколько отборов, при выполнении которых печатная форма становится доступной для использования с данным объектом;
для каждого объекта свою отдельную печатную форму, но в списках печатных форм в объектах будет всегда появляться одинаковый пункт подменю;
для каждого объекта встроенную печатную форму, которая будет заменена указанной внешней.
Корректно зарегистрированная печатная форма будет выводиться в общем списке печатных форм объекта, вызываемом по кнопке «Печать». Если подключаемая печатная форма заменяет стандартную, то она заменяется и показывается в списке стандартных печатных форм.
Внешняя обработка, подключаемая к отчету
К каждому отчету (на базе универсального отчета) можно подключать произвольное количество обработок. Перечень обработок которые будут фактически подключены к отчету определяется правами доступа пользователей к внешним обработкам.
Для каждой обработки, подключенной к отчету можно указать режим её запуска:
Запускать автоматически перед началом построения отчета
Обработка будет запущена после нажатия на кнопку «Сформировать» в отчете перед выполнением запроса к данным. Результат выполнения обработки может быть выведен в форму отчета, если обработка завершается с указанием прервать построение отчета. Иначе форма отчета очистится после выполнения обработки. Также в зависимости от результата работы обработки построение отчета может быть прервано. Пользователю может быть выдано сообщение о причине.
Например:
a. не готовы исходные данные,
b. формирование отчета запрещено в этот период времени, этим пользователем и т.п.
Запускать автоматически после построения отчета
Обработка будет запущена, после того как нажата кнопка «Сформировать» и результаты отчета выведены в поле табличного документа. Этот режим предназначен для дополнительной обработки результата полученного в отчете.
Запускать вручную
Обработку можно будет запускать вручную, через меню «Действия» отчета
Обработки, для которых задан режим запуска «Вручную» автоматически размещаться в меню «Действия» отчета.
Требования к подключению внешних обработок(для программиста):
Произвольная обработка
Любая внешняя обработка с определенной основной формой. Произвольный отчет
Любой внешний отчет с определенной основной формой. Обработка для заполнения ТЧ объектов
Внешняя обработка, содержащая:
Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры.
В модуле экспортную процедуру: Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта)
где: Объект - ДокументОбъект, СправочникОбъект - откуда был произведен вызов процедуры заполнения внешней обработки; ИмяТабличнойЧасти – Строка. Имя табличной части, для которой вызвана обработка; ТабличноеПолеОбъекта – Элемент формы: Табличное поле. Табличное поле формы, для которого вызвана обработка.
Также обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из 2-х колонок («полное имя метаданного» и «имя табличной части»).
Пример: Внешняя обработка «Заполнить по остаткам» предназначена для заполнения табличной части «Товары» документа «Перемещение товаров» типовой конфигурации фирмы 1С «Бухгалтерия предприятия».Скачивать файлы может только зарегистрированный пользователь! Внешняя печатная форма
Внешняя обработка, содержащая:
Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры. Подробнее об этом!
Реквизит «СсылкаНаОбъект», в который при вызове будет передана ссылка на объект, для которого необходимо выполнить печать.
Функция «Печать()» - без параметров, возвращающая табличный документ.
Также обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из 2-х колонок («полное имя метаданного» и «имя табличной части»).
Пример: Внешняя обработка «Универсальная внешняя печатная форма» - пример создания подключаемой внешней печатной формы для типовых конфигураций фирмы 1С.Скачивать файлы может только зарегистрированный пользователь! Внешняя обработка, подключаемая к отчету
Внешняя обработка, содержащая:
В модуле экспортную процедуру: Инициализировать()
Обязательный реквизит «ДополнительныеПараметры» - произвольного типа. При создании обработки инициализируется значением типа Структура, содержащим: Отчет – ОтчетОбъект, из которого осуществляется вызов внешней обработки. ТабличныйДокумент - ТабличныйДокумент, в который осуществляется вывод отчета. Отказ - флаг, определяющий необходимость дальнейшего построения отчета. Как подключить внешнюю печатную форму 1С?
Для использования Внешней печатной формы, Вам нужно запустить Вашу 1С в режиме Предприятие и в меню "Сервис" - "Внешние печатные формы" просто добавить ее в список! Более подробно об этом читайтездесь!
В большинстве случаев для установки 1C:Предприятия 8.х в варианте “клиент-сервер” достаточно запуска программы установки 1С:Предприятия 8.х. При этом сервер 1С:Предприятия получает стандартные значения параметров, необходимые для его нормального функционирования.
Рассмотрим установку сервера 1С:Предприятия более детально. В процессе установки сервера 1С:Предприятия 8.х программа установки 1С:Предприятия 8.х выполняет следующие действия:
* Копирует загрузочные модули сервера 1С:Предприятия в каталог, указанный программе установки 1С:Предприятия в качестве конечной папки.
* Если в процессе установки выбрано "Создать пользователя USR1CV81", то создает пользователя USR1CV81. От имени этого пользователя работает сервер 1С:Предприятия 8.1, если он запускается как сервис. Ему доступны только те ресурсы, которые необходимы серверу 1С:Предприятия. Важно, что серверу 1С:Предприятия для работы необходимы два каталога: общий каталог с данными сервера (обычно "C:\Program Files\1cv81\server") и каталог временных файлов (обычно "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp"). Пользователь USR1CV81 получает права на общий каталог с данными сервера. Каталог временных файлов обычно доступен всем пользователям.
* Если в процессе установки включено "Установить сервер 1С:Предприятия 8.1 как сервис Windows", то регистрирует в Windows сервис агента сервера 1С:Предприятия и запускает его. При первом запуске создается кластер серверов 1С:Предприятия с настройками по умолчанию. В нем один рабочий сервер и один рабочий процесс. Адрес рабочего сервера совпадает с именем компьютера, на котором выполнена установка.
Пользователь USR1CV81 или USR1CV82 и его права
Сервер 1С:Предприятия является серверным приложением работа которого не должна зависеть от того, какой пользователь вошел в серверный компьютер в интерактивном режиме, если вообще кто-нибудь вошел. Поэтому при установке сервера 1С:Предприятия желательно создать специального пользователя USR1CV81, наделенного правами, минимально необходимыми для сервера 1С:Предприятия, и не предназначенного для интерактивного входа. Сервер 1С:Предприятия представляется системе Windows пользователем USR1CV81.
Рассмотрим подробнее права, устанавливаемые пользователю USR1CV81. Сервер 1С:Предприятия использует следующие каталоги:
* Каталог загрузочных модулей находится в каталоге, заданном программе установки 1С:Предприятия в качестве конечной папки. В нем расположены загрузочные модули сервера 1С:Предприятия. Пользователь USR1CV81 необходимы права на чтение данных и запуск программ из этого каталога и его подкаталогов. Он получает эти права неявно, благодаря включению в группу Users.
* Каталог данных сервера обычно имеет имя "C:\Program Files\1cv81\server". Пользователю USR1CV81 необходимы полные права на этот каталог. Программа установки 1С:Предприятия при создании пользователя USR1CV81 наделяет его правами на этот каталог.
* Каталог временных файлов обычно имеет имя "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp", которое определяется значением переменной TEMP окружения пользователя или переменной TEMP системного окружения. Посмотреть значение этой переменной можно в диалоге System Properties (Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variables). Программа установки 1С:Предприятия задает пользователю USR1CV81 полные права на этот каталог. Обычно при установки Windows каталог временных файлов доступен всем пользователям посредством включения в его список доступа группы CREATOR OWNER. Однако, это доступ не полный. В частности, всем пользователям не доступна операция поиска файлов в этом каталоге. Установка пользователю USR1CV81 полных прав на каталог временных файлов позволяет серверу 1С:Предприятия выполнять все необходимые ему операции. Посмотреть список доступа можно в диалоге свойств каталога на закладке Security. Наличие группы CREATOR OWNER позволяет обращаться к каталогу любому пользователю, создающему какие-нибудь файлы в этом каталоге или владеющему какими-нибудь файлами в этом каталоге. При этом в списке доступа созданного файла вместо группы CREATOR OWNER будет записан пользователь, создавший файл. Среди пользователей, которым разрешен доступ в этот каталог, должен быть и пользователь USR1CV81, наделенный полными правами на этот каталог.
Важно иметь в виду, что каталог временных файлов определенного пользователя (в том числе и пользователя USR1CV81) определяется комбинацией переменных окружения этого пользователя и системных переменных окружения. Чтобы узнать этот каталог, программа установки 1С:Предприятия запрашивает контекст пользователя USR1CV81. В для этого в Windows 2000 пользователю, от имени которого запускается программа установки 1С:Предприятия, могут потребоваться привилегии: Act as part of the operating system и Bypass traverse checking. Проверить привилегии пользователя можно утилитой Local Sequrity Settings в ветке Local Policies -> User Rights Assignment. В процессе установки нового программного обеспечения программа установки обычно получает эти привилегии автоматически.
Регистрация сервера 1С:Предприятия как сервиса Windows
Сервер 1С:Предприятия является простым консольным Windows приложением и может быть запущен интерактивно. Однако для постоянного использования это неудобно, поскольку ставит запуск сервера 1С:Предприятия от входа итнерактивного пользователя в серверный компьютер. Чтобы исключить эту зависимость, сервер 1С:Предприятия может запускаться как сервис Windows. Для этого он должен быть зарегистрирован в менеджере сервисов Windows.
Для просмотра списка сервисов Windows и их параметров предназначена утилита Component Services (Start -> Settings -> Control Panel -> Administrative Tools -> Services). Сервер 1С:Предприятия представлен в списке сервисов сервисом "Агент сервера 1С:Предприятия 8.1". Параметры сервиса определяют запуск процесса "Агент сервера 1С:Предприятия" (ragent), пользователя, от имени которого он запускается, а также способ перезапуска в аварийных ситуациях.
В диалоге свойств сервиса "Агент сервера 1С:Предприятия 8.1" на закладке General показана строка запуска процесса ragent, который является Агентом сервера 1С:Предприятия. Обычно эта строка имеет вид: "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server"
В ней указано, что:
* процессом Агента сервера является загрузочный модуль "C:\Program Files\1cv81\bin\ragent.exe";
* процесс ragent запускается как сервис Windows и должен управляться менеджером сервисов (-srvc);
* используется как Агент сервера 1С:Предприятия (-agent);
* при первом запуске сервиса должен быть создан кластер с параметрами по умолчанию и главным IP-портом номер 1541 (-regport 1541). По этому порту клиентские приложения должны соединяться с информационными базами, зарегистрированными в кластере;
* IP-порт агента сервера должен иметь номер 1540 (-port 1540). По этому порту Консоль кластера должна соединяться с центральным сервером для выполнения административных функций;
* при запуске процессов кластера на данном сервере им будут динамически назначаться IP-порты из диапазона 1560-1591 (-range 1560:1591).
* общие данные кластера будут размещены в каталоге "C:\Program Files\1cv81\server" (-d "C:\Program Files\1cv81\server").
Сервис "Агент сервера 1С:Предприятия 8.1" может быть добавлен или удален не только при установке или удалении 1С:Предприятия программой установки 1С:Предприятия 8.1, но и вручную. Для этого можно исполнить из командной строки утилиту ragent, указав ей соответствующие параметры.
Для создания сервиса нужно указать параметр -instsrvc и параметры: -usr - имя пользователя, от имени которого должен быть запущен сервис, -pwd - пароль этого пользователя. При этом остальные параметры станут параметрами строки запуска Агента сервера 1С:Предприятия как сервиса. Например, для стандартной регистрации сервиса Агента сервера 1С:Предприятия в отладочном режиме набор параметров должен быть таким:
Для удаления сервиса нужно указать параметр -rmsrvc. Например: "C:\Program Files\1cv81\bin\ragent.exe" -rmsrvc
Иногда бывает полено изменить строку запуска Агента сервера или другие параметры сервиса Агента, например, включить режим отладки, или создать несколько сервисов разных версий. Диалог свойств сервиса не позволяет редактировать строку запуска сервисного приложения и некоторые другие параметры, например, идентификатор сервиса. Для редактирования потребуется утилита regedit, предназначенная для просмотра и редактирования системного реестра Windows.
Внимание! Редактирование системного реестра Windows требует крайней осторожности, поскольку ошибочные изменения в нем могут привести операционную систему в неработоспособное состояние.
Запустите утилиту regedit (откройте Start -> Run и наберите regedit) и выберите ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
Среди ее параметров есть параметр ImagePath, значением которой является строка запуска Агента сервера 1С:Предприятия. Здесь можно добавить новые параметры строки запуска или поменять значения существующих. Полный список возможных параметров приведен в книге "1С:Предприятие 8.1 Клиент-сервер" документации.
При необходимости регистрации нескольких независимых сервисов Агента сервера 1С:Предприятия нужно указать им разные загрузочные модули, разные порты и разные каталоги данных кластера. Еще требуется зарегистрировать их с разными идентификаторами сервисов. Это можно сделать так:
* Создать первый сервис: "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server"
* При помощи утилиты regedit изменить идентификатор зарегистрированного сервиса. Для этого: выбрать ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
и изменить ее имя, например на: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent First
* Создать второй сервис: "C:\Program Files\1cv81_10\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files\1cv81_10\server"
* Быть может, его идентификатор тоже изменить. Для этого: выбрать ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
и изменить ее имя, например на: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent Second
Что не может сделать программа установки 1С:Предприятия?
Как уже говорилось, программа установки 1С:Предприятия копирует загрузочные модули 1С:Предприятия и выполняет необходимую регистрацию в COM и в менеджере сервисов Windows. Выше приведена информация, необходимая для понимания внутренних механизмов этой регистрации. Если на серверном компьютере установлен не только сервер, но и клиентская часть 1С:Предприятия, то она готова к работе сразу после установки (и подключения ключей защиты).
Чтобы сервер 1С:Предприятия был доступен с других компьютеров в локальной сети, необходимо проверить сетевые настройки на серверном и клиентском компьютере, а также для сети в целом. Для передачи данных между клиентскими приложениями и сервером 1С:Предприятия, а также между процессами кластера серверов используется TCP/IP. От правильности его настройки зависит работа 1С:Предприятия в варианте клиент-сервер.
Процессы кластера серверов 1С:Предприятия соединяются друг с другом по адресам, определенным в качестве значений свойства "Компьютер" диалога свойств рабочих серверов. Для кластера необходимо, чтобы значением свойства "Компьютер" был либо IP-адрес в точечной нотации, либо такой символический адрес, по которому может быть определен IP адрес при помощи функции gethostbyname, определенной в программном интерфейсе протокола TCP. Определение IP-адреса выполняется либо на основании локальной таблицы символических адресов (C:\WINNT\system32\drivers\etc\hosts), либо по таблицам адресов в доступных DNS серверах. Если по символическому адресу рабочего сервера его IP-адрес не определяется или определяется неправильно (например, IP-адрес не совпадает с фактическим IP-адресом данного компьютера), то кластер работать не будет. Важно, чтобы имена компьютеров и их адреса, определенные в Windows на каждом из рабочих серверов кластера, не противоречили их именам в DNS.
На каждом рабочем сервере процессы кластера используют следующие порты: IP порт рабочего сервера (обычно 1540); IP порты из диапазонов IP портов рабочего процесса (обычно 1560-1591). Кроме того, на центральном сервере кластера используется порт кластера (обычно 1541). Если в системе используются сетевые экраны, то передача данных по этим портам должна быть разрешена. Вместо разрешения портов из приведенного списка можно разрешить передачу данных процессам кластера (ragent, rmngr, rphost).
Соединение клиентского приложения 1С:Предприятия с сервером выполняется в 2 этапа. Сначала оно устанавливает соединение с менеджером кластера. При этом используется адрес центрального сервера (символический или числовой) и порт кластера (обычно 1541). Далее клиентское приложение устанавливает соединение с одним из рабочих процессов. В качестве его адреса используется значение свойства "Компьютер" соответствующего рабочего сервера и порт рабочего процесса, который выбирается из диапазона IP портов рабочего сервера. Передача данных на эти порты должна быть разрешена во всех сетевых экранах на маршруте от компьютера клиентского приложения до компьютеров кластера серверов 1С:Предприятия. Определение IP адреса серверных процессов выполняется при помощи функции gethostbyname на компьютере клиента. Важно, чтобы имена центрального и рабочих серверов и их адреса, определенные в Windows на каждом из серверов кластера, не противоречили их именам в DNS, доступном компьютеру клиента.
И последнее. Очевидно, что для успешного доступа к серверу 1С:Предприятия с других компьютеров он должен быть в сети и должны быть выполнены необходимые для этого настройки. Подключение к сети и методика настройки относятся к администрированию сетей на базе Microsoft Windows и описаны в соответствующих инструкциях.
Особенности настройки SQL-сервера
1С:Предприятие в варианте «клиент-сервер» использует для хранения данных SQL-сервер. При этом к SQL-серверу обращается только Сервер 1С:Предприятия. Клиенты 1С:Предприятия непосредственного доступа к SQL-серверу не имеют. Установка и настройка SQL-сервера подробно описана в документации по Microsoft SQL Server. Для успешной работы Сервера 1С:Предприятия с SQL-сервером необходимо обратить особое внимание на следующие настройки.
* Необходимые компоненты SQL-сервера. Для доступа к SQL-серверу со стороны Сервера 1С:Предприятия на компьютере Сервера 1С:Предприятия должны быть установлены компоненты Microsoft Data Access 2.6 или более поздний.
* Аутентификация пользователя SQL-сервером. Права доступа к базам данных SQL-сервера определяются пользователем, от имени которого происходит обращение к базам данных. С компьютера, на котором установлен SQL-сервер, запустим утилиту SQL Server Enterprise Manager, найдем узел Local (Console Root -> Microsoft SQL Servers -> SQL Server Group -> (Local)) и откроем его свойства. На закладке Sequrity можно видеть, что SQL-сервер поддерживает два способа аутентификации пользователей: SQL Server and Windows и Windows only. Аутентификация Windows позволит Серверу 1С:Предприятия обращаться к SQL-серверу только от имени пользователя USR1CV81, что не позволяет различать права доступа до различных информационных баз, обслуживаемых одним сервером 1С:Предприятия. Рекомендуется выбирать режим SQL Server and Windows. В этом случае обращение к конкретной информационной базе будет выполняться от имени пользователя, который задан в качестве пользователя SQL-сервера при создании данной информационной базы. Важно, что этот пользователь должен иметь не только полные права на базу данных информационной базы, но и права на создание баз данных в SQL-сервере и на чтение таблиц базы данных Master.
* Сетевые протоколы для доступа к SQL-серверу. Если Сервер 1С:Предприятия и SQL-сервер размещены на разных компьютерах, то необходимо выполнить настройки сетевых протоколов доступа к SQL-серверу. Это можно сделать при помощи утилиты SQL Server Client Network Utility. На закладке General можно выбрать список сетевых протоколов, используемых для доступа к SQL-серверу. Наиболее быстрым и универсальным является использование протокола TCP/IP. При использовании других протоколов необходимо иметь в виду, что некоторые из них, например Named Pipes, выполняют дополнительную аутентификацию средствами Windows при обмене данными с SQL-сервером. В этом случае для успешной работы с SQL-сервером на компьютере с SQL-сервером должен быть зарегистрирован пользователь USR1CV81, наделенный соответствующими правами. Протокол доступа к данному SQL-серверу может быть изменен на закладке Alias.
Заполнение настроек на этой закладке служит для настройки отчета по-умолчанию в пользователь-ском режиме работы отчета.
Окно для настройки отчета доступно в пользовательском режиме отчета, при этом отличие от на-стройки СКД в конфигураторе в том, что можно использовать значения не предопределенных дан-ных из базы данных.
Окно настроек состоит из основного окна, где выводятся списки группировок, таблиц и диаграмм и набора закладок в которых устанавливаются параметры настроек для объектов указанных в секции группировок. Какие именно редактируются настройки в данный момент мы можем указать нажав на кнопку с надписью о том какой объект мы редактируем:
Возможно, редактировать общие настройки для всего отчета, а нажав на соответствующую кнопку можно редактировать настройки исключительно для выбранного объекта: элемента группировки, таблицы, диаграммы.
Закладка «Параметры данных»
На этой закладке устанавливаются значения параметров данных. Список доступных параметров данных определяется на закладке «Параметры» схемы СКД, здесь же устанавливаются только пользовательские значения параметров. Причем доступны только те параметры, для которых в схеме СКД сброшена галочка «Ограничение доступности».
В таблице присутствуют несколько колонок:
1. «Использование» - галочкой пользователь указывает использовать или не использовать данный параметр для формирования отчета.
2. «Параметр» - имя параметра
3. «Значение параметра» - значением параметра или указание, откуда значение параметра можно извлечь. Например, если сбросить текущее значение, нажав на «Х», то нажав на кнопку «Т» откроется выбор типа параметра в диалоге:
Источником может служить, какое либо значение простого типа Строка, Дата, Число, Булево или ссылка на объект в базе данных. А также источником для данного параметра может быть значение другого параметра, для этого нужно выбрать значение «Поле компоновки данных» и выбрать нужное поле из списка параметров.
Для даты можно назначать автоматические значения для подстановки: «Начало этого дня», «Начало этой недели» и т.д.
Закладка «Выбранные поля»
На этой закладке определяются поля, кроме группировок, которые будут выводиться отчет. На за-кладке два списка с доступными полями и выбранными полями. Кроме полей определенных в наборах данных к выводу доступны параметры и системные поля «Номер по порядку», «НомерПоПорядкуВГруппировке», «Уровень», «УровеньВГруппировке», а также пользовательские поля определенные на закладке «Пользовательские поля».
Переносить поля можно двойным нажатием на название в левом окне или воспользовавшись специальной кнопкой в командной панели. Добавлять можно такие элементы «Новое поле», «Новая группа», «Новое автополе». «Новое поле» - добавляет элемент в котором можно выбрать поле из доступного списка полей. «Новая группа» - можно сгруппировать ряд полей под одной шапкой. «Новое автополе» - используется для того чтобы указать, что поля выводимые для группировок будут выбираться из настроек группировки вышестоящего уровня. Например, определив для всего отчета ряд полей-ресурсов, мы, указав новое автополе для группировок. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью кнопок перемещения. Установкой галочек можно регулировать видимость полей в отчете.
После определения набора полей мы можем отредактировать поля в списке, нужно войти в режим редактирования поля, нажать на кнопку выбор и выбрать из списка нужное поле.
Для ресурсов доступны для выбора уточнения для расчетов реквизита: «% в группе» - используется для расчета доли значения ресурса для всей группировки в группе, т.е. в итоге в группе по совокупности значений ресурса будет 100%; «% общий» - общий процент не зависимо от группы по всем значениям ресурса.
Для полей объектного типа справочник, документ и т.д. возможно указать в выбранные поля реквизит объекта.
Закладка «Отбор»
На этой закладке определяются отборы, которые влияют на результат отчета.
Как и на закладке «Выбранные поля» есть два окна, слева все доступные поля СКД для выбора в отбор, в правом элементы и значения которые влияют на отбор. Добавить новый элемент или группу элементов можно также клавишей Добавить. Удалить элементы можно с помощью кнопки Удалить , передвинуть по позиции с помощью стрелок перемещения. Установкой галочек можно регулировать активность того или иного отбора в отчете. После нажатия кнопки «Подобно» в списке элементов отбора добавляются уточняющие реквизиты отбора: «Режим отображения» и «Представление».
После добавления нового элемента в список отборов для редактирования доступны поля:
• «Левое значение» - поле СКД или поле простого типа («Число», «Строка», «Дата», «Булево»), на которое накладывается отбор
• «Вид сравнения» - список возможный условий отбора: «Равно», «Не равно», «В списке», «В группе из списка», «В группе», «Не в списке», «Не в группе из списка», «Не в группе», «Со-держит», «Не содержит», «Заполнено», «Не заполнено»
• «Правое значение» - значение отбора, соответствует значению поля «Левое значение». В случае если «Вид сравнения» равен «В списке», «В группе из списка», «Не в списке», «Не в группе из списка» то для установки доступен список значений
• «Режим отображения» - возможный два варианта «Быстрый доступ» и «Обычный». В случае если установлен «Быстрый доступ» то если это возможно значения для выбора отображаются в виде выпадающего списка, особенно это актуально для небольших редко меняющихся справочников, перечислений или видов характеристик. «Обычный» - способ отображения значений принятый для объектов по-умолчанию в виде формы выбора или списка.
• «Представление» - текстовое представление отбора в сокращенном режиме (если не нажата кнопка «Подробно»), а также представление отбора при выводе отчета.
В отборы можно добавлять группы – которые служат для объединения нескольких отборов, по какому либо критерию «И», «ИЛИ», «НЕ».
Например, нужно объединить несколько условий с помощью оператора «И». Для этого нужно в отбор добавить «Группа И» в этой группе перечислить условия. Допускается вложенность групп, с помощью которых можно создавать сложные условия. Кроме «Группа И» доступны «Группа ИЛИ» и «Группа Не». По-умолчанию просто список условий отбора не принадлежащий, какой либо группе соединен между собой с помощью оператора «И».
Закладка «Сортировка»
На данной закладке указываются поля, по которым производится сортировка.
Добавление полей на данной закладке аналогичное тому, как это делается на закладке «Выбранные поля». Единственный параметр, который указывается в выбранных полях сортировки, это направление сортировки.
Закладка «Условное оформление»
На закладке «Условное оформление» мы указываем, какие поля, условия отборов и условия оформления будут применятся при выводе полей в отчет.
«Область» - список полей, на которые влияет условное оформление.
«Отбор» - условия отбора при которых условное оформление действует
Условия отбора указываются также как и на закладке «Отбор» основного окна настройки компоновки.
«Условное оформление» - при заполнении данного поля выводится окно с выбором возможных опций оформления для указанных полей.
Список возможных опций оформления:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (например, 90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения
Закладка «Пользовательские поля»
На данной закладке можно указать пользовательские поля и формулы, по которым поля будут вычисляться.
При нажатии на добавление поля откроется выбор типа пользовательского поля: «Новое поле вы-бор», «Новое поле выражение».
«Поле выбор» - появляется диалог конструирования нового поля выбора. Данное поле будет принимать заданные значения в зависимости от условия отбора заданного в таблице «Варианты».
«Поле выражение» - используется в случае когда, нужно не меняя схемы компоновки вставить вы-числяемые поля. Например, в схеме указаны ресурсы «Количество» и «Сумма». В пользовательском режиме мы хотим вычислить цену. Для этого мы в поле конструирования выражения вставляем формулу:
В пользовательских полях можно использовать выражения из запросов.
Также для обозначения итоговых записей в выражении нужно использовать агрегатные функции СУММА(..), КОЛИЧЕСТВО(), МИНИМУМ(..), МАКСИМУМ(..)
Закладка «Другие настройки»
На закладке «Другие настройки» определяются настройки, которые влияют на расположение группировок, полей выбора, ресурсов и т.д.
Макет оформления Заданные предопределенные макеты оформления
Расположение итогов Параметр влияет на расположение итогов
Расположение полей группировок
Расположение группировок
Расположение реквизитов
Расположение ресурсов
Расположение общих итогов по горизонтали
Расположение общих итогов по вертикали
Тип заголовка полей
Тип диаграммы
Базовое значение
Пропускать базовое значение
Состав подписей
Режим раздвижения
Отображать таблицу данных
Максимальное значение
Минимальное значение
Окантовка
Градиент
Шрифт
Цвет фона
Стиль линии
Размещение легенды
Полосы измерительной диаграммы
Выводить заголовок
Заголовок
Выводить параметры данных
Выводить отбор
Окно настройки группировок
Настройки схемы компоновки данных могут содержать структуру, включающую в себя доступные элементы настроек.
Такими элементами являются:
• группировка;
• таблица;
• диаграмма;
• вложенный отчет.
Для группировки доступны следующие настройки:
• Флаг использования группировки - если установлен - группировка используется при компоновке;
• Поля группировки - набор полей, по которым осуществляется группировка. Каждое поле группировки системы компоновки данных обладает следующими свойствами:
- Флаг использования поля - если установлен - поле используется;
- Поле группировки - путь к данным поля, по которому осуществляется груп-пировка;
- Тип группировки – тип группировки (Иерархия, Только иерархия, Элемен-ты);
- Тип дополнения – необходимость дополнения дат в периоде;
- Начальная дата - начальная дата периода. Может содержать константное зна-чение, либо значение – поле;
- Конечная дата - конечная дата периода. Может содержать константное значе-ние, либо значение - поле;