Имя: Пароль:
1C
1С v8
Как сделать правильно?
,
0 Jokerman
 
05.09.12
11:59
Здраствуйте переделываю некоторые объекты для тонкого клиента. Загвоздка пошла в том, что нумерация документов идет в разрезе префиксов. Сделал через процедуру в самой форме, где вызываю РеквизитФормыВЗначение ... УстановитьНовыйНомер. Теперь хотелось бы это дело загнать в общий модуль, как это сделать - ума не приложу, если передаю параметром "ЭтаФорма" - ошибка "отсутствует отображение ...". Подскажите как лучше!
1 pumbaEO
 
05.09.12
11:59
БСП трудно посмотреть?
2 Jokerman
 
05.09.12
12:00
(1) Нету к сожалению
3 MrStomak
 
05.09.12
12:01
Общий модуль с галкой "клиент (управляемое приложение)"
4 pumbaEO
 
05.09.12
12:03
(2) ИТС нет?
5 Jokerman
 
05.09.12
12:07
(3) УстановитьНовыйНомер не доступен на клиенте
(4) есть ссылка?
6 Jokerman
 
05.09.12
12:14
(4) Нет никакой типовой конфигурации реализованной в тонком клиенте,  точнее где с префиксами!
7 MrStomak
 
05.09.12
12:39
(5) УстановитьНовыйНомер можно делать в серверной процедуре, которая будет вызываться из общего модуля "клиент (управляемое приложение)"
8 MrStomak
 
05.09.12
12:41
А вообще - зачем это реквизитформывзначение в общем модуле? Почему не передавать уже его? Не понимаю что-то
9 Jokerman
 
05.09.12
12:52
(8) для минимизации кода
10 MrStomak
 
05.09.12
12:57
а добиться то чего надо? Подписка на событие "ПриУстановкеНомера" не подходит?
11 Jokerman
 
05.09.12
13:01
(10) Подходит, дело не в этом! Как в контексте УФ установить новый номер документа с определенным префиксом. Нужно же инициировать установки нового номера, т.к. предполагается, что документ может быть записан с одним префиксом, но впоследствии он может поменяться, к примеру если перебивается некий ключевой реквизит!
12 Alex_MA
 
05.09.12
13:06
ПриУстановкеНовогоНомера(Префикс) - модуль объекта
13 Jokerman
 
05.09.12
13:06
Делал вторым вариантом: передаю параметром ссылку (объект.ссылка)
А в общей процедуре делаю Объект = Ссылка.ПолучитьОбъект(), но в этом реквизите сидит неактуальное значение реквизитов, т.к. данные тянутся с БД, а не формы. Если Передаю сам "Объект", то пишет нельзя изменять реквизит содержащий данные формы, хотя кроме как ДокументОбъект = Объект.Ссылка.ПолучитьОбъект() ничего не делаю!
14 Jokerman
 
05.09.12
13:07
(12) Есть уже надо пересоздать номер уже существующего дока, пример был ЦУ0000234, стал БУ0000001.
15 Alex_MA
 
05.09.12
13:11
(14) На форме разместить поле с даными Объект.Номер - разрешить менять. Записываешь документ ->
Перед записью модуля объекта или подписка - вызов общего модуля, где анализируешь что то...
Может так ?
16 Jokerman
 
05.09.12
13:14
(15) Вариант, но так будут происходить лишние вызовы, а я стараюсь наоборот сократить их!
17 Jokerman
 
05.09.12
13:17
Объясните почему в таком коде:

Процедура УстановитьНовыйНомерДокумента(Объект) Экспорт
   
   ДокументОбъект = Объект.Ссылка.ПолучитьОбъект();
   МетаданныеДокумента = ДокументОбъект.Метаданные();
   Префикс = "";
   Если ЕстьРеквизитДокумента("ЦентрУчета", МетаданныеДокумента) Тогда
       Префикс = Ссы.ЦентрУчета.ПрефиксНумерации;
   ИначеЕсли ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда
       Префикс = Объект.Организация.Префикс;
   Иначе Префикс = "00";
   КонецЕсли;
   ДокументОбъект.УстановитьНовыйНомер(Префикс);
...

Происходит ошибка "Нельзя изменять поле, содержащее объект данных формы"?
18 Jokerman
 
05.09.12
13:18
Точнее так:


Процедура УстановитьНовыйНомерДокумента(Объект) Экспорт
   
   ДокументОбъект = Объект.Ссылка.ПолучитьОбъект();
   МетаданныеДокумента = ДокументОбъект.Метаданные();
   Префикс = "";
   Если ЕстьРеквизитДокумента("ЦентрУчета", МетаданныеДокумента) Тогда
       Префикс = Объект.ЦентрУчета.ПрефиксНумерации;
   ИначеЕсли ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда
       Префикс = Объект.Организация.Префикс;
   Иначе Префикс = "00";
   КонецЕсли;
   ДокументОбъект.УстановитьНовыйНомер(Префикс);
...
19 Jokerman
 
05.09.12
13:50
Решение как всего простое: достаточно очистить номер, а в ПриУстановкеНовогоНомера указать префикс, хех ...
2 + 2 = 3.9999999999999999999999999999999...