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