Имя: Пароль:
1C
 
Как создать на основании не новый документ?
0 toypaul
 
гуру
05.06.17
14:39
При вводе на основании нужен такой алгоритм: ищем помеченный на удаление в этом году, если есть снимаем пометку и заполняем, если нет, работает типовой механизм. Ну есс-но дальше открывается форма документа.

Как лучше всего подменить типовой механизм?
1 Heckfy
 
05.06.17
14:43
Стандартно:
СтандартнаяОбработка=Ложь;

:)
2 torgm
 
05.06.17
14:43
(0) А если на него ссылок  дофея?
3 Адинэснег
 
05.06.17
14:44
это как?
4 toypaul
 
гуру
05.06.17
14:45
(2) на него не должно быть дофея ссылок. это последний в цепочке документ, на основании которого ничего не создается.
5 Адинэснег
 
05.06.17
14:45
ааа...
6 toypaul
 
гуру
05.06.17
14:47
(1) если при создании в форме, то это понятный, но не очень "красивый" вариант. будет двойное заполнение на основании
7 Buster007
 
05.06.17
14:48
Сделать свой ввод на основании с блэкджеком и далее
8 Адинэснег
 
05.06.17
14:48
скопировать обработку заполнения (в ней бывает проверка ЭтоНовый() - как раз для ввода на основании)
Стандартная = ложь;
Найти Док
Если Найден ПолучитьОбъект Иначе СоздатьДОкумент
Вызвать обработку заполнения
9 Heckfy
 
05.06.17
14:49
(6) Сфигали двойное?
10 toypaul
 
гуру
05.06.17
14:50
(9) ну а где надо ставить СтандартнаяОбработка=Ложь;
11 Адинэснег
 
05.06.17
14:51
чтоб "двойного" не было передай свойство объекта типа ЭтоХитроВывернутоеЗаполнение
в обработке заполнения помимо проверки ЭтоНовый() проверяй свойство ЭтоХитроВывернутоеЗаполнение
12 cw014
 
05.06.17
14:52
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ОбработкаЗаполнения (Filling)
Синтаксис:

ОбработкаЗаполнения(<ДанныеЗаполнения>, <ТекстЗаполнения>, <СтандартнаяОбработка>)


СП тебе в помощь
13 Heckfy
 
05.06.17
14:54
(10) Ну тут думать надо.... :)
14 Адинэснег
 
05.06.17
14:54
+(12) И
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ДополнительныеСвойства (AdditionalProperties)
Использование:

Только чтение.
Описание:

Тип: Структура.
Может использоваться в тех случаях, когда необходимо хранить некоторые значения, связанные с объектом, на время выполнения некоторых операций, без изменения объекта. Например, при обработке событий в подписке на события.
15 Ёпрст
 
05.06.17
14:54
(0) Уф ? ОФ ?
16 toypaul
 
гуру
05.06.17
14:54
(12) я могу в обработке заполнения поменять Ссылку на нужную мне?

если нет, чем оно поможет.
17 toypaul
 
гуру
05.06.17
14:55
(15) УФ
18 Джинн
 
05.06.17
14:55
(0) Явно кривизна в архитектуре.
19 toypaul
 
гуру
05.06.17
14:56
(18) я прямо очень нуждался в диагнозах. прям жить без них не мог.
20 Heckfy
 
05.06.17
14:56
(18) Не стреляйте в пианиста (ой, архитектора). Он играет (строит), как может. :)
21 RomanYS
 
05.06.17
14:57
(0) идея вообще нездоровая.
А так бери ссылку найденного документа, его удаляй и
УстановитьСсылкНового(...)
22 Heckfy
 
05.06.17
14:58
(21) Так то предложенный вариант тоже не фонтан.
23 Адинэснег
 
05.06.17
14:59
(21) <ОбъектНеНайден>
24 RomanYS
 
05.06.17
14:59
(22) да смысл телодвижений вообще непонятен.
25 RomanYS
 
05.06.17
15:00
(23) это-то к чему здесь?
26 Адинэснег
 
05.06.17
15:00
(25) к сылочной целостности
27 Адинэснег
 
05.06.17
15:01
или сделай как в РТиУ, ссылку на СФ и навешай алгоритм
28 Ёпрст
 
05.06.17
15:05
(17) я не заморачивался, делал через допреквизит, в котором ссылка на документ:
в форме дока:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если ЗначениеЗаполнено(Объект.мУжеЕстьДокумент) Тогда
    Отказ = Истина;
    ОткрытьЗначение(Объект.мУжеЕстьДокумент);
    КонецЕСли;
КонецПроцедуры

в модуле дока:

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    
    Попытка м = ДанныеЗаполнения.Метаданные(); Исключение Возврат; КонецПопытки;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    Ссылка
    |ИЗ
    |    Документ.....
    |ГДЕ
    |    ДокументОснование = &ДокументОснование";
    
    Запрос.УстановитьПараметр("ДокументОснование", ДанныеЗаполнения);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        мУжеЕстьДокумент =  Выборка.Ссылка;
        СтандартнаяОбработка = Ложь;
        Возврат;
    КонецЕсли;
29 Джинн
 
05.06.17
15:06
(19) Не стоит благодарности.
30 toypaul
 
гуру
05.06.17
15:10
(21) мне от помеченного документа нужен только номер. наверное так и попробую. возьму номер, удалю.
31 RomanYS
 
05.06.17
15:12
(30) А в (0) это нельзя было написать?
32 программистище
 
05.06.17
15:14
(30) только хотел предложить, но сам уже решил
33 Адинэснег
 
05.06.17
15:20
Док 1 - основание
Док 2 - вводимый на основании

Док 2 Модуль объекта

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    
    Если ЭтоНовый() Тогда
        Основание = ДанныеЗаполнения;
        ДокУжеЕсть = ДокУжеЕсть(ДанныеЗаполнения);
        Если ДокУжеЕсть <> Неопределено Тогда
            ЭтотОбъект.ДополнительныеСвойства.Вставить("ДокУжеЕсть", ДокУжеЕсть);
        КонецЕсли;
    КонецЕсли;    
    
КонецПроцедуры
    
Функция ДокУжеЕсть(Основание)    
    
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    Док2.Ссылка КАК Ссылка
                          |ИЗ
                          |    Документ.Док2 КАК Док2
                          |ГДЕ
                          |    Док2.Основание = &Основание");
    Запрос.УстановитьПараметр("Основание", Основание);
    
    Результат = Запрос.Выполнить();
    
    Если Не Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Ссылка;
    КонецЕсли;    
    
КонецФункции

Док 2 Модуль формы документа
Процедура ПриОткрытии()
    
    Если ДополнительныеСвойства.Свойство("ДокУжеЕсть") Тогда
        ЭтаФорма.Закрыть();
        Об = ДополнительныеСвойства.ДокУжеЕсть.ПолучитьОбъект();
        Об.Заполнить(Об.Основание);
        Фрм= Об.ПОлучитьФОрму("ФормаДокумента");
        Фрм.Открыть();
    КонецЕсли;
    
КонецПроцедуры
34 Адинэснег
 
05.06.17
15:25
(28) и реквизит не нужен -> (33)
35 toypaul
 
гуру
05.06.17
15:29
хотя ... если удалять старый, то новый могут не записать. и привет. номер потерялся.
36 Heckfy
 
05.06.17
15:29
(26) Так то, если перед удалением срисовать старый ГУИД, а при записи нового документа этот ГУИД подсовывать. В транзакцию засунуть надо бы, на случай сбоя, что бы битые ссылки не получить. То.... Но, тоже ничего хорошего. :):):)
(30) -> (23). Тогда уж перед удалением сделай НайтиПоСсылкам и если что то найдено, то отказ. Тормозить правда будет. :) :) :)
37 Heckfy
 
05.06.17
15:30
(35) Блин, да что же за глубинный смысл то у задачи??
38 toypaul
 
гуру
05.06.17
15:31
глубинный смысл в том чтобы использовать номера помеченных на удаление документов
39 Buster007
 
05.06.17
15:32
(0) я вот не пойму, тебе вера не позволяет что ли сделать свою кнопку ввода на основании?
40 Heckfy
 
05.06.17
15:33
(38) Ёмнить :). А может проще помеченные на удаление чистить регл. заданием, а в свойствах конфы указать автоматическое освобождение номеров?
41 toypaul
 
гуру
05.06.17
15:34
(40) "свойствах конфы указать автоматическое освобождение номеров" это еще чо такое?
42 Ёпрст
 
05.06.17
15:35
(33) ДополнительныеСвойства    {(1,1)}: Переменная не определена (ДополнительныеСвойства)
43 Ёпрст
 
05.06.17
15:35
это в ПриОткрытии.
44 Ёпрст
 
05.06.17
15:36
я ужо не помню, почему слепил через реквизит ( в коде тоже есть куски в модуле с ДополнительныеСвойства, видать не взлетело, а сделать надо было "вчера")
45 Heckfy
 
05.06.17
15:37
(41) ПКМ по конфе - свойства. Пятая снизу: Режим автонумерации объектов: Установить в "Освобождать автоматически"
46 toypaul
 
гуру
05.06.17
15:37
(45) совсем не то это
47 Serg_1960
 
05.06.17
15:39
На 38-ом посту стало наконец-то понятно что автору нужно. А нужно ему просто найти пропуск в последовательности нумерации :))
48 Адинэснег
 
05.06.17
15:53
(42) УФ да, хз как
49 Адинэснег
 
05.06.17
15:55
+(48) на форме структура уже пустая ...
РеквизитФормыВЗначение("Объект").ДополнительныеСвойства
50 Адинэснег
 
05.06.17
15:59
+(50) тогда тупо в форме дока при открытии проверять объект на Пустая() + Реквизит "основание", искать док, если есть закрывать текущую форму, открывать существующего дока
51 Ёпрст
 
05.06.17
16:21
(48) Вот и грю - слепил реквизит и забил/забыл :)
Ошибка? Это не ошибка, это системная функция.