БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному
Разработка - Практика программирования
Если у Вас возник вопрос, как можно вообще напортачить с регламентными заданиями? Почитайте живые примеры из статьи -> Велостыли: Регламентные задания
Для экспериментов я использовал Платформы 8.3.10.2650 и 8.3.12.1412, конфигурации БСП 2.4.6.56 и 3.0.1.127.
Устанавливаем демо конфигурацию БСП и поехали! Работать будем со Справочником «Заметки». У него есть реквизит Содержание с типом ХранилищеЗначения, а это значит, туда много, что записать можно, ну и присутствуют другие реквизиты, с которыми тоже поработаем.
Содержание:
2 Регламент и форма с ручным запуском.
3 Два регламента, форма с ручным запуском и сохранение параметров для регламентов.
Задачи и решения.
Задача 1. Создать с помощью регламента новый элемент справочника Заметки и записать в реквизит содержание «Заметка создана регламентом в Время создания»
Создаем внешнюю обработку, назовем ее, например, «БСП_ДО_Регламенты»
Добавляем код в модуль:
// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.71");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0.01";
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Задача 1 регламент'");
НоваяКоманда.Идентификатор = "Задача1Регламент";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
// Интерфейс для запуска логики обработки.
Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) Экспорт
// Диспетчеризация обработчиков команд.
Если ИмяКоманды = "Задача1Регламент" Тогда
Команда_ЗаДача1(ПараметрыВыполнения);
КонецЕсли;
КонецПроцедуры
Процедура Команда_ЗаДача1(ПараметрыВыполнения)
СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения);
КонецПроцедуры
Процедура СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения)
//Создаем новый элемент справочника
ТекущийОбъект = Справочники.Заметки.СоздатьЭлемент();
ДатаТекСеанса = ТекущаяДатаСеанса();
//Формируем текст для Содержания
ФорматированныйТекст = Новый ФорматированныйДокумент;
ФорматированныйТекст.Добавить("Заметка создана регламентом в " + Строка(ДатаТекСеанса),Тип("ТекстФорматированногоДокумента"));
ТекущийОбъект.Содержание = Новый ХранилищеЗначения(ФорматированныйТекст, Новый СжатиеДанных(9));
ТекстHTML = "";
Вложения = Новый Структура;
ФорматированныйТекст.ПолучитьHTML(ТекстHTML, Вложения);
ТекущийОбъект.ТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ТекстHTML);
ТекущийОбъект.ДатаИзменения = ДатаТекСеанса;
ТекущийОбъект.Автор = ПараметрыСеанса.ТекущийПользователь;
ТекущийОбъект.Пометка = Перечисления.ЦветаЗаметок.Красный;
ТекущийОбъект.ДляРабочегоСтола = Истина;
ТекущийОбъект.Записать();
КонецПроцедуры
Сохраняем обработку и добавляем ее в нашу конфигурацию для тестов БСП демо.
Моя настройка: C 6 мая 2018 г. каждый день; по 23:59:59 каждые 60 секунд.
Записываем и проверяем.
Вот так просто можно добавить регламент, не изменяя типовой конфигурации. Когда-нибудь РЗ возможно можно будет добавлять через расширение, а пока можно использовать БСП.
Задача 2. В созданную нами дополнительную обработку необходимо добавить форму с возможностью ручного запуска регламентного задания. При этом в содержание надо писать создана заметка вручную или по регламенту.
Меняем код в модуле обработки:
// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.71");
//ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0.02";
//Открываем форму
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Форма задач по регламентам'");
НоваяКоманда.Идентификатор = "НастроитьИВыполнитьЗадачиВручную";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Ложь;
//Регламент1
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Задача 1 регламент'");
НоваяКоманда.Идентификатор = "Задача1Регламент";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
// Интерфейс для запуска логики обработки.
Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) Экспорт
//Если в структуре параметров не передан вид запуска считаем что это запуск регламентом
Если не ПараметрыВыполнения.свойство("ВидЗапускаРегламент") Тогда
ПараметрыВыполнения.Вставить("ВидЗапускаРегламент",Истина);
КонецЕсли;
// Диспетчеризация обработчиков команд.
Если ИмяКоманды = "Задача1Регламент" Тогда
Команда_ЗаДача1(ПараметрыВыполнения);
КонецЕсли;
КонецПроцедуры
Процедура Команда_ЗаДача1(ПараметрыВыполнения)
СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения);
КонецПроцедуры
Процедура СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения)
//Создаем новый элемент справочника
ТекущийОбъект = Справочники.Заметки.СоздатьЭлемент();
ДатаТекСеанса = ТекущаяДатаСеанса();
//Формируем текст для Содержания
ФорматированныйТекст = Новый ФорматированныйДокумент;
//Добавили проверку регламент\форма
ФорматированныйТекст.Добавить("Заметка создана " + ?(ПараметрыВыполнения.ВидЗапускаРегламент,"регламентом","вручную") + " в "+Строка(ДатаТекСеанса), Тип("ТекстФорматированногоДокумента"));
ТекущийОбъект.Содержание = Новый ХранилищеЗначения(ФорматированныйТекст, Новый СжатиеДанных(9));
ТекстHTML = "";
Вложения = Новый Структура;
ФорматированныйТекст.ПолучитьHTML(ТекстHTML, Вложения);
ТекущийОбъект.ТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ТекстHTML);
ТекущийОбъект.ДатаИзменения = ДатаТекСеанса;
ТекущийОбъект.Автор = ПараметрыСеанса.ТекущийПользователь;
ТекущийОбъект.Пометка = Перечисления.ЦветаЗаметок.Красный;
ТекущийОбъект.ДляРабочегоСтола = Истина;
ТекущийОбъект.Записать();
КонецПроцедуры
Добавляем форму и создаем команду «Задание2»
&НаКлиенте
Процедура Задание2(Команда)
Задание2НаСервере();
КонецПроцедуры
&НаСервере
Процедура Задание2НаСервере()
ПараметрыВыполнения = новый Структура("ВидЗапускаРегламент",Ложь);
ИмяКоманды = "Задача1Регламент";
ОбрОбъект = РеквизитФормыВЗначение("Объект");
ОбрОбъект.ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения);
КонецПроцедуры
Записываем и заменяем предыдущую дополнительную обработку на эту.
Проверяем результат:
Задача 3. Создать второе регламентное задание и сделать так, чтобы можно было сохранять параметры настроек, текст содержания и цвет (Пометка). При выполнении заданий параметры заполняют элемент справочника «Заметки». Ранее созданная кнопка должна запускать выбранное задание.
Редактируем функцию СведенияОВнешнейОбработке в модуле обработки. Добавляем второе регламентное задание.
// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.71");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0.06";
//Открываем форму
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Форма задач по регламентам'");
НоваяКоманда.Идентификатор = "НастроитьИВыполнитьЗадачиВручную";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Ложь;
//Регламент1
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Задача 1 регламент'");
НоваяКоманда.Идентификатор = "Задача1Регламент";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
//Регламент2
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Задача 2 регламент'");
НоваяКоманда.Идентификатор = "Задача2Регламент";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
К модулю вернемся позже. Переходим к редактированию формы.
Создаем параметр формы "ДополнительнаяОбработкаСсылка" с типом "СправочникСсылка.ДополнительныеОтчетыИОбработки"
Создаем реквизиты формы.
"РегламентноеЗаданиеСписок" с типом "Строка"
"СписокРЗ" с типом "ТаблицаЗначений"
-"КлючРЗ" с типом "Строка"
-"ТекстСодержания" с типом "Строка"
-"Пометка" с типом "ПеречислениеСсылка.ЦветаЗаметок"
Переименовываем команду «Задание2» в команду «ВыполнитьРЗ», соответственно процедуру тоже приводим к такому имени.
Создаем команду «ЗаписатьИзменения»
Форму делаем вот такого вида
Подготовительные работы выполнены, переходим к программированию.
Список для списка РЗ и ключи РЗ будем брать из модуля обработки, из функции СведенияОВнешнейОбработке она Экспортная. Нас интересуют все команды где Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Дальше мы будем считывать параметры, сохраненные в обработке Хранить их будем в ХранилищеНастроек
Для того чтобы делать меньше телодвижений в модуле обработки пропишем структуру для чистых настроек, для этого создадим экспортную функцию ПолучитьЧистуюСтруктуруНастроек
//Чистые настройки
Функция ПолучитьЧистуюСтруктуруНастроек() Экспорт
СтруктураДанных = Новый Структура;
СписокРЗ = Новый ТаблицаЗначений;
СписокРЗ.Колонки.Добавить("КлючРЗ");
СписокРЗ.Колонки.Добавить("ТекстСодержания");
СписокРЗ.Колонки.Добавить("Пометка");
СтруктураДанных.Вставить("СписокРЗ",СписокРЗ);
Возврат СтруктураДанных;
КонецФункции
Создаем процедуру ПриСозданииНаСервере
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьЗаписаннымиДанными();
КонецПроцедуры
Процедура ЗаполнитьЗаписаннымиДанными()
ОбрОбъект = РеквизитФормыВЗначение("Объект");
//Читаем информацию по доп обработке
ПолучитьСведеньяОбработки = ОбрОбъект.СведенияОВнешнейОбработке();
//В ТЗ Команды будем забирать только регламенты
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Использование", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода());
СтрокиРЗ = ПолучитьСведеньяОбработки.Команды.НайтиСтроки(ПараметрыОтбора);
ОбъектСсылка = Параметры.ДополнительнаяОбработкаСсылка;
перСтруктураНормальная = Ложь;
Если ЗначениеЗаполнено(ОбъектСсылка) Тогда
//Читаем ХранилищеНастроек
перОбщиеПараметры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектСсылка, "ХранилищеНастроек");
СтруктураОбщиеПараметры = перОбщиеПараметры.Получить();
Если Не ЗначениеЗаполнено(СтруктураОбщиеПараметры) Тогда
//записываем чистую структуру
СтруктураОбщиеПараметры = ОбрОбъект.ПолучитьЧистуюСтруктуруНастроек();
КонецЕсли;
Если СтруктураОбщиеПараметры.Свойство("СписокРЗ") Тогда
Если ТипЗнч(СтруктураОбщиеПараметры.СписокРЗ) = Тип("ТаблицаЗначений") Тогда
перСтруктураНормальная = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
МассивРЗ = Новый Массив;
Если перСтруктураНормальная Тогда
//Собираем данные для вывода на форму
Для Каждого СтрокаРЗ Из СтрокиРЗ Цикл
//Собираем Элементы.РегламентноеЗаданиеСписок.СписокВыбора
МассивРЗ.Добавить(СтрокаРЗ.Идентификатор);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("КлючРЗ", СтрокаРЗ.Идентификатор);
НайденныеСтрокиРЗ = СтруктураОбщиеПараметры.СписокРЗ.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтрокиРЗ.Количество() = 0 Тогда
НовСтрока = СписокРЗ.Добавить();
НовСтрока.КлючРЗ = СтрокаРЗ.Идентификатор;
Иначе
Для Каждого нСтрокаРЗ из НайденныеСтрокиРЗ Цикл
НовСтрока = СписокРЗ.Добавить();
ЗаполнитьЗначенияСвойств(НовСтрока,нСтрокаРЗ);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Иначе
//Если настройки отсутствуют в сохраненных настройках, добавляем их в таблицу со значениями по умолчанию
Для Каждого СтрокаРЗ Из СтрокиРЗ Цикл
//Собираем Элементы.РегламентноеЗаданиеСписок.СписокВыбора
МассивРЗ.Добавить(СтрокаРЗ.Идентификатор);
НовСтрока = СписокРЗ.Добавить();
НовСтрока.КлючРЗ = СтрокаРЗ.Идентификатор;
КонецЦикла;
КонецЕсли;
//Заполняем список заданий
Элементы.РегламентноеЗаданиеСписок.СписокВыбора.ЗагрузитьЗначения(МассивРЗ);
КонецПроцедуры
Создаем процедуру для команды «ЗаписатьИзменения»
&НаКлиенте
Процедура ЗаписатьИзменения(Команда)
ЗаписатьИзмененияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаписатьИзмененияНаСервере()
Если не ЗначениеЗаполнено(Параметры.ДополнительнаяОбработкаСсылка) Тогда
Сообщить("Запись работает только в режиме встроенной доп обработки!",СтатусСообщения.Важное);
Возврат;
КонецЕсли;
СтруктураДанных = Новый Структура("СписокРЗ",СписокРЗ.Выгрузить());
ДополнительнаяОбработкаОбъект = Параметры.ДополнительнаяОбработкаСсылка.ПолучитьОбъект();
ДополнительнаяОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СтруктураДанных);
ДополнительнаяОбработкаОбъект.Записать();
КонецПроцедуры
Изменяем процедуру для команды «ВыполнитьРЗ»
&НаКлиенте
Процедура ВыполнитьРЗ(Команда)
ВыполнитьРЗНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьРЗНаСервере()
Если не ЗначениеЗаполнено(РегламентноеЗаданиеСписок) Тогда
Сообщить("Выберите РЗ!!!",СтатусСообщения.Важное);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("КлючРЗ", РегламентноеЗаданиеСписок);
НайденныеСтрокиРЗ = СписокРЗ.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтрокиРЗ.Количество() = 0 Тогда
Сообщить("Не найдено параметров РЗ!!! "+РегламентноеЗаданиеСписок,СтатусСообщения.Важное);
Возврат;
КонецЕсли;
//ПараметрыРЗ формируем на клиенте, вдруг не записали в ТЗ изменения
ПараметрыВыполнения = новый Структура("ПараметрыРЗ");
ПараметрыВыполнения.Вставить("ВидЗапускаРегламент",Ложь);
ИмяКоманды = РегламентноеЗаданиеСписок;
ОбрОбъект = РеквизитФормыВЗначение("Объект");
//Если вдруг умудрились задублировать в ТЗ регламенты
Для Каждого СтрокаРЗ из НайденныеСтрокиРЗ Цикл
ПараметрыВыполнения.ПараметрыРЗ = Новый Структура("ТекстСодержания,Пометка",
СтрокаРЗ.ТекстСодержания,
СтрокаРЗ.Пометка);
ОбрОбъект.ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения);
КонецЦикла;
КонецПроцедуры
Изменяем в модуле обработки процедуру «ВыполнитьКоманду»
// Интерфейс для запуска логики обработки.
Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) Экспорт
//Если в структуре параметров не передан вид запуска считаем что это запуск регламентом
Если не ПараметрыВыполнения.свойство("ВидЗапускаРегламент") Тогда
ПараметрыВыполнения.Вставить("ВидЗапускаРегламент",Истина);
КонецЕсли;
// Диспетчеризация обработчиков команд.
Если ИмяКоманды = "Задача1Регламент"
или ИмяКоманды = "Задача2Регламент" Тогда
Если ПараметрыВыполнения.ВидЗапускаРегламент Тогда
ОбъектСсылка = ПараметрыВыполнения.ДополнительнаяОбработкаСсылка;
Если ЗначениеЗаполнено(ОбъектСсылка) Тогда
//Читаем ХранилищеНастроек
перОбщиеПараметры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектСсылка, "ХранилищеНастроек");
СтруктураОбщиеПараметры = перОбщиеПараметры.Получить();
Если Не ЗначениеЗаполнено(СтруктураОбщиеПараметры) Тогда
//записываем чистую структуру
СтруктураОбщиеПараметры = ПолучитьЧистуюСтруктуруНастроек();
КонецЕсли;
Если СтруктураОбщиеПараметры.Свойство("СписокРЗ") Тогда
Если ТипЗнч(СтруктураОбщиеПараметры.СписокРЗ) = Тип("ТаблицаЗначений") Тогда
//Все проверки прошли
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("КлючРЗ", ИмяКоманды);
НайденныеСтрокиРЗ = СтруктураОбщиеПараметры.СписокРЗ.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтрокиРЗ.Количество() > 0 Тогда
//Если вдруг умудрились задублировать в ТЗ регламенты
Для Каждого СтрокаРЗ из НайденныеСтрокиРЗ Цикл
Если ПараметрыВыполнения.Свойство("ПараметрыРЗ") Тогда
ПараметрыВыполнения.ПараметрыРЗ = Новый Структура("ТекстСодержания,Пометка",
СтрокаРЗ.ТекстСодержания,
СтрокаРЗ.Пометка);
Иначе
ПараметрыВыполнения.Вставить("ПараметрыРЗ",Новый Структура("ТекстСодержания,Пометка",
СтрокаРЗ.ТекстСодержания,
СтрокаРЗ.Пометка));
КонецЕсли;
Команда_ЗаДача1(ПараметрыВыполнения);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Иначе
Команда_ЗаДача1(ПараметрыВыполнения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
и процедуру «СоздатьНовыйЭлементСправочникаЗаметки»
Процедура Команда_ЗаДача1(ПараметрыВыполнения)
СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения);
КонецПроцедуры
Процедура СоздатьНовыйЭлементСправочникаЗаметки(ПараметрыВыполнения)
//Создаем новый элемент справочника
ТекущийОбъект = Справочники.Заметки.СоздатьЭлемент();
ДатаТекСеанса = ТекущаяДатаСеанса();
//Формируем текст для Содержания
ФорматированныйТекст = Новый ФорматированныйДокумент;
//Обрабатываем Параметры
перТекстСодержания = "Заметка создана ";
перПометка = Перечисления.ЦветаЗаметок.Красный;
Если ПараметрыВыполнения.Свойство("ПараметрыРЗ") Тогда
Если ТипЗнч(ПараметрыВыполнения.ПараметрыРЗ) = Тип("Структура") Тогда
Если ПараметрыВыполнения.ПараметрыРЗ.Свойство("ТекстСодержания") Тогда
Если ЗначениеЗаполнено(ПараметрыВыполнения.ПараметрыРЗ.ТекстСодержания) Тогда
перТекстСодержания = ПараметрыВыполнения.ПараметрыРЗ.ТекстСодержания;
КонецЕсли;
КонецЕсли;
Если ПараметрыВыполнения.ПараметрыРЗ.Свойство("Пометка") Тогда
Если ЗначениеЗаполнено(ПараметрыВыполнения.ПараметрыРЗ.Пометка) Тогда
перПометка = ПараметрыВыполнения.ПараметрыРЗ.Пометка;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//Добавили проверку регламент\форма
ФорматированныйТекст.Добавить(перТекстСодержания + ?(ПараметрыВыполнения.ВидЗапускаРегламент,"регламентом","вручную") + " в "+Строка(ДатаТекСеанса), Тип("ТекстФорматированногоДокумента"));
ТекущийОбъект.Содержание = Новый ХранилищеЗначения(ФорматированныйТекст, Новый СжатиеДанных(9));
ТекстHTML = "";
Вложения = Новый Структура;
ФорматированныйТекст.ПолучитьHTML(ТекстHTML, Вложения);
ТекущийОбъект.ТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ТекстHTML);
ТекущийОбъект.ДатаИзменения = ДатаТекСеанса;
ТекущийОбъект.Автор = ПараметрыСеанса.ТекущийПользователь;
ТекущийОбъект.Пометка = перПометка;
ТекущийОбъект.ДляРабочегоСтола = Истина;
ТекущийОбъект.Записать();
КонецПроцедуры
Записываем и заменяем предыдущую дополнительную обработку на эту.
Заполняем настройки.
Проверяем ручной запуск и регламеты
Проверяем результат:
В коде можно было бы проверки вынести в одну процедуру\функцию. Как вы видите просто безграничные возможности предоставлены программистам по разработке сложных регламентов без доработки конфигурации.
Отладку регламентов можно проводить по описанию из этой статьи Отладка подключаемых обработок
Корректную отладку запуска из формы можно производить после того как в Параметры.ДополнительнаяОбработкаСсылка будет закинута ссылка на добавленную дополнительную обработкую. В нашем случае, достаточно просто в процедуру формы "ПриСозданииНаСервере" добавить одну строчку.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//Для тестирования ХранилищеНастроек
Параметры.ДополнительнаяОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","БСП_ДО_Регламенты");
ЗаполнитьЗаписаннымиДанными();
КонецПроцедуры
П.С. Пока писал данную статью в голову пришла еще одна по данной тематике. БСП: Дополнительная обработка (Регламенты) + Расширения, примеры от сложного к универсальному
UPD 27.07.2019. Добавил файлы (Одна обработка несколько форм Файлы.rar) к статье БСП: Дополнительные отчеты и обработки - одна обработка несколько форм
Данная статья ответ на вопрос: Можно ли сделать так, чтобы у обработки было регл задание и две формы - работающие по-разному?
Специальные предложения
См. также
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Описание формата внутреннего представления данных 1С в контексте обмена данными 154
1 стартмани
06.09.2019 6994 6 Dementor 27
Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!
29700 руб.
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо
Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.
7500 рублей
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX 172
1 стартмани
29.01.2019 16097 66 Synoecium 37
Новогодние скидки на авторское ПО Промо
В преддверии праздника в Маркетплейсе на Инфостарт действует скидка на все платные авторские программы. Размер скидок начинается от 10%. Советуем не откладывать покупки, многие наши партнеры повышают цены на свои продукты именно в начале нового года.
Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо
Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.
4500/9500 рублей
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 65
5 стартмани
09.08.2018 17513 23 informa1555 26
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105
1 стартмани
01.06.2018 21082 86 m-rv 57
Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо
Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.
9000 рублей
Полезные примеры составления схемы компоновки данных #2 183
1 стартмани
22.05.2018 20986 10 SITR-utyos 13
БСП: Дополнительная обработка (Регламенты) + Расширения, примеры от сложного к универсальному 72
2 стартмани
21.05.2018 13436 12 dsdred 17
1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо
Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.
6500 рублей
Как выполнить отчет на СКД через COM и получить данные отчета? 86
2 стартмани
08.05.2018 19208 10 wowik 3
Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо
Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.
29700 руб.