Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 04:15

СоздатьОбработку_(новичок)

Автор Галактик, 06 июн 2012, 23:34

0 Пользователей и 1 гость просматривают эту тему.

Галактик

Вобщем занимаюсь 1С-кой совсем недавно.. (7дней)

Стоит задача такая. Справочники (Организация, Контрагенты, Договоры). Документ (Поступление товаров)

организация(у нас их несколько)
Контрагенты (тоже)
Договоры(тоже)

В Документе ПоступлениеТоваров у нас выводятся и Организация и Контрагенты и Договоры.

Но есть регистр сведений, в котором указана организация, период и УЧЕТНАЯ ПОЛИТИКА(либо Усн либо Осн)

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

cska-fanat-kz

Последнее предложение распишите подробнее.....
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

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

Запрос.УстановитьПараметр("ДатаДляРегистра",ТекущаяДата()); // на какой момент нужно определять учетную политику из регистра
Запрос.УстановитьПараметр("Осн",Перечисления.УчетнаяПолитика.Осн); // посмотрите тип измерения УчетнаяПолитика в регистре -
                                                                      // скорее всего перечисление.

Выборка=Запрос.Выполнить().Выбрать();

НачатьТранзакцию();
Попытка
     Пока Выборка.Следующий() цикл
         ДокументОбъект=Выборка.Ссылка.ПолучитьОбъект();
         ДокументОбъект.Организация=НужнаяОрганизацияУСНСсылка;
         ДокументОбъект.Записать();
     КонецЦикла;

     ЗафиксироватьТранзакцию();
Исключение
     Сообщить("Какая-то ошибка. "+ОписаниеОшибки());
     ОтменитьТранзакцию();
КонецПопытки;



НО
1. Имейте ввиду, раз есть в документе Орнанизация и Договор, то Договор скорее всего привязан к одной из организаций. И если просто менять Организацию в документе, а договор оставить старый - будет несостыковка.
2. Лучше использовать транзакцию, потому что это элемент справочника можно безболезненно перезаписать, а документ тянет за собой механизм перепроведения, но удастся ли перепровести - еще вопрос. При использовании же транзакции, если документ не удастся записать, транзакция откатится и вернет "все как было".
3. Пример кода для 8.1, или 8.2 в обычном приложении. Для 8.2 с управляемыми формами нужно будет немного переделать.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

п.2 у вас документ записывается через Записать() - проведения не происходит...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

Ну я схему решения писала. Конечно же надо
Записать(РежимЗаписиДокумента.Проведение);

Но, кстати, могут попасться еще и не проведенные документы, или даже вовсе помеченные на удаление. И проводить их, скорее всего, не надо. Этот случай тоже надо отрабатывать.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:
Рейтинг@Mail.ru

Поиск