Имя: Пароль:
1C
1С v8
ПриУстановкеНовогоНомера УФ Вопрос
, , ,
0 Viper2002
 
08.06.15
18:24
Дамы и Господа.
Имеется вопрос.

Совсем недавно перешли на ЗУП 3.0. Сам переход был вполне удачен, но в старом ЗУП была одна доработка. При установке нового номера документа вызывался вопрос с предложением использовать/не использовать префикс. Доработка была реализована в виде подписки на событие с последующим вызовом метода в котором был вопрос.
Как я понимаю в рамках подписки на событие для текущей ситуации это не удастся воплотить в жизнь, ибо "сервер у нас тут, а вопрос у нас там". Собственно вот тут и вопрос. Куда присобачить клиентский метод с вопросом? Очень не хочется закидывать в типовой документ.
1 D_E_S_131
 
08.06.15
18:57
Как вариант, создать доп.реквизит документа "ИспользоватьПрефикс". Пусть его устанавливают, а в подписке уже проверять наличие.
2 Viper2002
 
08.06.15
19:07
(1) Хм. Неплохой вариант. Сейчас попробую. О результате отпишусь. Спасибо.
3 Viper2002
 
08.06.15
19:47
(1) Не подходит. В ЗУП`е 3.0 доп. реквизиты/сведения только для справочников и для 2-х документов. Как я понял доп. реквизиты можно использовать только если у объекта есть табличная часть "ДополнительныеРеквизиты". Ещё варианты есть?
4 Сисой
 
08.06.15
19:53
(3) А свойства/характеристики там есть?
5 MrStomak
 
08.06.15
20:03
(3) Ну добавь в конфигураторе реквизит. Он же при обновлении не будет вылезать.
6 Viper2002
 
08.06.15
20:06
(4) Нет
7 Viper2002
 
08.06.15
20:07
(5) Обновлять буду не я. Повторюсь, не хотелось бы менять структуру типового документа.
8 hhhh
 
08.06.15
21:27
а вы через не хочу.
9 Viper2002
 
08.06.15
21:40
(8) Помимо всего вышесказанного у вас есть вариант?
10 Fish
 
08.06.15
21:42
(9) Не задавать вопрос вообще.
11 Viper2002
 
08.06.15
21:48
(10) А на каком основании тогда пользователям менять префикс? Организация одна. Пользователи, которые будут это использовать весьма недалёки.
12 1sanekmaloi1
 
08.06.15
22:29
Зачем использовать префикс когда организация одна?
13 Viper2002
 
08.06.15
23:57
(12) Специфика такая. Нужно разделить перемещения в пределах одной организации.
14 ЧеловекДуши
 
09.06.15
06:41
(0) Как вариант, не заниматься фигней, добавить выбор префикса на саму форму, либо организовать выбор или еще как.
Как вариант, вообще отказаться от этой вакханалии :)
15 ЧеловекДуши
 
09.06.15
06:42
(13) И чем вы оформляете Перемещения?
Оглаие нам весю цепочку документов? :)
16 Viper2002
 
09.06.15
12:39
(14) "добавить выбор префикса на саму форму, либо организовать выбор"
Если под "добавить выбор префикса на саму форму" подразумевается правка модуля формы, то это не подходит.
Что имеется ввиду под "организовать выбор"? Очень расплывчатое понятие. Собственно суть моего вопроса и заключается в организации выбора префикса пользователем.
Отказаться от вакханалии не получится. )))
(15) К сути задачи это не относится. Если из праздного любопытства, то извините, оглашать незачем. Можно абстрактно представить. Есть документ, для него нужно организовать выбор префикса на основании решения пользователя. Править типовой конфиг нельзя.
17 D_E_S_131
 
09.06.15
13:41
Если речь идет про документ "перемещение между подразделениями", то может как-то "завязаться" на элементах справочника "Подразделения"? К этому справочнику нормально применяется механизм доп.реквизитов.
18 Goggy
 
09.06.15
13:49
Что за тупизм. Вместо вопроса вызови форму общую и там спроси.
19 Viper2002
 
09.06.15
14:53
(17) Подразделение не подойдёт. Выбор префикса будет не на основании подразделения.
20 Viper2002
 
09.06.15
14:54
(18) Откуда её можно вызвать не меняя документ?
21 D_E_S_131
 
09.06.15
15:30
(19) А на основании чего? там реквизитов-то по пальцам пересчитать можно...
22 hhhh
 
09.06.15
15:38
(19) сделайте внешнюю печатную форму присвоение номера.
23 Viper2002
 
09.06.15
15:39
(21) На основании решения пользователя. Если бы была логика основанная на значении реквизита я бы и не спрашивал. А сейчас получается так: подпиской не оформить ибо сервер, где найти клиента, вот вопрос.
24 Viper2002
 
09.06.15
15:42
(22) Т.е. создаётся Внешняя печатная форма, которая включается в состав ПФ данного документа. Далее пользователь при нажатии на кнопку "Печать-[наименование ВПФ]" вызывает данную форму на которой уже есть обработчик изменения префикса?
25 VikingKosmo
 
09.06.15
15:43
(22) а ВПФ разве не целиком на сервере вызываются?
26 Viper2002
 
14.06.15
14:24
Г-да. Кривенько, но сделал. Реализовал некое подобие из рекомендованного в (22). Так же использовал
http://catalog.mista.ru/public/84001/
http://catalog.mista.ru/public/84119/
в качестве примеров.
27 Viper2002
 
14.06.15
14:24
Почему-то не получается вывесить код. Мало ли кому понадобится.
28 Viper2002
 
14.06.15
14:26
Приблизительный вариант.
Сделана внешняя обработка. В Модуле объекта прописано следующее:

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

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

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

Создана пустая форма и в ней следующий код:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
    Для Каждого ОбъектНазначения Из ОбъектыНазначенияМассив Цикл
        КлючПоиска = Новый Структура("Ключ", ОбъектНазначения);
        Форма = ОткрытьФорму("Документ.ПеремещениеВДругоеПодразделение.Форма.ФормаДокумента",КлючПоиска,,,Окно);
        ДокументОбъект = Форма.Объект;
        
        СтруктураОбъектов = Новый Структура("ДокОбъект, ФормаОбъект", ДокументОбъект, Форма.Объект);
        
        Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",
        ЭтотОбъект, СтруктураОбъектов);    
                
        ПоказатьВопрос(Оповещение,
        "Изменить префикс?",
        РежимДиалогаВопрос.ДаНет,
        0, // таймаут в секундах
        КодВозвратаДиалога.Да, // (необ.) кнопка по умолчанию
        "Изменение префикса" // (необ.) заголовок
        );    
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт        
    Если Результат = КодВозвратаДиалога.Да Тогда
        Сообщить("Вызов процедуры изменения префикса!");
        УстановитьПрефикс("ППС", Параметры.ДокОбъект);
        КопироватьДанныеФормы(Параметры.ДокОбъект, Параметры.ФормаОбъект);        
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура УстановитьПрефикс(Префикс, ОбъектСсылка)
    ОбъектСсылка.Номер = "ППС" + Прав(ОбъектСсылка.Номер, СтрДлина(ОбъектСсылка.Номер)-3);
КонецПроцедуры

Процедура установки префикса показана тестовая. Сейчас уже допилил так как нужно.
29 Viper2002
 
14.06.15
14:28
Ругался фильтр. Якобы у меня процедура "Получить таблицу команд" написана на не очень лицеприятном для форума языке. Заранее извиняюсь, если наименование этой процедуры кого-то оскорбило.)