Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0
Пожалуйста, помогите разобраться. При записи документа ПТ (ПриЗаписи()) создаю новый документ - Документы.Документ.СоздатьДокумент(). Все создается, записывается. Но в программе есть функция, которая обращается к ПТ: Объект.Записать(РежимЗаписиДокумента.Запись, РежимПроведенияДокумента.Неоперативный).
Подскажите, как обойти условием создание нового документа в ПриЗаписи().
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0
Документ А создает Документ В. Все нормально. Но потом при загрузке из Клиент-банка идет обращение к Документам А: Объект.Записать(РежимЗаписиДокумента.Запись, РежимПроведенияДокумента.Неоперативный).
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
К сожалению, в сабже задача не формализована. Возможно, все решается гораздо проще. Предопределенная процедура ПриЗаписи() есть как в модуле документа, так и в модуле формы документа. Если вызов процедуры создания подчиненного документа поместить в процедуру ПриЗаписи() модуля формы, то подчиненный док будет создаваться только при интерактивной записи документа(по кноп Записать на форме). При программной записи(без открытия формы) ничего происходить не будет.
ЗЫ. Учтите, что после изменения основного дока может понадобиться внести изменения в подчиненный(может это не нужно сейчас, но понадобится при дальнейшем развитии функционала). Из этих соображений проверка на ЭтоНовый() - тупиковое напрвление, рано или поздно придется переделывать.
Если Результат.Количество() = 0 тогда ДокументДоп = Документы.ДокументДляСозданияПлатежногоТребования.СоздатьДокумент(); ... ДокументДоп.Записать(РежимЗаписиДокумента.Проведение);
иначе Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() цикл ДокДоп = Выборка.Ссылка.ПолучитьОбъект(); ДокДоп.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры
У меня был опыт с подобным - модификация и запись одного документа (ДокументДляСозданияПлатежногоТребования) при записи другого документа (ПлатежноеТребование) Какие при этом я получил грабли.
Грабли №1. Пользователь с полными правами на ПлатежноеТребование и с правами "только чтение" на ДокументДляСозданияПлатежногоТребования вносит изменения в ПлатежноеТребование. И эти модификации должны попасть в ДокументДляСозданияПлатежногоТребования.
Грабли №2. При записи ПлатежноеТребование иногда пробегала некая барабашка (подозреваю что конфликт блокировок, но точно так и не выяснил). В результате у ПлатежноеТребование и ДокументДляСозданияПлатежногоТребования шла рассинхронизация реквизитов, которые должны были совпадать. Другими словами - по одновному документу запись произошла, а по подчиненному - нет.
Проблема типа Грабли №2 - очень каварная. Идут тысячи документов. Никому и в голову не прийдет проверять - а все ли там хорошо? Всегда ли создается ДокументДляСозданияПлатежногоТребования ?
Поэтому для себя сделал вывод: создавать/модифицировать один документ из модуля другого - это зло. Надо стараться этого избегать. Например "выкручиватся" при помощи регистров сведений не подчиненных регистратору. Заполнять их из ПлатежноеТребование и потом использовать в комплексе с ДокументДляСозданияПлатежногоТребования (или вообще без него).
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0
Как мне не хватало вашего опыта и комментариев пару месяцев назад. Спасибо за советы.
Задача была такая: есть 2 базы «Абонент» и «Торговля». Обработка: Количество Актов тех. обслуживания должно совпадать с количеством проведенных Актов (Реализаций тов. и услуг) в Торговле по кажд. контрагенту. Если условие выполнено, вывожу список контрагентов для выставления им плат.требования. Но нужно учесть уже выставленные ПТ. Поэтому при записи ПТ (именно при Записи, т.к. выставляет один человек, а подтверждает оплату ПТ и проводит другой) создаю документ ДокДляСозданияПТ, записываю все акты по данному контрагенту в ТЧ.ДокументыРеализации, провожу в РС.АктыВыставленныеВПТ.
Повторное формирование Списка контрагентов происходит на основании записей в РС. Вот для этой цели был создан дополнительный документ. Да, я не предусмотрела, что ПТ м.изменяться. Наверное, буду информировать пользователя об изменении в ПТ ТЧ.ДокументыРеализации для корректировки ДокументаДляСозданияПТ. Уже два месяца выставляются так.образом ПТ.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!