Имя: Пароль:
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) продолжаешь выполнение программы, пока не выяснится причина, по которой проводки не создаются...
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший