Имя: Пароль:
1C
 
Программно нажать "Провести" в форме нового документа
0 ice777
 
04.02.09
13:00
Как это сделать? Сразу после создания нового Дока из ФормыСписка надо сделать пустой Док проведенным. Через интерфейс пользователя это - нажать "Провести". А программно?
1 Sammo
 
04.02.09
13:04
.Записать(РежимЗаписиДокумента.Проведение) Оно?
2 ice777
 
04.02.09
13:41
Никакие методы, применимые к существующему Доку, - не работают. Дока как бы нет, ссылки на него тоже не нашел, есть только ФормаДокумента. Все методы типа "Записать" работают только после нажатия на форме "Провести" или "Провести и закрыть".

Справедливости ради, платформа 8.2.
Но это по-моему от платформы не зависит.
3 hhhh
 
04.02.09
13:42
(2) Док.Проведен = Истина;
4 H A D G E H O G s
 
04.02.09
13:43
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
5 ice777
 
04.02.09
14:07
(3) ошибка :

Документ.Т.Форма.ФормаДокумента(57)}: Ошибка при установке значения атрибута контекста (Проведен): Нельзя изменять скрытое поле
                   Объект.Проведен =истина;


(4)- {Документ.Т.Форма.ФормаДокумента(82)}: Метод объекта не обнаружен (Записать)
                   Объект.Ссылка.Записать();


НО ЭТО ВСЕ ФИГНЯ! :)
Объект - типа ДанныФормыСтруктура
Объект.Ссылка - типа ДокументСсылкаТ

И ессли к ним с этими Проведен=истина и Записать() вообще не обращаться -
то ПИШЕТ ВСЕ НА УРА.
6 Sammo
 
04.02.09
14:11
Если в конфигураторе открыть закладку формы Реквизиты, там есть такое ДокументОбъект.
Так вот - записать, это действие объекта, а не ссылки
7 Sammo
 
04.02.09
14:12
Соврал, из формы списка?
Можно подробнее и по шагам
8 ice777
 
04.02.09
14:18
можно и по шагам, тока долго.

а вот вставил по приколу:

                   сс=Объект.Ссылка;
                   д=сс.ПолучитьОбъект();
                   д.Записать();
выругалось:
{Документ.Т.Форма.ФормаДокумента(83)}: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран!        д=сс.ПолучитьОбъект();
9 hhhh
 
04.02.09
14:19
(8) читать умеешь? Надо не Ссылка.Записать(), а

Объект.Записать() !!!!
10 ice777
 
04.02.09
14:20
в общем, вышло (не претендую на суперправильность решения), что надо просто тупо заполнять объект, потом сделать ЭтаФорма.Прочитать() и наслаждаться результатом.
11 ice777
 
04.02.09
14:21
(9) а ты посмотри выше, какого типа видится в отладчике Объект!
ну, ради прикола, попробую и по-твоему
12 ice777
 
04.02.09
14:23
(9) вот ошибка на твое:

{Документ.Т.Форма.ФормаДокумента(84)}: Метод объекта не обнаружен (Записать)
                   Объект.Записать();
13 kosts
 
04.02.09
14:30
Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
   
   Отказ = Истина;
   док = Документы.ЗаявкаНаЗакупку.СоздатьДокумент();
   док.Дата = ТекущаяДата();
   Док.Записать(РежимЗаписиДокумента.Проведение);
   Форма = Док.ПолучитьФорму();
   Форма.Открыть();
   
КонецПроцедуры
14 hhhh
 
04.02.09
15:21
(12) а что такое у тебя Объект? Сам что ли завел переменную? Пользуйся типовым ДокументОбъект.
15 ice777
 
04.02.09
15:44
Это 1C 8.2.  Уже есть внутри формы. Объект - типа ДанныФормыСтруктура
16 hhhh
 
04.02.09
16:25
(15) намекаешь что левая переменная "объект", которую неизвестно кто завел и которая имеет тип структура сооответствует нормальному объекту документа? Ты мечтатель. Объект документа надо смотреть в свойствах формы: Поле Данные.
17 ice777
 
04.02.09
16:28
(16) я просто написал как есть.
А Объект в 8.2 просто предопределен, имхо.
Кто его мог завести??
18 ice777
 
04.02.09
17:03
Все, что я тут огласил, касается только нового документа (чтоб камнями не кидали).

А вот главный вопрос так и остался: КАК программно нажать "Провести" в форме нового документа ?  Вне формы, еще в списке - это все понятно. А исходный вопрос стоял так: В форме.

Может есть еще идеи?
19 H A D G E H O G s
 
04.02.09
17:15
В форме документа в
ПРЕДОПРЕДЕЛЕННОЙ процедуре - обработчике события ПередОткрытием() написать кот:

Если ЭтоНОвый() Тогда
ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;

действуй
20 H A D G E H O G s
 
04.02.09
17:20
Даже лучше в ПРИОТКРЫТИИ(),
а то формочка еще не сформировалась,
дата еще не задалась...
21 73
 
04.02.09
19:46
ЭтаФорма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
22 ice777
 
04.02.09
20:20
(19) и (20) я в ФормеДокумента прошу. Остальное тоже м б сгодится, но вопрос стоит именно так.
23 ice777
 
04.02.09
20:28
(21) Доберусь до нормального компа, попробую. Но надежды все меньше. Проще самому расклевывать становится.
24 ice777
 
04.02.09
22:00
(20) кстати, а когда формочка уже открылась, - в ней дата уже задалась и .. не везет мне на ответы.
25 kosts
 
05.02.09
08:54
(22) в (19) (20) Чем тебе не в форме?

Процедура ПриОткрытии()
   
   Если ЭтоНовый() Тогда
       Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;

КонецПроцедуры

Где проблема то?
26 ice777
 
05.02.09
09:32
1. ладно, проткрытиии и ли как.. неважно.
2. А проверь реально свой код в 8.2.  Не работает.

А чтоб конкретно, к какому объекту у тебя применен ЭтоНовый()?
27 ice777
 
05.02.09
09:34
(21) выдало ошибку:
{Документ.Т.Форма.ФормаДокумента(10)}: Метод объекта не обнаружен (ЗаписатьВФорме)
   ЭтаФорма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
28 hhhh
 
05.02.09
09:43
(27) все-таки посмотри, что там находится в поле "данные"...
29 ФарПост
 
05.02.09
09:52
А смысл проводить ПУСТОЙ док?
Подскажите плиз....
30 kosts
 
05.02.09
10:40
(26)
ЭтоНовый() применен к ДокументОбъект

Процедура ПриОткрытии() //То же что и в (25)
   
   Если ЭтотОбъект.ЭтоНовый() Тогда
       ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;

КонецПроцедуры

8.2 нету, проверить не могу. Проверь может все же работает.
31 ice777
 
05.02.09
20:26
(29)для заполнения кнопкой только что созданного Дока.
Бухгалтерша заволит новый Док и желает сразу его заполнить нажатием кнопочки;)
Примеры: табель, оформление хез чего, разные ведомости и т.п.
А потом она устраивает свою толстую задницу поудобнее и тока правит.
Надо же и людей любить, правда?