Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Хотите ли вы стать модератором раздела сайта или форума? (Желающие пишем админу.)

Да, конечно.
Только за большие деньги.
Нет, ни за что.
Ну может в будущем...


Результаты
Другие опросы

Всего голосов: 650
Комментарии: 2


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




КлиентБанк - возможность загрузки с Excel


КлиентБанк - возможность загрузки с Excel для стандартной конфигурации

Код

Перем СписокВыбораТипаНовогоДокумента;
Перем СписокТиповДокументов;
Перем БылаПроверка;

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

// Процедура - обработчик события "ПередОткрытием" формы.
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

ИмяОбработки = Метаданные().Имя;

НачПериода = РабочаяДата;
КонПериода = РабочаяДата;

ИмяОбработки = ЭтотОбъект.Метаданные().Имя;

Попытка
ВременнаяТаб = ВосстановитьЗначение(ИмяОбработки + "СтрокаНастроек");
Если ВременнаяТаб.Количество()=0 или ВременнаяТаб.Количество()<>4 Тогда
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежное поручение исходящее';uk='Платіжне доручення вихідне'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежное поручение входящее';uk='Платіжне доручення вхідне'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежный ордер на списание';uk='Платіжний ордер на списання'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежный ордер на поступление';uk='Платіжний ордер на надходження'");

ИмяОбработки = ЭтотОбъект.Метаданные().Имя;
СохранитьЗначение(ИмяОбработки + "СтрокаНастроек", НастройкаЗаполнения.Выгрузить());

Иначе
НастройкаЗаполнения.Загрузить(ВременнаяТаб);
КонецЕсли;
ГруппаДляНовыхКонтрагентов = ВосстановитьЗначение(ИмяОбработки + "КаталогКонтрагентов");
Организация = ВосстановитьЗначение(ИмяОбработки + "Организация");
БанковскийСчет = ВосстановитьЗначение(ИмяОбработки + "БанковскийСчет");

Исключение
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежное поручение исходящее';uk='Платіжне доручення вихідне'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежное поручение входящее';uk='Платіжне доручення вхідне'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежный ордер на списание';uk='Платіжний ордер на списання'");
НастройкаЗаполнения.Добавить().Документ=НСтр("ru='Платежный ордер на поступление';uk='Платіжний ордер на надходження'");
КонецПопытки;

Попытка
Если ВосстановитьЗначение(ИмяОбработки + "РежимПоУмолчанию")= " Загрузка " Тогда
ЭлементыФормы.Панель1.ТекущаяСтраница=
ЭлементыФормы.Панель1.Страницы.Страница2;
КонецЕсли;
Исключение
КонецПопытки;

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

// Процедура - обработчик события "ПередЗакрытием" формы
//
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)

ИмяОбработки = ЭтотОбъект.Метаданные().Имя;
СохранитьЗначение(ИмяОбработки + "СтрокаНастроек", НастройкаЗаполнения.Выгрузить());
СохранитьЗначение(ИмяОбработки + "КаталогКонтрагентов", ГруппаДляНовыхКонтрагентов);
СохранитьЗначение(ИмяОбработки + "Организация", Организация);
СохранитьЗначение(ИмяОбработки + "БанковскийСчет", БанковскийСчет);
СохранитьЗначение(ИмяОбработки + "РежимПоУмолчанию", ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок);

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

// Процедура - обработчик события "ПриОткрытии" формы
//
Процедура ПриОткрытии()

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

Запрос.УстановитьПараметр("СсылкаНаОрганизацию",Организация);
Выборка = Запрос.Выполнить().Выгрузить();

Если Выборка.Количество() = 0 Тогда
БанковскийСчет = Справочники.БанковскиеСчета.ПустаяСсылка();
Организация = УправлениеПользователями.
ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),
"ОсновнаяОрганизация");
КонецЕсли;

КонецЕсли;

Если ЗначениеЗаполнено(Организация) Тогда
УправлениеДенежнымиСредствами.
УстановитьБанковскийСчет(БанковскийСчет,Организация,мВалютаРегламентированногоУчета);
КонецЕсли;

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

// Процедура - обработчик события "ОбновлениеОтображения" формы
//
Процедура ОбновлениеОтображения()

Если Не БылаПроверка Тогда
БылаПроверка = истина;
БанковскийСчетПриИзменении(Неопределено);
КонецЕсли;

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


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ

// Событие возникающее при изменении реквизита: Организация
//
Процедура ОрганизацияПриИзменении(Элемент)

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

Если УправлениеДенежнымиСредствами.
УстановитьБанковскийСчет(БанковскийСчет,Организация,мВалютаРегламентированногоУчета) Тогда
БанковскийСчетПриИзменении(Элемент);
КонецЕсли;

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

Процедура БанковскийСчетПриИзменении(Элемент)

Если Не ЗначениеЗаполнено(БанковскийСчет) Тогда
Возврат;
КонецЕсли;

ЗагрузитьНастройкиПрограммыКлиентаБанка();

Если ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок = НСтр("ru=' Выгрузка ';uk=' Вивантаження '") Тогда
КоманднаяПанельДокументыНаЭкспортОбновить(Неопределено);
Иначе
ДокументыКИмпорту.Очистить();
КонецЕсли;

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

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

КоманднаяПанельДокументыНаЭкспортОбновить(Неопределено);

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

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

ВыборФайлаДляВыгрузки(Элемент);

КонецПроцедуры
// Открывает для просмотра текстовой документ
//
Процедура ФайлВыгрузкиОткрытие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = ложь;
ОткрытьФайлДляПросмотра(Элемент,Кодировка,НСтр("ru='Файл выгрузки';uk='Файл вигрузки'"));

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

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

ВыборФайлаДляЗагрузки(Элемент);

КонецПроцедуры
// Открывает для просмотра текстовой документ
//
Процедура ФайлЗагрузкиОткрытие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = ложь;
ОткрытьФайлДляПросмотра(Элемент,Кодировка,НСтр("ru='Файл загрузки';uk='Файл загрузки'"));

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

Процедура ОсновныеДействияФормыНастройка(Кнопка)

Если Не ЗначениеЗаполнено(Организация) Тогда
Предупреждение(НСтр("ru='Не указаны организация и банковский счет.';uk='Не зазначена організація й банківський рахунок.'"));
Возврат;
КонецЕсли;

ФормаНастройки = ПолучитьФорму("ФормаНастройкиЗаполнения");

ФормаНастройки.ОткрытьМодально();

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



////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ ТАБЛИЦ

//Таблица документов на экспорт(выгрузка)
Процедура ДокументыНаЭкспортВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

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

Если Колонка.Имя = "Выгружать" Тогда
ВыбраннаяСтрока.Выгружать = НЕ (ВыбраннаяСтрока.Выгружать);

ИначеЕсли Колонка.Имя = "ОписаниеОшибок" Тогда
Сообщить(ВыбраннаяСтрока.ОписаниеОшибок);

ИначеЕсли Колонка.Имя = "НазначениеПлатежа" Тогда
Сообщить(ВыбраннаяСтрока.НазначениеПлатежа);

Иначе
ОбъектДокумента = ВыбраннаяСтрока.Документ.ПолучитьОбъект();
ОбъектДокумента.ПолучитьФорму(,ЭтаФорма).Открыть();

КонецЕсли;

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

Процедура ДокументыНаЭкспортПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки <> Неопределено Тогда
Если ДанныеСтроки.Готовность > 0 Тогда
ОформлениеСтроки.ЦветТекста = ЦветаСтиля.ТекстПредупреждающейНадписи;
КонецЕсли;
КонецЕсли;

ОформлениеСтроки.Ячейки.Картинка.ОтображатьКартинку = Истина;
Если ДанныеСтроки.Документ.Проведен Тогда
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 0;
Иначе
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 2;
КонецЕсли;

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

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

Отказ = Истина;

Если Копирование Тогда

ВыбраннаяСтрока = ЭлементыФормы.ДокументыНаЭкспорт.ТекущаяСтрока;
Если НЕ ЗначениеЗаполнено(ВыбраннаяСтрока.Документ) Тогда
Возврат;
КонецЕсли;

НовыйДокумент = ВыбраннаяСтрока.Документ.Скопировать();

Иначе

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

Если СписокВыбораТипаНовогоДокумента.Количество()=1 Тогда
ВыбранныйТипДокумента = СписокВыбораТипаНовогоДокумента[0];
Иначе
ВыбранныйТипДокумента = СписокВыбораТипаНовогоДокумента.ВыбратьЭлемент(НСтр("ru='Выбор типа документа';uk='Вибір типу документа'"));
Если ВыбранныйТипДокумента = Неопределено Тогда
Возврат;
КонецЕсли;
КонецЕсли;

НовыйДокумент = Документы[ВыбранныйТипДокумента.Значение].СоздатьДокумент();

НовыйДокумент.Организация = Организация;
НовыйДокумент.СчетОрганизации = БанковскийСчет;
НовыйДокумент.Оплачено = Истина;
НовыйДокумент.ОтражатьВНалоговомУчете= НЕ УправлениеПользователями.
ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),
"НеОтражатьДокументыВНалоговомУчете");
КонецЕсли;

ФормаНовогоДокумента = НовыйДокумент.ПолучитьФорму( , ЭтаФорма);
ФормаНовогоДокумента.Открыть();

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

Процедура ДокументыНаЭкспортПередНачаломИзменения(Элемент, Отказ)

Если Элемент.ТекущаяКолонка.Имя<>"Выгружать" Тогда
Отказ = Истина;
ВыбраннаяСтрока = ЭлементыФормы.ДокументыНаЭкспорт.ТекущаяСтрока;
ФормаДокумента = ВыбраннаяСтрока.Документ.ПолучитьФорму( , ЭтаФорма);
ФормаДокумента.Открыть();
КонецЕсли;

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

Процедура ДокументыНаЭкспортПриИзмененииФлажка(Элемент, Колонка)

Сумма=0;
Количество=0;
Для каждого строка из ПлатежныеДокументы Цикл
Если Строка.Выгружать Тогда
Сумма = Сумма + Строка.СуммаДокумента;
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;

ЭлементыФормы.ДокументыНаЭкспорт.Колонки.Выгружать.ТекстПодвала = Количество;
ЭлементыФормы.ДокументыНаЭкспорт.Колонки.СуммаДокумента.ТекстПодвала = Формат(Сумма,"ЧДЦ=2");

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

Процедура ДокументыНаЭкспортПриАктивизацииСтроки(Элемент)

ДанныеСтроки = Элемент.ТекущиеДанные;
Если ДанныеСтроки <> Неопределено Тогда
Если ДанныеСтроки.Готовность>0 Тогда
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.ЦветТекста = ЦветаСтиля.ТекстПредупреждающейНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.Значение = НСтр("ru='Ошибка: ';uk='Помилка: '")+ДанныеСтроки.ОписаниеОшибок;
Иначе
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.ЦветТекста = ЦветаСтиля.ТекстИнформационнойНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.Значение = НСтр("ru='Документ готов к выгрузке!';uk='Документ готовий до вивантаження!'");
КонецЕсли;
КонецЕсли;

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

Процедура ДокументыНаЭкспортПередУдалением(Элемент, Отказ)

Отказ = Истина;

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

//Командная понель экспорта
Процедура КоманднаяПанельДокументыНаЭкспортОбновить(Кнопка)

ЗаполнитьДокументыНаЭкспорт(ЭлементыФормы.ДокументыНаЭкспорт);
ДокументыНаЭкспортПриИзмененииФлажка(Кнопка, неопределено);
Если ПлатежныеДокументы.Количество()=0 Тогда
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.ЦветТекста = ЦветаСтиля.ТекстИнформационнойНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.Заголовок = НСтр("ru='Список документов для выгрузки пуст.';uk='Список документів для вивантаження порожній.'");
Иначе
ЭлементыФормы.СтатуснаяСтрокаПриВыгрузке.Заголовок = "";
КонецЕсли;

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

Процедура КоманднаяПанельДокументыНаЭкспортУстановитьФлажки(Кнопка)

УстановитьФлажки(Истина);

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

Процедура КоманднаяПанельДокументыНаЭкспортСнятьФлажки(Кнопка)

УстановитьФлажки(Ложь);

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

//Основные действия
Процедура КнопкаВыгрузитьНажатие(Элемент)

Если ПлатежныеДокументы.Количество()>0 Тогда

ПроизвестиВыгрузку = КодВозвратаДиалога.Да;
Для каждого СтрокаДокумента из ПлатежныеДокументы Цикл
Если Не ЭлементыФормы.ДокументыНаЭкспорт.ПроверитьСтроку(СтрокаДокумента) Тогда
Если СтрокаДокумента.Выгружать Тогда
ПроизвестиВыгрузку = Вопрос(НСтр("ru='Будут выгружены документы, помеченые на выгрузку, но не попавшие в отбор.';uk='Будуть вивантажені документи, які помічені на вивантаження, але не потрапили у відбір.'")+Символы.ПС+НСтр("ru='Продолжить выгрузку?';uk='Продовжити вивантаження?'"), РежимДиалогаВопрос.ДаНет, 0,,НСтр("ru='Внимание!';uk='Увага!'"));
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если ПроизвестиВыгрузку = КодВозвратаДиалога.Да Тогда


ТекФайл = Новый Файл(ФайлВыгрузки);
Расширение = ТекФайл.Расширение;

Если НРег(СокрЛП(Расширение)) = ".xml" Или ТипФайла = "XML" Тогда

ВыгрузитьXML(ЭлементыФормы.ДокументыНаЭкспорт);

Иначе

Выгрузить(ЭлементыФормы.ДокументыНаЭкспорт);

КонецЕсли;

КонецЕсли;
Иначе
Предупреждение(НСтр("ru='Список документов для выгрузки пуст.';uk='Список документів для вивантаження порожній.'")+Символы.ПС+НСтр("ru='Проверьте правильность указанного банковского счета и периода выгрузки.';uk='Перевірте правильність зазначеного банківського рахунку й періоду вивантаження.'"));
КонецЕсли;

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

Процедура КнопкаОтчетОВыгрузкеНажатие(Элемент)

ПолеОтчета = Новый ТабличныйДокумент;
ПечатьОтчетаОВыгруженныхПлатежныхДокументах(ПолеОтчета, ПлатежныеДокументы);
ПолеОтчета.Показать(НСтр("ru='Отчет о выгруженных платежных документах';uk='Звіт про вивантажені платіжні документи'"));

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




//Таблица документов на импорт(загрузка)

Процедура ДокументыКИмпортуВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

Если Колонка.Имя = "Загружать" Тогда
ВыбраннаяСтрока.Загружать = НЕ (ВыбраннаяСтрока.Загружать);

ИначеЕсли Колонка.Имя = "ОписаниеОшибок" Тогда
Сообщить(ВыбраннаяСтрока.ОписаниеОшибок);

ИначеЕсли Колонка.Имя = "НазначениеПлатежа" Тогда
Сообщить(ВыбраннаяСтрока.НазначениеПлатежа);

ИначеЕсли ЗначениеЗаполнено(ВыбраннаяСтрока.Документ) Тогда
Если (Колонка.Имя = "НомерСтроки" или Колонка.Имя = "Картинка" или Колонка.Имя = "Номер" или Колонка.Имя = "Дата" или Колонка.Имя = "Списано" или Колонка.Имя = "Поступило" или Колонка.Имя = "ВидОперации" или Колонка.Имя = "ВидДокумента")
ИЛИ (Колонка.Имя = "Контрагент" И ЗначениеЗаполнено(ВыбраннаяСтрока.Документ.Контрагент))
ИЛИ (Колонка.Имя = "СчетКонтрагента" И ЗначениеЗаполнено(ВыбраннаяСтрока.Документ.СчетКонтрагента))
ИЛИ (Колонка.Имя = "СтатьяДДС" И ЗначениеЗаполнено(ВыбраннаяСтрока.Документ.
РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств))
ИЛИ (Колонка.Имя = "Договор" И ЗначениеЗаполнено(ВыбраннаяСтрока.Документ.ДоговорКонтрагента)) Тогда

СтандартнаяОбработка = Ложь;
ФормаДокумента = ВыбраннаяСтрока.Документ.ПолучитьФорму( , ЭтаФорма);
ФормаДокумента.Открыть();

КонецЕсли
КонецЕсли;

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

Процедура ДокументыКИмпортуПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки <> Неопределено Тогда
Если ДанныеСтроки.Готовность > 0 Тогда
ОформлениеСтроки.ЦветТекста = ЦветаСтиля.ТекстПредупреждающейНадписи;
КонецЕсли;

ОформлениеСтроки.Ячейки.Картинка.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.Картинка.ОтображатьТекст = Ложь;

Если ЗначениеЗаполнено(ДанныеСтроки.Документ) Тогда
Если ДанныеСтроки.Проведен Тогда
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 0;
Иначе
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 2;
КонецЕсли;
Иначе
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 4;
КонецЕсли;

КонецЕсли;

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

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

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

Если НЕ Организация.Пустая() Тогда
ФормаСчета.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно;
ФормаСчета.Отбор.Владелец.Значение = Организация;
ФормаСчета.Отбор.Владелец.Использование = Истина;
КонецЕсли;

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

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

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

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

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

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

Если Элемент.ВыборПоВладельцу = неопределено Тогда
Элемент.ВыборПоВладельцу = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;

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

Если ТипЗнч(ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Контрагент) <> Тип("Строка")
И НЕ ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Контрагент.Пустая() Тогда
ФормаСчета.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно;
ФормаСчета.Отбор.Владелец.Значение = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Контрагент;
ФормаСчета.Отбор.Владелец.Использование = Истина;
КонецЕсли;

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

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

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

Процедура ДокументыКИмпортуКонтрагентПриИзменении(Элемент)

ТекущиеДанные = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;


Если ТипЗнч(ТекущиеДанные.СчетКонтрагента) = Тип("Строка") Тогда
СчетКонтрагента = Справочники.БанковскиеСчета.ПустаяСсылка();
УправлениеДенежнымиСредствами.
УстановитьБанковскийСчет(СчетКонтрагента,ТекущиеДанные.Контрагент,
мВалютаРегламентированногоУчета);
Если СчетКонтрагента<>Справочники.БанковскиеСчета.ПустаяСсылка() Тогда
ТекущиеДанные.СчетКонтрагента = СчетКонтрагента;
КонецЕсли;
Иначе
УправлениеДенежнымиСредствами.УстановитьБанковскийСчет(ТекущиеДанные.
СчетКонтрагента,ТекущиеДанные.Контрагент,
мВалютаРегламентированногоУчета);
КонецЕсли;

СписокВидовДоговоров = УправлениеВзаиморасчетами.
ОпределитьВидДоговораСКонтрагентом(ТекущиеДанные.ВидОперации);

Если ТипЗнч(ТекущиеДанные.Договор) = Тип("Строка") Тогда
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
УправлениеВзаиморасчетами.УстановитьДоговорКонтрагента(ДоговорКонтрагента,
ТекущиеДанные.Контрагент,Организация,СписокВидовДоговоров);
Если ДоговорКонтрагента<>Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
ТекущиеДанные.Договор = ДоговорКонтрагента;
КонецЕсли;
Иначе
УправлениеВзаиморасчетами.УстановитьДоговорКонтрагента(ТекущиеДанные.
Договор,ТекущиеДанные.Контрагент,Организация,СписокВидовДоговоров);
КонецЕсли;

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

Процедура ДокументыКИмпортуДоговорНачалоВыбора(Элемент, СтандартнаяОбработка)

ТекущиеДанные = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;

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

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

РаботаСДиалогами.НачалоВыбораЗначенияДоговораКонтрагента(ЭтотОбъект, ЭтаФорма, Элемент, ТекущиеДанные.Контрагент, ТекущиеДанные.Договор,
УправлениеВзаиморасчетами.ОпределитьВидДоговораСКонтрагентом(ТекущиеДанные.
ВидОперации), СтандартнаяОбработка, СтруктураДополнительныхПараметров);

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

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

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

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

Процедура ДокументыКИмпортуСчетКонтрагентаПриИзменении(Элемент)

ТекущиеДанные = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;

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

СписокВидовДоговоров = УправлениеВзаиморасчетами.
ОпределитьВидДоговораСКонтрагентом(ТекущиеДанные.ВидОперации);

Если ТипЗнч(ТекущиеДанные.Договор) = Тип("Строка") Тогда
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
УправлениеВзаиморасчетами.УстановитьДоговорКонтрагента(ДоговорКонтрагента,
ТекущиеДанные.Контрагент,Организация,СписокВидовДоговоров);
Если ДоговорКонтрагента<>Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
ТекущиеДанные.Договор = ДоговорКонтрагента;
КонецЕсли;
Иначе
УправлениеВзаиморасчетами.УстановитьДоговорКонтрагента(ТекущиеДанные.
Договор,ТекущиеДанные.Контрагент,Организация,СписокВидовДоговоров);
КонецЕсли;

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

Процедура ДокументыКИмпортуПриАктивизацииСтроки(Элемент)

ДанныеСтроки = Элемент.ТекущиеДанные;
Если ДанныеСтроки <> Неопределено Тогда
Если ДанныеСтроки.Готовность>0 Тогда
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.ЦветТекста = ЦветаСтиля.ТекстПредупреждающейНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.Значение = НСтр("ru='Ошибка: ';uk='Помилка: '")+ДанныеСтроки.ОписаниеОшибок;
Иначе
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.ЦветТекста = ЦветаСтиля.ТекстИнформационнойНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.Значение = НСтр("ru='Документ готов к загрузке!';uk='Документ готовий до завантаження!'");
КонецЕсли;
Иначе
Возврат;
КонецЕсли;

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

Процедура ДокументыКИмпортуДоговорПриИзменении(Элемент)

ТекущиеДанные = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;

Если ЗначениеЗаполнено(Элемент.Значение) Тогда
ТекущиеДанные.Контрагент = Элемент.Значение.Владелец;
ДокументыКИмпортуКонтрагентПриИзменении(неопределено);
КонецЕсли;

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

//Командная понель импорта
Процедура КоманднаяПанельДокументыДляИмпортаОбновить(Кнопка) Экспорт

ПрочитатьДанныеИзФайла();

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

Процедура КоманднаяПанельДокументыДляИмпортаСоздатьКотрагентов(Кнопка)

ФормаКонтрагентов = ПолучитьФорму("ФормаКонтрагентов");
ФормаКонтрагентов.Открыть();

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

Процедура КоманднаяПанельДокументыДляИмпортаРезультатПроведения(Кнопка)

Если ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные = Неопределено Тогда
Возврат
КонецЕсли;

Если ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Документ = неопределено Тогда
Предупреждение(НСтр("ru='Документ не загружен в информационную базу!';uk='Документ не завантажений в інформаційну базу!'"));
Возврат;
КонецЕсли;

ОбщегоНазначения.РучнаяКорректировкаОсновнаяФорма(Ложь,
ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Документ,
ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные.Документ.
ПолучитьОбъект());

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

//Основные действия
Процедура КнопкаПрочитатьДанныеИзФайлаНажатие(Элемент)

ПрочитатьДанныеИзФайла();

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

Процедура КнопкаЗагрузитьНажатие(Элемент)

Если ДокументыКИмпорту.Количество() > 0 Тогда
Загрузить(ДокументыКИмпорту);
Иначе
Предупреждение(НСтр("ru='Список документов для загрузки пуст.';uk='Список документів для завантаження порожній.'")+Символы.ПС+НСтр("ru='Необходимо прочитать данные из файла.';uk='Необхідно прочитати дані з файлу.'"));
КонецЕсли;

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

Процедура КнопкаОтчетОЗагрузкеНажатие(Элемент)

ПечатьОтчетаОЗагруженныхПлатежныхДокументах(ДокументыКИмпорту);

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

Процедура ПрочитатьДанныеИзФайла()

ОчисткаТаблицыНеНайденныхКонтрагентов();
ЗаполнитьДокументыНаИмпорт(ДокументыКИмпорту,
ЭлементыФормы.ДокументыКИмпорту);

Если ДокументыКИмпорту.Количество()=0 Тогда
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.ЦветТекста = ЦветаСтиля.ТекстИнформационнойНадписи;
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.Заголовок = НСтр("ru='Список документов для загрузки пуст.';uk='Список документів для завантаження порожній.'");
Иначе
ЭлементыФормы.СтатуснаяСтрокаПриЗагрузке.Заголовок = "";
КонецЕсли;

ЭлементыФормы.КоманднаяПанельДокументыДляИмпорта.Кнопки.
СоздатьКотрагентов.Доступность = (ТаблицаКонтрагентов.Строки.Количество() > 0);
ЭлементыФормы.КоманднаяПанельДокументыДляИмпорта.Кнопки.Действия.
Кнопки.СоздатьКотрагентов.Доступность = (ТаблицаКонтрагентов.Строки.Количество() > 0);

ЭлементыФормы.ДокументыКИмпорту.Колонки.Загружать.ТекстПодвала = ДокументыКИмпорту.Количество();
ЭлементыФормы.ДокументыКИмпорту.Колонки.Поступило.ТекстПодвала = Формат(ДокументыКИмпорту.Итог("СуммаПоступило"),"ЧЦ=12; ЧДЦ=2");
ЭлементыФормы.ДокументыКИмпорту.Колонки.Списано.ТекстПодвала = Формат(ДокументыКИмпорту.Итог("СуммаСписано"),"ЧЦ=12; ЧДЦ=2");
КоманднаяПанельДокументыДляИмпортаУстановитьФлажки(неопределено);

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


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ ЗАПОЛНЕНИЯ ЗНАЧЕНИЙ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ

Процедура ЗаполнитьВидыДокументов()

Макет = ПолучитьМакет("ВидыДокументов");
ОбластьДокументов = Макет.ПолучитьОбласть("Документы");
ОбластьДокументовВысота = ОбластьДокументов.ВысотаТаблицы;

Для НСтр = 1 По ОбластьДокументовВысота Цикл
ВидДокумента = СокрЛП(ОбластьДокументов.Область(НСтр, 1).Текст);
Название = СокрЛП(ОбластьДокументов.Область(НСтр, 2).Текст);
Корреспондент = СокрЛП(ОбластьДокументов.Область(НСтр, 3).Текст);
Кратко = СокрЛП(ОбластьДокументов.Область(НСтр, 4).Текст);

Стр = ТаблицаДокументов.Добавить();
Стр.Пометка =Истина;
Стр.Документ =ВидДокумента;
Стр.Название =Название;
Стр.Корреспондент =Корреспондент;
Стр.ДокументКратко =Кратко;

КонецЦикла;

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

Процедура ЗаполнитьНаименованиеПлатежныхОпераций()

мПлатежныеОперации = Новый Соответствие;

мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ВозвратДенежныхСредствПокупателю, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ОплатаПоставщику, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ПереводНаДругойСчет, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ПеречислениеЗП, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ПеречислениеНалога, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ПрочееСписаниеБезналичныхДенежныхСредств, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
ПрочиеРасчетыСКонтрагентами, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));
мПлатежныеОперации.Вставить(Перечисления.ВидыОперацийППИсходящее.
РасчетыПоКредитамИЗаймамСКонтрагентами, НСтр("ru='Платежное поручение';uk='Платіжне доручення'"));

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


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

//Процедура установки/снятия флажков
//
Процедура УстановитьФлажки(Флаг)

Количество = 0;
Сумма = 0;
Для каждого СтрокаДокумента из ПлатежныеДокументы Цикл
Если ЭлементыФормы.ДокументыНаЭкспорт.ПроверитьСтроку(СтрокаДокумента) Тогда
СтрокаДокумента.Выгружать = Флаг;
КонецЕсли;

Если СтрокаДокумента.Выгружать Тогда
Количество = Количество + 1;
Сумма = Сумма + СтрокаДокумента.СуммаДокумента;
КонецЕсли;
КонецЦикла;

ЭлементыФормы.ДокументыНаЭкспорт.Колонки.Выгружать.ТекстПодвала = Количество;
ЭлементыФормы.ДокументыНаЭкспорт.Колонки.СуммаДокумента.ТекстПодвала = Формат(Сумма,"ЧДЦ=2");

КонецПроцедуры //УстановитьФлажки

Процедура ЗагрузитьНастройкиПрограммыКлиентаБанка();

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

Запрос.УстановитьПараметр("Счет",БанковскийСчет);
Запрос.УстановитьПараметр("Организация",Организация);
Выборка = Запрос.Выполнить().Выгрузить();

Если Выборка.Количество()<>0 Тогда
Программа = Выборка[0].Программа;
Кодировка = Выборка[0].Кодировка;
ТипФайла = Выборка[0].ТипФайла;
ФайлВыгрузки = Выборка[0].ФайлВыгрузки;
ФайлЗагрузки = Выборка[0].ФайлЗагрузки;
Таб = Выборка[0].ВидыВыгружаемыхПлатДокументов.Получить();
Если Таб<>неопределено Тогда
Для каждого СтрокаДокумента из Таб Цикл
НайденаяСтрока = ТаблицаДокументов.Найти(СтрокаДокумента.Документ,"Название");
НайденаяСтрока.Пометка = СтрокаДокумента.Пометка;
КонецЦикла;
КонецЕсли;
ИначеЕсли БылаПроверка Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос(НСтр("ru='Для выбранного счета не настроены параметры обмена данными.';uk='Для обраного рахунку не настроєні параметри обміну даними.'")+Символы.ПС+НСтр("ru='Настроить?';uk='Настроїти?'"), Режим, 0);

Если Ответ = КодВозвратаДиалога.Да Тогда
ФормаНастройки = ПолучитьФорму("ФормаНастройкиЗаполнения");
ФормаНастройки.ОткрытьМодально();
Иначе
Программа = "";
Кодировка = "";
ТипФайла = "";
ФайлВыгрузки = "";
ФайлЗагрузки = "";
КонецЕсли;
КонецЕсли;

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

//Очищает таблицу ненайденных контрагентов перед ее заполнением
//
Процедура ОчисткаТаблицыНеНайденныхКонтрагентов()

ТаблицаКонтрагентов.Строки.Очистить();
ТаблицаКонтрагентов.Колонки.Очистить();
ТаблицаКонтрагентов.Колонки.Добавить("Представление");
ТаблицаКонтрагентов.Колонки.Добавить("Значение");
ТаблицаКонтрагентов.Колонки.Добавить("Реквизит");
ТаблицаКонтрагентов.Колонки.Добавить("НомерСтроки");
ТаблицаКонтрагентов.Колонки.Добавить("Пометка", Новый ОписаниеТипов("Булево"));

КонецПроцедуры //ОчисткаТаблицыНеНайденныхКонтрагентов

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если Параметр = ЭтаФорма Тогда
КоманднаяПанельДокументыНаЭкспортОбновить(неопределено);
КонецЕсли;

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

Процедура Панель1ПриСменеСтраницы(Элемент, ТекущаяСтраница)

Если ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок = НСтр("ru=' Выгрузка ';uk=' Вивантаження '") Тогда
Если Не ЗначениеЗаполнено(БанковскийСчет) или ПлатежныеДокументы.Количество()>0 Тогда
Возврат;
КонецЕсли;

КоманднаяПанельДокументыНаЭкспортОбновить(Неопределено);
КонецЕсли;

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

Процедура КоманднаяПанельДокументыДляИмпортаУстановитьФлажки(Кнопка)

Для каждого СтрокаДокумента из ДокументыКИмпорту Цикл
СтрокаДокумента.Загружать = Истина;
КонецЦикла;

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

Процедура КоманднаяПанельДокументыДляИмпортаСнятьФлажки(Кнопка)

Для каждого СтрокаДокумента из ДокументыКИмпорту Цикл
СтрокаДокумента.Загружать = Ложь;
КонецЦикла;

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

Процедура ДокументыКИмпортуВидОперацииПриИзменении(Элемент)

ТекущиеДанные = ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;

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

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

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

ТекущиеДанные= ЭлементыФормы.ДокументыКИмпорту.ТекущиеДанные;
МассивВидовОпераций = Новый СписокЗначений;

Если ТекущиеДанные.ВидДокумента = "ПлатежноеПоручениеВходящее" Тогда

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

ИначеЕсли ТекущиеДанные.ВидДокумента = "ПлатежноеПоручениеИсходящее" Тогда

МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ОплатаПоставщику);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ВозвратДенежныхСредствПокупателю);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПереводНаДругойСчет);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПеречислениеДенежныхСредствПодотчетнику);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПеречислениеНалога);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПрочееСписаниеБезналичныхДенежныхСредств);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПрочиеРасчетыСКонтрагентами);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.РасчетыПоКредитамИЗаймамСКонтрагентами);
МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийППИсходящее.ПеречислениеЗП);

ИначеЕсли ТекущиеДанные.ВидДокумента = "ПлатежноеТребованиеВыставленное" Тогда

МассивВидовОпераций.Добавить(Перечисления.
ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя);

КонецЕсли;
Элемент.ДоступныеЗначения = МассивВидовОпераций;

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



// Подготовка формы к работе

БылаПроверка = Ложь;
ЗаполнитьВидыДокументов();
ЗаполнитьНаименованиеПлатежныхОпераций();
СформироватьСтруктуруТаблицыИмпорта(ДокументыКИмпорту, ЭлементыФормы.ДокументыКИмпорту);



Скачать обработку


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



Обработки КлиентБанк возможность загрузки с Excel КлиентБанк возможность загрузки Excel для стандартной конфигурации Код Перем СписокВыбораТипаНовогоДокумента СписокТиповДокументов БылаПроверка //////////////////////////////////////////////////////////////////////////////// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ Процедура обработчик события & quot ПередОткрытием& формы ПередОткрытием Отказ СтандартнаяОбработка ИмяОбработки Метаданные Имя НачПериода РабочаяДата КонПериода ЭтотОбъект Попытка ВременнаяТаб