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

Как правильно писать обработку

Автор alikoff, 25 мар 2014, 11:12

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

alikoff

Подскажите пожалуйста по теории. Пишу обработку для документа. В документе есть поле выбора "Банковский счет". При выборе банковского счета возникает события которое обрабатывает процедура "СчетОрганизацииНачалоВыбора". Вопрос такой, если я пишу обработку и выбираю банковский счет программно, допустим поиском по счету. То данное событие не активируется. Как сделать так что бы активировать это события?? Или может что то другое можно придумать?? Или в обработке нужно переписывать это события??

Besart

Цитата: alikoff от 25 мар 2014, 11:12выбираю банковский счет программно
программно и обрабатывайте, так же как вы обрабатываете на форме

alikoff

Допустим вот моя обработка где я на форму документа передаю полученые данные

Процедура СозданиеППИсходящегоНажатие(Элемент)
ТекДанные=ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
ППИсходящий=Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент();
ППИсходящий.Номер=ТекДанные.НомерПП;
ППИсходящий.Дата=Дата("20"+ТекДанные.ДатаПП);
ВидыОперацийППИсходящее=Перечисления.ВидыОперацийППИсходящее;
ППИсходящий.ВидОперации=ВидыОперацийППИсходящее.ОплатаПоставщику;
ППИсходящий.СуммаДокумента=Число(ТекДанные.СуммаПП);
ППИсходящий.Организация=Справочники.Организации.НайтиПоРеквизиту("ИНН",ТекДанные.УНППлательщика);
ППИсходящий.Контрагент=Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ТекДанные.УНППолучателя);
ППИсходящий.СчетБанк=ПланыСчетов.Хозрасчетный.НайтиПоКоду("51");
ППИсходящий.СчетКонтрагента=Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",ТекДанные.СчетПолучателя);
ППИсходящий.ДоговорКонтрагента=ТекДанные.ДоговорОплаты.Ссылка;
ППИсходящий.СчетУчетаРасчетовСКонтрагентом=ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.1");
//ППИсходящий.СчетУчетаРасчетовПоАвансам=ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.2");
ППИсходящий.НазначениеПлатежа=ТекДанные.НазначПлатежа1+Символы.ПС+ТекДанные.НазначПлатежа2+Символы.ПС+ТекДанные.НазначПлатежа3;
ППИсходящий.ВидПлатежногоПоручения="Простое";
РасшифровкаПлатежа=ППИсходящий.РасшифровкаПлатежа;
///////
СтрокаРасшифровкиПлатежа=РасшифровкаПлатежа.Добавить();
СтрокаРасшифровкиПлатежа.ДоговорКонтрагента=ППИсходящий.ДоговорКонтрагента;
СтрокаРасшифровкиПлатежа.СуммаПлатежа=ППИсходящий.СуммаДокумента;
СтрокаРасшифровкиПлатежа.КурсВзаиморасчетов=1;
СтрокаРасшифровкиПлатежа.СчетУчетаРасчетовПоАвансам=ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.2");
СтрокаРасшифровкиПлатежа.СчетУчетаРасчетовСКонтрагентом=ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.1");

ППИсходящий.СчетОрганизации=Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",ТекДанные.СчетПлательщика);[color=red]//В документе сдесь поле выбора, с обработчиками событий "НачалоВыбора" и "ПриИзменении"[/color]
ППИсходящий.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры


ППИсходящий.СчетОрганизации=Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",ТекДанные.СчетПлательщика);//В документе сдесь поле выбора, с обработчиками событий "НачалоВыбора" и "ПриИзменении"
Это вот обрабочик события НачалоВыбора, в документе

Процедура СчетОрганизацииНачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

ФормаСчета = Справочники.БанковскиеСчета.ПолучитьФормуВыбора(,Элемент);

Если НЕ СчетБанк.Пустая() Тогда

ФормаСчета.Отбор.ВалютаДенежныхСредств.ВидСравнения  = ?(СчетБанк.Валютный,ВидСравнения.НеРавно,ВидСравнения.Равно);
ФормаСчета.Отбор.ВалютаДенежныхСредств.Значение      = мВалютаРегламентированногоУчета;
ФормаСчета.Отбор.ВалютаДенежныхСредств.Использование = Истина;

КонецЕсли;

Если НЕ Организация.Пустая() Тогда

ФормаСчета.Отбор.Владелец.ВидСравнения  = ВидСравнения.Равно;
ФормаСчета.Отбор.Владелец.Значение      = Организация;
ФормаСчета.Отбор.Владелец.Использование = Истина;

КонецЕсли;

Если ЗначениеЗаполнено(Элемент.Значение) Тогда
ФормаСчета.ПараметрТекущаяСтрока = Элемент.Значение;
КонецЕсли;

ФормаСчета.РежимВыбора = Истина;
ФормаСчета.Открыть();

КонецПроцедуры


А это вот Обрабочик события ПриИзменении.

Процедура СчетОрганизацииПриИзменении(Элемент)

ПриИзмененииСчетаОрганизации();

АвтоЗначенияРеквизитов = ФормированиеПечатныхФорм.СформироватьАвтоЗначенияРеквизитовПлательщикаПолучателя(
                         Организация, СчетОрганизации, Контрагент, СчетКонтрагента, ВидОперации);

УстановитьРеквизитыПлательщика();

КонецПроцедуры // СчетОрганизацииПриИзменении()


Эти процедуры находятся на форме документа, и расчитаны для ручного ввода. т.е. открывается окно выбора банковского счета, пользователь выбирает его, в процедурах проводится проверка валюты и еще всякой всячины. Эти процедуры ссылаются на другие в этом же документе. И тупо переписывать весь докумен для того что бы передать в поле ввода из обработки данные мне кажется глупо. Или я чего то не понимаю??

Как тут быть??



Добавлено: 25 мар 2014, 13:11


Ах да, поясню в чем заключается задача. Задача выгрузить из клиент-банка платежки и загрузить их в 1с. Ход выполнения в том что бы реализовать обработку которая будет считывать файлы платежак, создавать в документ Платежное-поручение и передавать в него считанные данные из файла.

Besart

после СтандартнаяОбработка=Ложь, выносите весь код в отдельную процедуру и вызывайте эту процедуру программно откуда вам требуется

Теги: обработка 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск