Имя: Пароль:
 
1C
1С v8
1С внешняя обработка [решено]
0 andrey i1c
 
27.07.20
14:24
Есть обработка которые выполняет некие действия по обмену между 1С и Сервером. Для реализации автоматического обмена и подключения в 1С реализованы прописаны сервисные функции, ниже код, однако при открытии обработки вручную она начинает автоматически выполнять Команду по выгрузке, прописанные ниже в процедуре ВыполнитьКоманду. Как сделать так, что бы не нарушая функции по автоматической выгрузке, используются команды, при открытии обработки вручную открывать форму этой обработки, которая сейчас не открывается (там хотелось бы добавить кнопку по выгрузки вручную). Сейчас же при открытии обработки сразу происходит выполнении команды. Пока что на ум приходит следующее, что сделать 2 обработки: 1 для выгрузки автоматически, а 2-я с формой вручную. Но хотелось бы все реализовать в одной.


Функция СведенияОВнешнейОбработке() Экспорт
    
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
  ПараметрыРегистрации.Вставить("Наименование", "Выгрузка и загрузка 1С_Server"); //Наименование обработки, которым будет заполнено наименование элемента справочника
  ПараметрыРегистрации.Вставить("Версия", "1.0");
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
  ПараметрыРегистрации.Вставить("Информация", "Обработка выгружает и загружает данные из 1С на Сервер и обратно"); //Краткая информация по обработке, описание обработки
  ПараметрыРегистрации.Вставить("ВерсияБСП", "1.2.1.4");
  ТаблицаКоманд = ПолучитьТаблицуКоманд();
  ДобавитьКоманду(ТаблицаКоманд,
          "Выгрузка и загрузка 1С_Server", //представление команды в пользовательском интерфейсе
          "ВыгрузкаИЗагрузка1С_Server", //идентификатор команды; любая строка, уникальная в пределах данной обработки
          "ВызовСерверногоМетода");
  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
  Возврат ПараметрыРегистрации;
  
КонецФункции

Функция ПолучитьТаблицуКоманд()
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
КонецФункции  

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
  // Реализация логики команды
  Если ИдентификаторКоманды = "ВыгрузкаИЗагрузка1С_Server" Тогда
      
      //ЗаполнитьПоставщиковСервер("", "");      
      //ВыгрузитьПоставщиковСервер();
      
  КонецЕсли;
  
КонецПроцедуры
1 Momus
 
27.07.20
14:34
Добавить в таблицу команд еще одну команду с "ОткрытиеФормы". Ну и на форму кнопку вывести
2 Momus
 
27.07.20
14:41
"Сейчас же при открытии обработки сразу происходит выполнении команды" - чего там открывается, если команда "ВызовСерверногоМетода"? У вас форма открывается, что-то там выполняется? Тогда нужно форму глядеть
3 andrey i1c
 
27.07.20
14:43
(2) на форме отображена визуальная часть выгрузки как раз, это табличные части (реквизиты объекта обработки)
4 andrey i1c
 
27.07.20
14:44
(1) то есть при открытии будет срабатывать ОткрытиеФормы а при регламентоном выполнении как и прежде Выполнении команды
5 Momus
 
27.07.20
14:58
(4) если у вас при открытии формы сейчас там начинается какая-то выгрузка, то нужно смотреть модуль формы. Как вообще открываете форму, если стоит "ВызовСерверногоМетода"? В дополнительных обработках должна быть нарисована команда "Выполнить" (или как там ее), при нажатии которой форма никакая не открывается. Зачем серверу форма? Нужно добавить две команды: одна "ВызовСерверногоМетода", чтоб по расписанию работала выгрузка (запуск ВыполнитьКоманду в модуле объекта), другая "ОткрытиеФормы", чтоб можно было открыть форму и вручную запускать/смотреть (нарисовать кнопку и запустить команду из модуля объекта)
6 andrey i1c
 
27.07.20
17:15
(5) Спасибо большое, получилось!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший