#0
by Одлопез
Столкнулся с задачей, которая требует при проведении определенного типа документов формировать подчиненные и проводить их. Как известно, из процедуры ОбработкаПроведения методы Провести и СделатьНеПроведенным для объектов типа "Документ" вызывать нельзя. Попытался создать другую процедуру вне процедуры ОбработкаПроведения, в которой создаются и проводятся необходимые документы. Первое впечатление: все прекрасно работает. Сталкивался ли кто-нибудь из программистов с подобным решением указанной проблемы? Есть ли в нем какие-то подводные камни?
#1
by FreeFin
"Как известно, из процедуры ОбработкаПроведения методы Провести и СделатьНеПроведенным для объектов типа "Документ" вызывать нельзя." Кому известно, что нельзя? Мне нет. Один из вариантов: А в остальном.. флаг проведенности, если Проведен=1 и тдитп. Камней нет, есть логика.
#2
by Джинн
В подавляющем большинстве случаев нет никакой необходимости в таких "связках" документов. С вероятностью близкой к единице это неправильное понимание процесса со стороны программиста или ошибки проектирования. За очень редким исключениею. Мне известно. Если документы оперируют одным набором данных, то можно поиметь конкретный геморрой. Особенно конкретный при работе с ОУ.
#4
by Одлопез
Неплохой пример. Мое решение в сабже тем меня и удивило, что оно намного проще, чем встречающиеся мною на просторах интернета. Согласитесь, открывать форму вновь созданного документа, передавая при этом некий параметр, а в самом документе в процедуре ПриОткрытии проверять этот параметр и вызывать или не вызывать метод Провести - это немного более длинный путь, чем просто написать Док.Провести. Кроме того с помощью указанного примера проблематично будет реализовать отмену проведения документа. Критика принята. В общем случае сам так считаю. В данном же случае в правильности логики решения я уверен, а вот по поводу технической реализации не могли бы Вы высказать свое мнение. На просторах интернета мне встречались только варианты типа , и меня немного смущает простота моего решения :(
#7
by FreeFin
Тебя что, типа похвалить надо? Смущенный наш ))) Токо зачто? Ну ладно = молодец! Работает = запускай в эксплуатэйшн и собирай/исправляй баги (и под запись). Отладишь-сдашь-деньги получишь=все не пропей, потому забудешь как сделал.))) Кста Джинн отчасти прав, если тупо пытаться засунуть в кунить типовую подобные финты, то да ГП, ТА, остатки, партии = йо. но эт если все заранее хорошо не продумать.
#8
by Cthulhu
проведение является транзакцией, проведение из проведения будет вложенной транзакцией. Вложенные транзакции 1с не поддерживаются - сиречь при использовании оных 1с за прогнозируемый результат не отвечает. Можешь получить непроведенный документ, который тем не менее имеет движения (например).
#9
by Одлопез
За похвалу спасибо. Главный вопрос который я хотел решить, почему на просторах интернета до сих пор нет такого решения? Только велосипеды типа Может мой механизм содержит подводные камни из-за которых от такой реализации все отказываются?
#10
by FreeFin
Утверждение не бесспорно. Ибо опыт говорит об обратном. Вот уже лет пять как "закрываю периоды" обработищей, начинающейся "НачатьТранзакцию" и через отмены проведения, удаление, изменение дат, создание и проведение новых доков, поэтапно, катится до "Зафиксировать... Сбои, "вылеты" 1С, принудительное прерывание снятием процесса = все было. Но никогда и никаких изменений по абсолютно всем "вложениям", незавершенной (первой вызванной) транзакции в БД не было. это факт, прочем радующий. А вот "повторные" транзакции, оч точно описанные здесь (откуда выдрано?): =это болячка. Какой механизм, ты его хоть вкратце опиши.)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- вызов процедуры из модуля формы в модуле объекта
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: Как в камине провести досрочный выход из отпуска?
- v7: Как объявить переменную в глобальном модуле, чтобы она была видна везде?
- Вызов метода внешней компоненты по расписанию
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: разница между #Записать Провести? Закрыть и Записать() Провести() Форма.Закрыть(
- v7: Как распечатать список всех процедур в модуле и модуле формы документа
В этой группе 1С
- Дополнительные печатные формы в УПП
- Как сделать сторно на часть отпуска в УПП 1.2.7?
- Инсталлятор программ VB 6.0
- Вопрос по восстановлению последовательности 1с++ и обычной
- Обмен данными: "Ошибка формата представления изменений"
- Подарочные сертификаты
- Объект xBase - фильтр для базы DBF
- v7: ОС дата вводу в эксплуатацию 1917 год?
- Границы листа в макете
- Присоединить секцию в отчете
- Внесение новых записей в регистр "Цены номенклатуры"
- 8.1 Форматирование даты в запросе
- Как программно добавить субконто?
- Рарус CRM ПРОФ 1.1
- v7: Как оформить возврат ОС в ПУБе
- Сканеры ШК. Работа с VK_RS232.dll от Ромикса
- Запись реквизита в ТЧ Документа
- Где взять описание английского синтаксиса встроенного языка 1С?
- Сложный запрос
- Заказали Камин 3.0. Как туда проще перенести данные?