Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> ПриЗаписи() документа          
Darina Подменю пользователя
сообщение 29.12.12, 10:50
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0

Пожалуйста, помогите разобраться.
При записи документа ПТ (ПриЗаписи()) создаю новый документ - Документы.Документ.СоздатьДокумент().
Все создается, записывается.
Но в программе есть функция, которая обращается к ПТ: Объект.Записать(РежимЗаписиДокумента.Запись, РежимПроведенияДокумента.Неоперативный).

Подскажите, как обойти условием создание нового документа в ПриЗаписи().


Signature
1С:Предприятие 8.2 (8.2.17.153)

alex040269 Подменю пользователя
сообщение 29.12.12, 10:54
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Ничего не понял. Документ А создает документ Б в процедуре ПриЗаписи. В процедуре ПриЗаписи Документа Б есть обращение к документу А?


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Darina Подменю пользователя
сообщение 29.12.12, 11:04
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0

Документ А создает Документ В. Все нормально.
Но потом при загрузке из Клиент-банка идет обращение к Документам А:
Объект.Записать(РежимЗаписиДокумента.Запись, РежимПроведенияДокумента.Неоперативный).
sad.gif


Signature
1С:Предприятие 8.2 (8.2.17.153)

Ardi Подменю пользователя
сообщение 29.12.12, 11:23
Сообщение #4

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Без видео не обойтись.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Darina Подменю пользователя
сообщение 29.12.12, 11:37
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0

Ardi, вы считаете, я глупость спросила?


Signature
1С:Предприятие 8.2 (8.2.17.153)

lex2707 Подменю пользователя
сообщение 29.12.12, 11:40
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 28
Спасибо сказали: 2 раз
Рейтинг: 0

Если ЭтоНовый() Тогда
... Создать документ Б
КонецЕсли;

logist Подменю пользователя
сообщение 29.12.12, 12:16
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Darina @ 29.12.12, 11:37) *
глупость спросила?

Может и не глупость, но суть так и не понятна.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

alex040269 Подменю пользователя
сообщение 29.12.12, 15:05
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Darina , Ardi имел ввиду видео с участием 1С. Ну или куски кода с комментариями.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

zay Подменю пользователя
сообщение 29.12.12, 15:31
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 164
Из: Киев
Спасибо сказали: 132 раз
Рейтинг: 138.1

Иногда при вызове экспортной функции не важно чего документа/обработки/отчета есть необходимость "обойти" часть кода вызываемой функции.

Возможно вам подойдет такой способ:

Создайте глобальную переменную модуля документа
Перем НеСоздаватьНовыйДокументПриЗаписи Экспорт;

В процедуре ПриЗаписи() этого документа в точке создания нового документа вставьте
Процедура ПриЗаписи()
//.................
Если НеСоздаватьНовыйДокументПриЗаписи <> истина Тогда
        Документы.Документ.СоздатьДокумент();
КонецЕсли;
//................


И записывайте наш документ в следующем режиме
НашДокумент = СсылкаНаНашДокумент.ПолучитьОбъект();
НашДокумент.НеСоздаватьНовыйДокументПриЗаписи = истина;
НашДокумент.Записать( );


Zaval Подменю пользователя
сообщение 29.12.12, 16:23
Сообщение #10

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

К сожалению, в сабже задача не формализована.
Возможно, все решается гораздо проще.
Предопределенная процедура ПриЗаписи() есть как в модуле документа, так и в модуле формы документа.
Если вызов процедуры создания подчиненного документа поместить в процедуру ПриЗаписи() модуля формы, то подчиненный док будет создаваться только при интерактивной записи документа(по кноп Записать на форме).
При программной записи(без открытия формы) ничего происходить не будет.

ЗЫ. Учтите, что после изменения основного дока может понадобиться внести изменения в подчиненный(может это не нужно сейчас, но понадобится при дальнейшем развитии функционала). Из этих соображений проверка на ЭтоНовый() - тупиковое напрвление, рано или поздно придется переделывать.

Сообщение отредактировал Zaval - 29.12.12, 16:30

XBrut Подменю пользователя
сообщение 29.12.12, 17:28
Сообщение #11

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

на мисте в таких случаях требуют фото, а Ardi распоясался и просит видео smile.gif

Спасибо сказали: Ardi,

Vofka Подменю пользователя
сообщение 29.12.12, 19:59
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(XBrut @ 29.12.12, 17:28) *
на мисте в таких случаях требуют фото, а Ardi распоясался и просит видео smile.gif

У нас здесь своя атосфера. Мисту в топку. 29000000.gif

Darina Подменю пользователя
сообщение 20.02.13, 14:15
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0

Спасибо всем за ответы.
В процедуре ПриЗаписи() в модуле документа "ПлатежноеТребование" написала так:
Процедура ПриЗаписи(Отказ)
    Если ЭтотОбъект.ПометкаУдаления = Истина тогда
             ...
    иначе
            Запрос = Новый Запрос;
            Запрос.Текст ="ВЫБРАТЬ  
                    |    ДокументДляСозданияПлатежногоТребования.Ссылка,
                    |    ДокументДляСозданияПлатежногоТребования.ПлатежноеТребование
                    |ИЗ
                    |    Документ.ДокументДляСозданияПлатежногоТребования КАК ДокументДляСозданияПлатежногоТребования
                    |ГДЕ
                    |    ДокументДляСозданияПлатежногоТребования.ПлатежноеТребование.Ссылка = &ПТ";
            
            Запрос.УстановитьПараметр("ПТ", ЭтотОбъект.Ссылка);
            
            Результат = Запрос.Выполнить().Выгрузить();              
            
            Если Результат.Количество() = 0 тогда
                ДокументДоп = Документы.ДокументДляСозданияПлатежногоТребования.СоздатьДокумент();
                ...
                ДокументДоп.Записать(РежимЗаписиДокумента.Проведение);
            
            иначе
                Выборка = Запрос.Выполнить().Выбрать();
                Пока Выборка.Следующий() цикл
                    ДокДоп = Выборка.Ссылка.ПолучитьОбъект();
                    ДокДоп.Записать(РежимЗаписиДокумента.Проведение);
                КонецЦикла;
            КонецЕсли;
    КонецЕсли;
КонецПроцедуры


Signature
1С:Предприятие 8.2 (8.2.17.153)

Спасибо сказали: Vofka,

zay Подменю пользователя
сообщение 20.02.13, 18:55
Сообщение #14

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 164
Из: Киев
Спасибо сказали: 132 раз
Рейтинг: 138.1

У меня был опыт с подобным - модификация и запись одного документа (ДокументДляСозданияПлатежногоТребования) при записи другого документа (ПлатежноеТребование)
Какие при этом я получил грабли.

Грабли №1. Пользователь с полными правами на ПлатежноеТребование и с правами "только чтение" на ДокументДляСозданияПлатежногоТребования вносит изменения в ПлатежноеТребование. И эти модификации должны попасть в ДокументДляСозданияПлатежногоТребования.

Грабли №2. При записи ПлатежноеТребование иногда пробегала некая барабашка (подозреваю что конфликт блокировок, но точно так и не выяснил). В результате у ПлатежноеТребование и ДокументДляСозданияПлатежногоТребования шла рассинхронизация реквизитов, которые должны были совпадать. Другими словами - по одновному документу запись произошла, а по подчиненному - нет.

Проблема типа Грабли №2 - очень каварная. Идут тысячи документов. Никому и в голову не прийдет проверять - а все ли там хорошо? Всегда ли создается ДокументДляСозданияПлатежногоТребования ?

Поэтому для себя сделал вывод: создавать/модифицировать один документ из модуля другого - это зло. Надо стараться этого избегать. Например "выкручиватся" при помощи регистров сведений не подчиненных регистратору. Заполнять их из ПлатежноеТребование и потом использовать в комплексе с ДокументДляСозданияПлатежногоТребования (или вообще без него).

Спасибо сказали: andreykyiv@bigmir.net, Домовик,

Darina Подменю пользователя
сообщение 21.02.13, 9:06
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 41
Спасибо сказали: 16 раз
Рейтинг: 0

Как мне не хватало вашего опыта и комментариев пару месяцев назад. Спасибо за советы.

Задача была такая: есть 2 базы «Абонент» и «Торговля».
Обработка:
Количество Актов тех. обслуживания должно совпадать с количеством проведенных Актов (Реализаций тов. и услуг) в Торговле по кажд. контрагенту.
Если условие выполнено, вывожу список контрагентов для выставления им плат.требования. Но нужно учесть уже выставленные ПТ.
Поэтому при записи ПТ (именно при Записи, т.к. выставляет один человек, а подтверждает оплату ПТ и проводит другой) создаю документ ДокДляСозданияПТ, записываю все акты по данному контрагенту в ТЧ.ДокументыРеализации, провожу в РС.АктыВыставленныеВПТ.

Повторное формирование Списка контрагентов происходит на основании записей в РС.
Вот для этой цели был создан дополнительный документ. Да, я не предусмотрела, что ПТ м.изменяться.
Наверное, буду информировать пользователя об изменении в ПТ ТЧ.ДокументыРеализации для корректировки ДокументаДляСозданияПТ.
Уже два месяца выставляются так.образом ПТ.

Или вы считаете, стоит переделать?


Signature
1С:Предприятие 8.2 (8.2.17.153)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 13:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!