Имя: Пароль:
1C
1С v8
Открыть форму модально, записать документ и закрыть его.
0 Arikite
 
27.04.12
17:51
Платформа 8.2

Сразу оговорюсь в программировании не силен - прошу сильно не пинать.
гуглил ответственно.

Есть обработка в которой нужно установить произвольный алгоритм.
Нужно открыть документ модально, записать его и  закрыть его.

Почтеннейшие пожалуйста подскажите алгоритм.
1 le_
 
27.04.12
17:52
Форму обязательно открывать?..
2 Arikite
 
27.04.12
17:52
да
3 salvator
 
27.04.12
17:52
(0) А в чем суть этого действия, можно узнать?
4 Нуф-Нуф
 
27.04.12
17:57
хочет открыть документ чтобы сработали обработчики заполнения, записать и закрыть? :)
5 le_
 
27.04.12
17:59
Фрм = ДокОбъект.ПолучитьФорму();
Фрм.Открыть();
Фрм.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
Фрм.Закрыть();
6 Arikite
 
27.04.12
18:04
предыстория длинна: были выгружены документы из седьмой торговли.
По понятным соображениям при обмене в созданных документах (например банковская выписка)) не устанавливаются счета взаиморасчетов с контрагентом.
Найдена обработка (универсальный подбор и обработка объектов) посредством которой в документы поступления на расч. счет установлен реквизит (счет расчетов 62.1 и 62.2)
После установки счетов документ перестал проводится групповой обработкой справочников и документов - с текстом ошибки:

{Форма.ПровестиДокументы.Форма(26)}: Ошибка при вызове метода контекста (Записать)
       Объект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.УправлениеДенежнымиСредствами.Модуль(238)}: Ошибка при вызове метода контекста (Выполнить)
       Объект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0
по причине:
Ошибка SQL: Деление на 0
по причине:
Деление на 0 значения типа Numeric

Опытным путем определено, что при открытии документа и его закрытии (при этом изменения не сохраняются) документ проводится.

Обработка Универсальный подбор и обработка объектов позволяет произвести действияв произвольном алгоритме.

Попробовал перезаписать документ по алгоритму
Объект.Записать(РежимЗаписиДокумента.Запись)
Документ перезаписывается но так же не проводится.
7 Arikite
 
27.04.12
18:06
(5) Спасибо.
Удалось по алгоритму
Фрм = Объект.ПолучитьФорму();
Фрм.Открыть();
Фрм.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
Фрм.Закрыть();
8 Arikite
 
28.04.12
14:06
В дополнение:
после выгрузки документа (исходный документ - банковская выписка) в документе сформированы реквизиты "Контрагент" и "ДоговорКонтрагента"
проставлены счета учета.
Провожу документ, документ проводится, но при этом не формирует движения по документу.

Опытным путем определено, если перевыбрать контрагента - обновляется договор контрагента и при проведении документа формируются движения по документу.

Для установки реквизитов использую обработку УниверсальныйПодборИОбработкаОбъектов которая позволяет производить изменения в документе с произвольным алгоритмом.
Вопрос:
Предполагаемый алгоритм
Фрм = Объект.ПолучитьФорму();
Фрм.Открыть();
Действие обновляющее контрагента и договор контрагента в форме документа.
Фрм.ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
Фрм.Закрыть();

Почтеннейшие гуру заранее благодарю за помощь ))
9 le_
 
28.04.12
14:10
Ну, а так:
Фрм = Объект.ПолучитьФорму();
Фрм.Открыть();
Фрм.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Фрм.Закрыть();
10 Arikite
 
28.04.12
14:13
(9) пробовал, документ проводится но движения по документу не формируются
11 le_
 
28.04.12
14:18
А отладчиком не пробовал пройтись до момента записи проводок?
12 Arikite
 
28.04.12
14:22
0) в программировании не силен, об отладчике известно только то, что он существует ))
1) используется внешняя обработка для изменения реквизитов, как осуществить проверку в отладчике
13 le_
 
28.04.12
14:31
(12) Открываешь конфигуратор, в нем открываешь модуль документа, ставишь точку останова в процедуре ОбработкаПроведения, жмешь F5, чтобы запустить приложение, открываешь обработку, которой пользуешься, выполняешь её, произойдет остановка на точке останова - смотришь чего там какие значения имеет, по шагам (F11) продолжаешь выполнение программы, пока не выяснится причина, по которой проводки не создаются...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан