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

Хранилище

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

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



История благодарностей участнику mister-x ::: Спасибо сказали: 1417 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
15.07.11, 12:59 Новые функции СКД 8.2.14
В свете ближайшего выхода 8.2.14, попытаюсь описать некоторые новые функции системы компоновки данных.

Открываем схему компоновки данных, желательно во внешнем отчете, чтобы было проще редактировать.

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

1. Настраиваем запрос в СКД.



2. Настраиваем вычисляемые поля в СКД



3. Выполняем настройку компоновки данных на закладке настройки



4. Запускаем 1С Предприятие 8.2.14. Открываем отчет. Формируем, получаем.



Описание самих новых функций:

1. ТекущаяДата()

Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТекущаяДата() заменяется значением текущей даты.

2. ВЫЧИСЛИТЬВЫРАЖЕНИЕ()

Синтаксис:

ВычислитьВыражение(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Описание:

Функция предназначена для вычисления выражения в контексте некоторой группировки.

Функция учитывает отбор группировок, но не учитывает иерархические отборы.

Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение(«Сумма(СуммаОборот)", , «ОбщийИтог») > 1000. Но такое выражение можно использовать в иерархическом отборе.

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

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

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



Параметры

<Выражение>


__________________________


Тип: Строка. Выражение, которое надо вычислить.

<Группировка>

__________________________

Тип: Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.



Например:

Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке;


<ОбластьВычисления>


_________________________


Тип: Строка. Параметр может принимать следующие значения:



· ОбщийИтог — выражение будет вычисляться для всех записей группировки.

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

· Группировка — выражение будет вычисляться для текущей групповой записи группировки.

· ГруппировкаНеРесурса — при вычисление функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.

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

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

<Начало>


_____________________

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



· Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.

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

· Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.

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

· Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.

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

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

· Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.

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

При получении следующей записи для итога по группировке считается, что записи нет.

· Текущая (Current). Необходимо получить текущую запись.

При получении для итога по группировке получается первая запись.

· ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.

В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, и оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.

<Конец>

____________________

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

· Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.

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

· Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.

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

· Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.

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

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

· Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.

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

При получении следующей записи для итога по группировке считается, что записи нет.

· Текущая (Current). Необходимо получить текущую запись.

При получении для итога по группировке получается первая запись.

· ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.

В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, и оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.

<Сортировка>

_____________________


Тип: Строка. Перечисляются выражения, разделенные запятыми, которые описываютправила упорядочивания. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр (для упорядочивания по возрастанию), Убыв (для упорядочивания по убывания) и Автоупорядочивание (для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка). Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.

<ИерархическаяСортировка>

_____________________


Тип: Строка. Аналогично параметру Сортировка. Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка.

<ОбработкаОдинаковыхЗначенийПорядка>


____________________


Тип: Строка. Указывает правило определения предыдущей или следующий записи в случае если есть несколько записей с одинаковым значением упорядочивания:

· Отдельно (Separately) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей. Значение по умолчанию.

· Вместе (Together) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.

Например, если полученная последовательность упорядочена по дате:
| Дата | ФИО | Значение
1 | 01 января 2001 года | Иванов М. | 10
2 | 02 января 2001 года | Петров С. | 20
3 | 03 января 2001 года | Сидоров Р. | 30
4 | 04 января 2001 года | Петров С. | 40



Если значение параметра равно Отдельно, то:

§ предыдущей записью к записи 3 будет запись 2.

§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец), то для записи 2 этот фрагмент будет состоять из одной записи 2. Выражение ВычислитьВыражение(«Сумма(Значение)", , , Текущая, Текущая) будет равно 20.

Если значение параметра равно Вместе, то:

§ предыдущей записью к записи 3 будет запись 1.

§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец), то для записи 2 этот фрагмент будет состоять из записей 2 и 3. Выражение ВычислитьВыражение(«Сумма(Значение)", , , Текущая, Текущая) будет равно 50.

При указании значение параметра равного Вместе, в параметрах Начало и Конец нельзя указывать смещение для позиций Первая, Последняя, Предыдущая, Следующая.

Пример:

Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:

ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")

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

ВычислитьВыражение("Курс", , , "Предыдущая")


Список новых функций:

ВычислитьВыражениеСГруппировкойМассив(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) -

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

ВычислитьВыражениеСГруппировкойТаблицаЗначений(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) -

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

ЗначениеЗаполнено(<Выражение>) - Возвращает Истина, если значение отлично от значения данного типа по умолчанию, отлично от значения NULL, отлично от пустой ссылки, отлично от значения Неопределено. Для логических значений осуществляется проверка на значение NULL. Для строк осуществляется проверка на отсутствие не пробельных символов

Пример:





Формат(<Выражение>, <Форматная строка>) - Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой системы «1С:Предприятие».

Пример





Подстрока(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Данная функция предназначена для выделения подстроки из строки.

ДлинаСтроки(<Выражение>) - Функция предназначена для определения длины строки. Параметр — выражение строкового типа





Строка(<Выражение>) - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ". Если в качестве параметра передана таблица значений, то функция возвращает строку, содержащую строковые представления всех строк таблицы значений, причем представления ячеек каждой строки разделяются символами "; ", а строки — смиволом перевода строки. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка <Пустое значение>.

©
Alexs555, Batchir, craneua, I_Stranger, light07, logist, TohaMonster, Vofka, Volodimir19901,
13.07.11, 19:28 1С: Предприятие 8. Конвертация данных. Обмен данными между прикладными решениями
Методичка по конвертації даних
Лінк
craneua, Irina_, liksoft, shurik_shurik, Vofka,
06.07.11, 13:24 Проведение по регистрам документа
Цитата
Так что жду Ваших предложений. Спасибо
подивитись як це показано в методичці Введение в конфигурирование в системе "1С:Предприятие 8" Решение оперативных задач.
meverikxp,
06.07.11, 10:21 Улыбнуло
Ось вам і скріншот smile.gif
yur,
05.07.11, 12:48 Стаття (лінк) про нові можливості платформи 8.2.14 f12, MATEVI, Vofka,
28.06.11, 18:30 Реализация стратегий списания Fifo, lifo и средня v8.2
подивіться в методичці "Решение оперативных и управленченских задач" - там це також реалізовано
Chili,
25.06.11, 9:36 після оновлення перестала робити обробка "закриття касової зміни"
Цитата
а че, у нас никого на форуме из главной конторы нема ?
їм не до нас smile.gif тут скоріше місцевий спец (франч) 1С поправить, чим АБІ туди гляне
yur,
15.06.11, 16:27 Улыбнуло
Цитата
в коде могу кончено очень!!!!
DartRomanius. Іноді опечатки надають фразі іншого змісту. Без образ icon_beer17.gif, сам іноді перли видаю шо огого smile.gif.
DartRomanius,
14.06.11, 15:55 DartRomanius, с днем рождения!
Приєднуюсь до привітань.
DartRomanius,
11.06.11, 18:23 Реализация прикладных задач в системе «1С Предприятие 8.2» (2010)
Цитата
БЕЗ CD диска (к сожалению!!)
CD-ROM wink.gif
Alaid, f12, olegzt, Vofka,
28.05.11, 16:03 Чистов Павел. Видеокурс Программирование в 1С 8.2 (Части 1-3)
Полный курс "Комплексная подготовка программистов 1С:Предприятие 8.2" перша редакція (трошки змінена) виложена Павлом Чистовим. Сам торрент-файл.
f12, Vofka,
27.05.11, 16:53 Подчиненные справочники форме списка справочника
Цитата
В 7.7 ?
Так, для реквізиту типу довідник (що має власника) - Связан с - на закладці Дополнительно.
gorik77, Vofka,
25.05.11, 13:03 Форум сильно тормозит
Сьогодні форум час від часу плющить:
Цитата
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@pro1c.org.ua and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Vofka,
18.05.11, 15:54 С чего начать (советы по изучению программирования в 1С)?
Цитата
Не, програмМированию
sergej_homyak в нас і українська мова вітається на форумі див. правила - п.2.
sergej_homyak,
12.05.11, 20:00 Видеоурок "Правила конвертации данных 1С Предприятия"
Для не искушенных "прочими обменами" (начинающих). Правила конвертации данных 1С Предприятия, где их взять и как их использовать. Записал я, распространяется свободно, не для продажи.


Ссылка

Взято звідси samsamych.com/2011/03/06/записал-первый-видеоурок-правила-кон (кирилицю в лінку не розуміє).
craneua, reneyr,
12.05.11, 17:13 Падает 1с при обновлении конфигурации
і в журналі 1С подивіться і розшифруйте дамп пам'яті хр
olegzt,
11.05.11, 19:10 Франчайзинг
Тут немає однозначної відповіді: є хороші франчі - є погані франчі (так як і роботодавці) - ця річ суб'єктивна (люди оціюють по собі). Як кому повезе. Не всі тікають із франчів, є люди, які знаходять саме "свого" франча і там працюють. Є мудра порада з цього приводу - той хто пробує, той знаходить своє.
gorik77,
11.05.11, 12:13 Улыбнуло yur,
10.05.11, 12:32 Учет рабочего времени "Бухгалтерия для Украины", 8.2
Цитата
как и при помощи чего можно решить эту проблему?
Варіант 1. звернутися в наш стіл заказів.
Vofka,
05.05.11, 14:48 Номер за пределами значения!
Думаю, що проблема:
тзТовары.НайтиЗначение(Запрос.Товар,Стр,"Товар");

не знаходить товар у тзТовары, тобто цей метод вертає 0 і звичайно тоді:
Количество = Число(тзТовары.ПолучитьЗначение(Стр,"Количество"));

видає вищеописану помилку.
Але все-таки я б відлагоджувачем пройшовся - і глянув значення змінних: що там вертається і передається.
Flexy,
26.04.11, 11:43 учет рабочего времени: 1с + внешнее оборудование
я ось нагуглив - не така то вже проблема рідери магнітних карт.
Ще по темі: лінк 1 (УТ 8.1), лінк 2 (7.7 і рідери магнітних карт).
руставелли,
21.04.11, 22:34 Модули платформы 1С: Предприятие 8.2
В платформе 8.х существует достаточно большое количество модулей. И чтобы не запутаться во всем этом разнообразии, а так же определиться, в каком из них должен располагаться какой-либо код, нужно четко понимать предназначение каждого из них.

Что такое модули и для чего собственно они предназначены? В модуле располагается программный код. Причем, стоит отметить, что в отличие от платформы 7.7, где код мог располагаться и в свойствах элементов формы и в ячейках таблиц макета, в платформе 8.х любая строчка кода должна располагаться в каком-либо модуле. Обычно модуль состоит из трех разделов - это раздел описания переменных, раздел описания процедур и функций, а так же раздел основной программы. Такая структура характерна практически для всех модулей платформы, за некоторым исключением. В некоторых модулях нет раздела описания переменных и раздела основной программы. Например, Модуль сеанса и любой Общий модуль.

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

Модуль приложения


Модуль предназначен для того, чтобы отловить моменты запуска приложения (загрузки конфигурации) и завершения его работы. И в соответствующих событиях можно расположить процедуры проверки. Например, при начале работы приложения обновить какие-либо справочные данные конфигурации, при завершении работы поинтересоваться, а стоит ли вообще выходить из него, может день рабочий еще не закончился. Кроме того в нем перехватываются события от внешнего оборудования, например, торгового или фискального. Стоит отметить, что модуль приложения перехватывает описанные события только в случае интерактивного запуска. Т.е. когда создается само окно программы. Этого не происходит, если приложение запускается в режиме com- соединения.

В платформе 8.2 существует два различных модуля приложения. Это модуль Обычного приложения и модуль Управляемого приложения. Они срабатывают при запуске различных клиентов. Так модуль управляемого приложения срабатывает при запуске веб-клиента, тонкого клиента и толстого клиента в режиме управляемого приложения. А модуль обычного приложения срабатывает при запуске толстого клиента в режиме обычного приложения.

В модуле приложения можно располагать все разделы – описания переменных, процедур и функций, а так же описания основной программы. Модуль приложения компилируется на стороне клиента, поэтому это сильно ограничивает нас в доступности многих типов данных. Расширить контекст модуля приложения можно за счет методов общих модулей, для которых установлено свойство «Вызов сервера». Все переменные и методы, которые помечены как экспортные будут доступны в любом модуле конфигурации, работающем на стороне клиента. Однако, как бы ни было это заманчиво, не следует размещать здесь большое количество методов. Чем больше в нем находится кода, тем больше время компиляции, а, следовательно, и время запуска приложения, что очень раздражает пользователей.

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

Модуль внешнего соединения


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

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

Модуль сеанса


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

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

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

Общие модули


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

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


  • Хорошим правилом будет не использовать флаг «Глобальный» повсеместно. Это сократит время запуска приложения, а также улучшит читаемость кода (конечно если общий модуль имеет вполне осмысленное название).
  • Не желательно использовать больше одного флага компиляции. Методов, которые необходимо выполнять в разных контекстах не так много, и если все же такие методы потребуются, то для них можно выделить отдельный общий модуль.
  • Флаг «Вызов сервера» имеет смысл, только если модуль компилируется «На сервере». Поэтому все остальные флаги компиляции стоит снять во избежание различных проблем.
  • Если в методах модуля происходит массовая обработка данных, чтение и запись в базу данных, то для увеличения скорости работы лучше отключить контроль прав доступа, выставив флаг «Привилегированный». Этот режим доступен только для общих модулей, компилируемых на сервере.



Модуль формы

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

Модуль объекта


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

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

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

Модуль менеджера объекта


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

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

Условные обозначения на схеме: О.М. Клиент – Клиентский общий модуль; О.М. Сервер – Серверный общий модуль; М.Ф. Клиент – Клиентские процедуры модуля формы; М.Ф. Сервер – Серверные процедуры модуля формы.



Лінк.

Acid, shurik_shurik, Vofka,
21.04.11, 21:01 Локалізація платформи 1С 8.2.
Цитата
Мне бы ваши проблемы.... Ну я еще понимаю печатные формы отчетности на украинском, но диалоги и названия объектов БД....

На той момент мене цікавили саме такі проблеми, оскільки 8.2 на етапі вивчення.
Бачу Ви по 8.2 вже маєте досвід, тому буду дуже вдячним за Вашу допомогу по вивченні платформи 8.2.
5_kopeek,
21.04.11, 14:38 Прямой доступ к базе данных 77 из 8ки
Иногда бывает необходимость, получить какие то данные из 77 для того, что бы видеть всю историю работы до перехода на в 8ку. Вот один из моих вариантов получения данных из архивных баз 77.
База данных 77 на SQL.

P.S. 77-Комплексная


Перем СоединениеБазы    Экспорт;





Процедура КнопкаСформироватьНажатие(Кнопка)

   СоединениеБазы = Новый COMОбъект("ADODB.Connection");

driver="SQL Server";

server="192.168.0.251";

login="sasa";

password="password";

base="dbase77";

ConnectionString = "driver={"+driver+"}; Server="+server+"; uid="+login+"; Pwd="+password+"; Database ="+base+";";

успешныйконект=ложь;

Попытка

СоединениеБазы.Open(ConnectionString);

успешныйконект=истина;

Исключение

успешныйконект=ложь;

КонецПопытки;

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



Процедура Кнопка1Нажатие(Элемент)

БДдбоКН="dbase77.dbo.";

Command = Новый COMОбъект("ADODB.Command");

Command.ActiveConnection = СоединениеБазы;

ТзЗапроса= Новый ТаблицаЗначений;

Артикул="1.1.1";

НачалоПериода="01.01.2010";

КонецПериода="01.12.2010";

query="SELECT Журнал.DOCNO Документ_ном

|, NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата

|, Заявка.sp15113 Контрагент

|, Контрагенты.DESCR КонтрагентыНаименование

|, Номенклатура.sp19714 Артикул

|, ЗаявкаСтроки.IDDOC Ссылка

|, ЗаявкаСтроки.sp15118 Товар

|, ЗаявкаСтроки.sp15119 Количество

|, ЗаявкаСтроки.sp15122 Цена

|, ЗаявкаСтроки.sp19743 Сумма

|, ПоступлениеТоваров.IDDOC ПоступлениеТоваровСсылка

|, РеализацияПродукции.IDDOC РеализацияПродукцииСсылка

|, РеализацияПродукцииСтроки.sp2993 РеализацияПродукцииСтрокиТовар

|, РеализацияПродукцииСтроки.sp2994 КоличествоПродано

|, РеализацияПродукцииСтроки.sp2995 ЦенаРеал

|, РеализацияПродукцииСтроки.sp3028 СуммаРеал

|FROM "+БДдбоКН+"dt15124 AS ЗаявкаСтроки With (NOLOCK)

|INNER JOIN"+БДдбоКН+"_1SJOURN AS Журнал With (NOLOCK) ON ЗаявкаСтроки.IDDOC = Журнал.IDDOC

|INNER JOIN "+БДдбоКН+"dh15124 AS Заявка With (NOLOCK) ON ЗаявкаСтроки.IDDOC = Заявка.IDDOC

| INNER JOIN "+БДдбоКН+"sc4089 AS Номенклатура With (NOLOCK) ON ЗаявкаСтроки.sp15118 = Номенклатура.ID

|INNER JOIN "+БДдбоКН+"sc488 AS Контрагенты With (NOLOCK) ON Заявка.sp15113 = Контрагенты.ID

|LEFT OUTER JOIN "+БДдбоКН+"dh2975 AS ПоступлениеТоваров With (NOLOCK) ON ' BO4' + ЗаявкаСтроки.IDDOC = ПоступлениеТоваров.sp17090

|RIGHT OUTER JOIN "+БДдбоКН+"dh2988 AS РеализацияПродукции With (NOLOCK) ON РеализацияПродукции.sp17090 = ' 2AN' + ПоступлениеТоваров.IDDOC

|FULL OUTER JOIN"+БДдбоКН+"dt2988 AS РеализацияПродукцииСтроки With (NOLOCK) ON РеализацияПродукции.IDDOC = РеализацияПродукцииСтроки.IDDOC AND ЗаявкаСтроки.sp15118 = РеализацияПродукцииСтроки.sp2993

|LEFT OUTER JOIN"+БДдбоКН+"_1SJOURN AS Журнал1 With (NOLOCK) ON РеализацияПродукции.IDDOC = Журнал1.IDDOC

|WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= N'"+НачалоПериода+"')

|AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= N'"+КонецПериода+"')

|AND ((Журнал.CLOSED & 1) = 1)

|AND (Журнал.ISMARK = 0)

|AND (Номенклатура.sp19714 = N'"+Артикул+"')

|AND ((Журнал1.CLOSED & 1) = 1)

|AND (Журнал1.ISMARK = 0)";

Command.CommandText = query; // текст надо фильтровать на недопустимые символы        

RecordSet = Новый COMОбъект("ADODB.RecordSet"); // Подготавливаем записи

RecordSet = Command.Execute(); //Выполнение и получение набора данных

Если RecordSet.EOF() Тогда

иначе

RecordSet.MoveFirst();

инд=-1;

Пока RecordSet.EOF() = 0 Цикл

инд=инд+1;

Заказать=СокрЛП(RecordSet.Fields(RecordSet.Fields.Item("Количество").Name).Value);

Попытка Заказать=Число(Заказать); исключение Заказать=0;Конецпопытки;

ДатаДокумента=СокрЛП(RecordSet.Fields(RecordSet.Fields.Item("Документ_дата").Name).Value);

СтрРасшифровки=ТзЗапроса.Добавить();

СтрРасшифровки.Заказано=Заказать;

RecordSet.MoveNext();  

КонецЦикла;

КонецЕсли;

RecordSet.Close(); // После того, как набор записей уже не нужен, его нужно закрыть        

RecordSet = Неопределено;

Command = Неопределено;

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



Стаття звідси.
Vofka,
21.04.11, 13:53 Подборка книг начинающим изучать 1С:Предприятие 8.2
Цитата
Книга 4-я
Название: 1С:Предприятие 8.2. Руководство разработчика. Часть 2
Автор: 1С
Издательство: 1С
Год: 24 августа 2009
Страниц: 472
Формат: pdf
Размер: 51 Мb

Не качается. Просьба перезалить файл в другое место.
Заранее благодарен!


Виложив.
VarvarV,

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