Разработка алгоритмов — различия между версиями

Материал из Формирование документов Word из 1C
Перейти к: навигация, поиск
(Алгоритм в библиотеке алгоритмов)
 
(не показано 8 промежуточных версий этого же участника)
Строка 2: Строка 2:
  
 
Разработка алгоритмов необходима в случаях, когда не хватает стандартных возможностей СКД для получения необходимых данных. Алгоритм может быть разработан
 
Разработка алгоритмов необходима в случаях, когда не хватает стандартных возможностей СКД для получения необходимых данных. Алгоритм может быть разработан
* при описании заполнения закладки способом "Заполнение произвольным алгоритмом";
+
* при описании [[Способы_заполнения_закладок|заполнения закладки]] способом "Заполнение произвольным алгоритмом";
* при разработке библиотеки алгоритмов.
+
* при разработке [[Библиотека_алгоритмов|библиотеки алгоритмов]].
В обоих случаях алгоритм имеет одинаковых контекст.
+
В обоих случаях алгоритм имеет одинаковый контекст.
  
Контекст алгоритма содержит следующие переменные:
+
Алгоритмы выполняются на сервере. Контекст алгоритма содержит следующие переменные:
  
 
*'''Результат''' - в эту переменную должен быть присвоен результат выполнения алгоритма. Это значение будет подставлено в закладку.  Если значение - '''Неопределено''', то закладка не будет обработана (подстановка значения не производится). Значение по умолчанию - '''Неопределено'''.
 
*'''Результат''' - в эту переменную должен быть присвоен результат выполнения алгоритма. Это значение будет подставлено в закладку.  Если значение - '''Неопределено''', то закладка не будет обработана (подстановка значения не производится). Значение по умолчанию - '''Неопределено'''.
 
*'''Объект''' - ссылка на объект информационной базы 1С, на основе которого заполняется шаблон;
 
*'''Объект''' - ссылка на объект информационной базы 1С, на основе которого заполняется шаблон;
 
*'''кэш''' - соответствие, доступное алгоритмам в процессе выполнения правила заполнения шаблона (его использование - на усмотрение программиста, чаще всего для кэширования);
 
*'''кэш''' - соответствие, доступное алгоритмам в процессе выполнения правила заполнения шаблона (его использование - на усмотрение программиста, чаще всего для кэширования);
 +
* '''текВалюта''' - данную переменную желательно устанавливать в случаях, когда алгоритм возвращает суммовые данные (в рублях или в валюте). Это позволит корректно выводить эту сумму прописью (см. о [[Форматирование_значений_закладок|форматировании]]).
  
 
Редактирование алгоритмов доступно только под полными правами.
 
Редактирование алгоритмов доступно только под полными правами.
 +
 +
== Алгоритм в библиотеке алгоритмов ==
 +
 +
В случае '''алгоритма библиотеки алгоритмов''' доступна еще одна переменная:
 +
 +
* '''ПараметрАлгоритма''' - произвольный параметр, обычно строковый, который может быть передан алгоритму;
 +
 +
Алгоритм библиотеки может быть вызван из другого алгоритма путем следующей строки кода:
 +
 +
<pre>
 +
РезультатВыполненияАлгоритма = ПолучитьРезультатВыполненияАлгоритмаБиблиотеки(Библиотека, ИмяАлгоритма, ПараметрАлгоритма, Объект)
 +
</pre>
 +
 +
где
 +
 +
*'''Библиотека''' - имя библиотеки алгоритмов;
 +
*'''ИмяАлгоритма''' - имя алгоритма внутри указанной библиотеки;
 +
*'''ПараметрАлгоритма''' - произвольный параметр, передаваемый алгоритму (параметр передается по значению);
 +
*'''Объект''' - обычно в данный параметр передается ссылка на объект 1С, на основе которого заполняется шаблон (если объект не нужен, то можно, например, передать Неопределено).
 +
 +
== Примеры алгоритмов ==
 +
 +
Алгоритм заполнения значения закладки:
 +
 +
<pre>
 +
Если Объект.ДлительностьИспытательногоСрока > 0 Тогда
 +
ФорматнаяСтрока = "Л=ru_RU";
 +
ПараметрыПредметаИсчисления = " , , , , , , , , 0";
 +
 +
Результат = "Работник принимается на работу с испытанием продолжительностью " + Строка(Объект.ДлительностьИспытательногоСрока) + " (" + ЧислоПрописью(Объект.ДлительностьИспытательногоСрока, ФорматнаяСтрока, ПараметрыПредметаИсчисления) + ")  месяца в целях проверки его соответствия поручаемой работе";
 +
Иначе
 +
Результат = "Работник принимается на работу без условия испытания";
 +
КонецЕсли;
 +
</pre>
 +
 +
Алгоритм формирования таблицы:
 +
 +
<pre>
 +
Запрос = Новый Запрос("...");
 +
//...
 +
ТЗ = Запрос.Выполнить().Выгрузить();
 +
Результат = Обработки.Word_ФункцииСтандартнойБиблиотеки.ПолучитьМассивСоответствий(ТЗ);
 +
</pre>
 +
 +
Алгоритм задается для закладки шаблона элемента коллекции. Имена колонок таблицы ТЗ должны соответствовать именам вложенных закладок. Для вложенных закладок не нужно указывать способ заполнения.

Текущая версия на 12:30, 23 ноября 2017

Информация для технических специалистов (программисты, консультанты, администраторы)

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

В обоих случаях алгоритм имеет одинаковый контекст.

Алгоритмы выполняются на сервере. Контекст алгоритма содержит следующие переменные:

  • Результат - в эту переменную должен быть присвоен результат выполнения алгоритма. Это значение будет подставлено в закладку. Если значение - Неопределено, то закладка не будет обработана (подстановка значения не производится). Значение по умолчанию - Неопределено.
  • Объект - ссылка на объект информационной базы 1С, на основе которого заполняется шаблон;
  • кэш - соответствие, доступное алгоритмам в процессе выполнения правила заполнения шаблона (его использование - на усмотрение программиста, чаще всего для кэширования);
  • текВалюта - данную переменную желательно устанавливать в случаях, когда алгоритм возвращает суммовые данные (в рублях или в валюте). Это позволит корректно выводить эту сумму прописью (см. о форматировании).

Редактирование алгоритмов доступно только под полными правами.

Алгоритм в библиотеке алгоритмов

В случае алгоритма библиотеки алгоритмов доступна еще одна переменная:

  • ПараметрАлгоритма - произвольный параметр, обычно строковый, который может быть передан алгоритму;

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

РезультатВыполненияАлгоритма = ПолучитьРезультатВыполненияАлгоритмаБиблиотеки(Библиотека, ИмяАлгоритма, ПараметрАлгоритма, Объект)

где

  • Библиотека - имя библиотеки алгоритмов;
  • ИмяАлгоритма - имя алгоритма внутри указанной библиотеки;
  • ПараметрАлгоритма - произвольный параметр, передаваемый алгоритму (параметр передается по значению);
  • Объект - обычно в данный параметр передается ссылка на объект 1С, на основе которого заполняется шаблон (если объект не нужен, то можно, например, передать Неопределено).

Примеры алгоритмов

Алгоритм заполнения значения закладки:

Если Объект.ДлительностьИспытательногоСрока > 0 Тогда
	ФорматнаяСтрока = "Л=ru_RU"; 
	ПараметрыПредметаИсчисления = " , , , , , , , , 0"; 

	Результат = "Работник принимается на работу с испытанием продолжительностью " + Строка(Объект.ДлительностьИспытательногоСрока) + " (" + ЧислоПрописью(Объект.ДлительностьИспытательногоСрока, ФорматнаяСтрока, ПараметрыПредметаИсчисления) + ")  месяца в целях проверки его соответствия поручаемой работе";
Иначе
	Результат = "Работник принимается на работу без условия испытания";
КонецЕсли;

Алгоритм формирования таблицы:

Запрос = Новый Запрос("...");
//...
ТЗ = Запрос.Выполнить().Выгрузить();
Результат = Обработки.Word_ФункцииСтандартнойБиблиотеки.ПолучитьМассивСоответствий(ТЗ);

Алгоритм задается для закладки шаблона элемента коллекции. Имена колонок таблицы ТЗ должны соответствовать именам вложенных закладок. Для вложенных закладок не нужно указывать способ заполнения.