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

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

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

Ник:
Пароль:

Меню сайта




Ваше мнение
Оцените дизайн сайта

Супер
Симпатично
Пойдет
Ничего хорошего
Просто клиника


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

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


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



Статистика




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




Клиент-банк для УТП (Украина)


Переделанная программа ABBYY под УТП. Умеет работать с разными шаблонами файлов.
1. возможность дописать под любой новый шаблон
2. внедрен модуль для работы с налогом на рекламу: подбор заказов ведется по счетам, сумма НДС подставляется из найденного заказа
3. Все стандартные функции обработки: поиск контрагентов по ЕДРПОУ (при этом система предлагает выбрать контрагента, или создать нового, создать договор если контрагент не найден и др.), определение платежей и др.
4. в архиве есть три демо-файла формата импорта[/url]



Код
////////////////////////////////////////////////////////////////////////////////
// Закладка "Импорт выписки"

// Проверяет заполнение всех полей для импорта выписки
//
// Проверяем, что выбрано имя файла, файл существует, ФормаОбработкиФормата определена
// дата, организация, расчетный счет, формат обмена, тип файла
//
// Параметры: нет
//
// Возвращаем:
// Истина - заполнены все поля
// Ложь - иначе
//
Функция ПроверитьЗаполнениеПолейДляИмпорта()

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

Если НЕ СуществуетФайл(ИмяФайлаИмпорт) Тогда
Возврат Ложь;
КонецЕсли;

Если ФормаОбработкиФормата = Неопределено Тогда
Предупреждение(НСтр("ru='Не указан формат обмена данными с системой Клиент-Банк!';uk='Не вказаний формат обміну даними із системою Клієнт-Банк!'"));
Возврат Ложь;
КонецЕсли;

Если ДатаВыписки = '00010101000000' Тогда
Предупреждение(НСтр("ru='Не указана дата выписки!';uk='Не вказана дата виписки!'"));
Возврат Ложь;
КонецЕсли;

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

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

Если ФорматОбмена = Неопределено Тогда
Предупреждение(НСтр("ru='Не указан формат обмена данными с системой Клиент-Банк!';uk='Не вказаний формат обміну даними із системою Клієнт-Банк!'"));
Возврат Ложь;
КонецЕсли;

Если ТипФайлаИмпорт = Неопределено Тогда
Предупреждение(НСтр("ru='Не указан тип файла для импорта с системы Клиент-Банк!';uk='Не вказаний тип файлу для імпорту із системи Клієнт-Банк!'"));
Возврат Ложь;
КонецЕсли;

Возврат Истина;

КонецФункции // ПроверитьЗаполнениеПолейДляИмпорта()

// Очищает в тчИмпорт все платежи, кроме существующих
//
// Параметры:
//
// <Параметр1> – <Тип.Вид> – <описание параметра>
// <продолжение описания параметра>
// <Параметр2> – <Тип.Вид> – <описание параметра>
// <продолжение описания параметра>
//
Процедура ОчиститьНесуществующиеПлатежи()

МассивУдаляемыхСтрок = Новый Массив;
Для Каждого Строка Из тчИмпорт Цикл
Если Строка.Статус <> СтатусыСтрокИмпорта.СуществующийПлатеж Тогда
МассивУдаляемыхСтрок.Добавить(Строка);
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл
тчИмпорт.Удалить(ЭлементМассива);
КонецЦикла;

КонецПроцедуры // ОчиститьНесуществующиеПлатежи()

// Импорт выписки
//
// Параметры: нет
//
//
Процедура ИмпортВыписки()

// очищаем с таблицы все, кроме существующих платежей
// проверим, что таблица не пустая и не все уже существующие
- тогда и лишнего вопроса
// задавать не надо

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

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


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

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

ФормаОбработкиФормата.СохранитьЗначения(Параметры);

// 2. Формируем параметры для вызова функции импорта формы обработки формата

// запрос к обработке формата на импорт
Параметры = Новый Структура;

Параметры.Вставить("ДатаДок", ДатаВыписки);
Параметры.Вставить("Организация", Организация);
Параметры.Вставить("РСчет", СокрЛП(Счет.НомерСчета));

Параметры.Вставить("ИмяФайла", ИмяФайлаИмпорт);
Параметры.Вставить("ТипФайла", ТипФайлаИмпорт);
Параметры.Вставить("НашМФО", СокрЛП(Счет.Банк.Код));
Параметры.Вставить("КодировкаФайла", "OEM");

// 3. Вызываем функцию обработки, получаем таблицу
платежей

тзВыписка = ФормаОбработкиФормата.ИмпортВыписки(Параметры);

// 4. Обрабатываем таблицу платежей
// (перекодировка, только входящие, ищем юрфизлиц, контрагентов, сделки, заказы, договора)

тзПлатежи = тчИмпорт.Выгрузить();
тзПлатежи.Очистить();

ПерекодировкаИмпорта = ФормаОбработкиФормата.ПерекодировкаИмпорта();

Для Каждого Строка Из тзВыписка Цикл

// проверяем на только входящие платежи
Если НастройкиОбработки.ИмпортТолькоВходящихПлатежей Тогда
Если Строка.Расход > 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

НоваяСтрока = тзПлатежи.Добавить();

// перекодировка
Если ПерекодировкаИмпорта Тогда
Строка.Контрагент = ЗаменитьСимволы(Строка.Контрагент);
Строка.Содержание = ЗаменитьСимволы(Строка.Содержание);
КонецЕсли;

НоваяСтрока.Приход = Строка.Приход;
НоваяСтрока.Расход = Строка.Расход;

НоваяСтрока.НомерПП = Строка.НомерПП;
НоваяСтрока.Содержание = СокрЛП(Строка.Содержание);
// только

// 4.1. Определение юридического/физического лица, контрагента
// Ищем по коду ЕДРПОУ (в дальнейшем ОКПО):

ВыборкаПоОКПО = НайтиПоОКПО(Строка.ОКПО, Строка.Контрагент);
НайденКонтрагент = Ложь;
Контр=Справочники["Контрагенты"].ПустаяСсылка(); //оприділимо пусте посилання для контрагента
Если ВыборкаПоОКПО.Следующий() Тогда
//есть хоть один

Контрагент = ВыборкаПоОКПО.Ссылка;
НайденКонтрагент = Истина;
//пропонуємо вибрати контрагента
ИначеЕсли ВвестиЗначение(Контр,"Виберіть контрагента:"+Строка.Контрагент , ) тогда
//для вказаного контрагента запишемо ЗКПО, що поступило з банку
Контр=Контр.ПолучитьОбъект();
Контр.КодПоЕДРПОУ=Строка.ОКПО;Контр.Записать();
Контрагент=Контр.Ссылка;НайденКонтрагент = Истина;
//Строка.Контрагент=Контрагент;
Иначе
// в зависимости от флага
// "АвтоСозданиеКонтрагента" создаем новые элементы справочника Контрагенты
//Запропонуємо вибрати контрагента із списку

Если Вопрос("Створити "+Строка.Контрагент+" ?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да тогда
//Если НастройкиОбработки.АвтоСозданиеКонтрагента Тогда

//Реквизиты = Новый Структура;
//Реквизиты.Вставить("Наименование", Строка.Контрагент);
//Реквизиты.Вставить("ОКПО", Строка.ОКПО);
//ПР = ?(Строка.Приход = 0, "Р", "П");
//Реквизиты.Вставить("ПР", ПР); //Приход ("П") или расход ("Р")
//Реквизиты.Вставить("РСчет", Строка.РСчет);
//Реквизиты.Вставить("МФО", Строка.МФО);

ПР = ?(Строка.Приход = 0, "Р", "П");
Реквизиты = Новый Структура;
Реквизиты.Вставить("Наименование", Строка.Контрагент);
Реквизиты.Вставить("ПР", ПР); //Приход ("П") или расход ("Р")
Реквизиты.Вставить("ОКПО", Строка.ОКПО);
Реквизиты.Вставить("РСчет", Строка.РСчет);
Реквизиты.Вставить("МФО", Строка.МФО);
//Реквизиты.Вставить("МФОБанк",Строка.МФОБанк);
Реквизиты.Вставить("БанкНаименование",Строка.БанкНаименование);
НайденКонтрагент = Истина;
//Создаём нового контрагента в справочнике
Контрагент = СоздатьСпрКонтрагент(Реквизиты);
Иначе
// ПустаяСсылка
Контрагент = Справочники[ПолучитьИмяОбъектаКонфигурации
("ТипСправочникаКонтрагенты")].ПустаяСсылка();
НайденКонтрагент = Ложь;
КонецЕсли;
КонецЕсли;

НоваяСтрока.Контрагент = Контрагент;
//якщо не вибраний контрагент - то договорів не шукаємо і
замовлень також не шукаємо
Если найденКонтрагент тогда //НЕ ЗначениеЗаполнено(Строка(Контрагент)) тогда
//4.2.1. Визначимо чи цей контрагагент постачальник чи покупець //після перенесення залишків є деякі неточності
// якщо він покупець - то поміняємо статус контрагента коли по ньому йде видаток
Если Строка.Приход=0 тогда //коли видаток
Контрагент1=Справочники.Контрагенты.
НайтиПоКоду(Контрагент.Код).ПолучитьОбъект();
Контрагент1.Покупатель=0;Контрагент1.Поставщик=1;Контрагент1.Записать();
Договор=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ЗапросПоДоговорам(Контрагент, Строка.Приход, Договор);
//Договор = Контрагент.ОсновнойДоговорКонтрагента;
//Договор1=Справочники.ДоговорыКонтрагентов.
НайтиПоКоду(Договор.Код).ПолучитьОбъект();
//Договор1.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
//Договор1.Записать();
Иначе //прихід коштів
Если Контрагент.Покупатель<>1 тогда //прихід коштів. Якщо стоїть галочка, що він покупець - йдемо далі, якщо не стоїть - проводимо додаткові операції
//якщо не стоїть галочка, що він покупець
//врегулюємо питання договорів. поставимо галочку покупця і створимо новий договір покупця
Контрагент1=Справочники.Контрагенты.
НайтиПоКоду(Контрагент.Код).ПолучитьОбъект();
Контрагент1.Покупатель=1;Контрагент1.Записать();
ЗапросПоДоговорам(Контрагент, Строка.Расход, Договор);
Иначе
ЗапросПоДоговорамДляПокупателей(Контрагент, 1, Договор);
КонецЕсли;
КонецЕсли;
// 4.2.2 Определение сделки, заказа, договора.
// основной договор
//Договор = Контрагент.ОсновнойДоговорКонтрагента;
//Если Договор.Владелец<>Контрагент тогда
//зустрічаються не правильний пошук договорів
//Сообщить("УВАГА! Помилка при заповненні договору для контрагента "+Контрагент);
//КонецЕсли;
НоваяСтрока.Договор = Договор;

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

//из "Строка.Содержание" находим список номеров
масНомераСделок = НайтиНомер(Строка.Содержание);
// нужно масНомераСделок дополнить:
// 1. нулями до длины = 8
// 2. префикс + нулями до длины = 8
масНомераСделокДополнить(масНомераСделок, СокрЛП(Организация.Префикс));
СуммаСНДСПЗР=0;//в цій змінній визначимо суму - податок з реклами
Если масНомераСделок.Количество() > 0 Тогда
//сначала ищем среди сделок, затем, если результат пуст, среди договоров, Підбір робимо з урахуванням ПЗР
СуммаСНДСПЗР=Строка.Приход;//в цій змінній визначимо суму вхідного документу - податок з реклами
Если Строка.Приход<>0 тогда //Визначимо суму податку на рекламу для кожного контрагента при поступленні коштів
СуммаБезНДС=Строка.Приход/1.205;
ПЗР=ОКР(СуммаБезНДС*0.5/100,2,1);СуммаСНДСПЗР=Строка.Приход-ПЗР;
КонецЕсли; //Заг Сума //СумаБез ПЗР
ВыборкаСделки = НайтиСделки1(масНомераСделок, Контрагент, Организация, Строка.Приход,?(Строка.Приход<>0,СуммаСНДСПЗР, Строка.Расход));
масСписокНайденныхСделок = ВыборкаСделки.ВыгрузитьКолонку("Ссылка");
Если ВыборкаСделки.Количество() > 0 Тогда
//нашли хоть одну сделку
НоваяСтрока.Сделка = ВыборкаСделки[0].Ссылка;
Если клЕстьТабличнаяЧасть("РасшифровкаПлатежа",ВыборкаСделки[0].
Ссылка.Метаданные()) Тогда
НоваяСтрока.Договор = ВыборкаСделки[0].Ссылка.РасшифровкаПлатежа[0].
ДоговорКонтрагента;
Иначе
НоваяСтрока.Договор = ВыборкаСделки[0].Ссылка.ДоговорКонтрагента;
КонецЕсли;

НоваяСтрока.СписокНайденныхСделок = ЗначениеВСтрокуВнутр(масСписокНайденныхСделок);

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

//Перевіримо, чи заповнений договір. Я договору нема - створимо договір
Если СокрЛП(НоваяСтрока.Договор)="" тогда
ПР = ?(Строка.Приход = 0, Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком, Перечисления.ВидыДоговоровКонтрагентов.СПокупателем );
ВыборкаДоговора=НайтиДоговораПоУсловию(Контрагент, Организация, ПР);
Пока ВыборкаДоговора.Следующий() Цикл
Если Строка.Приход<>0 тогда //прихід
Если ВыборкаДоговора.Ссылка.ВидДоговора=Перечисления.
ВидыДоговоровКонтрагентов.СПокупателем тогда
НоваяСтрока.Договор = ВыборкаДоговора.Ссылка;
Контрагент1=Справочники.Контрагенты.
НайтиПоКоду(Контрагент.Код).ПолучитьОбъект();
Контрагент1.ОсновнойДоговорКонтрагента= ВыборкаДоговора.Ссылка;
Контрагент1.Записать();
КонецЕсли;
Иначе
Если ВыборкаДоговора.Ссылка.ВидДоговора=Перечисления.
ВидыДоговоровКонтрагентов.СПоставщиком тогда
НоваяСтрока.Договор = ВыборкаДоговора.Ссылка;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если СокрЛП(НоваяСтрока.Договор)="" тогда
СоздатьДоговор(ПР, Контрагент)
КонецЕсли;
КонецЕсли;

// по счету ищем банковский счет для контрагента. Если нет - создать.
НоваяСтрока.СчетКонтрагента = НайтиСчетКонтрагента(Строка.РСчет, Контрагент);
Если клЗначениеНеЗаполнено(НоваяСтрока.СчетКонтрагента) Тогда
НоваяСтрока.СчетКонтрагента = ДобавитьСчетКонтрагента(Контрагент, Строка.РСчет, Строка.МФО, Строка.БанкНаименование);
КонецЕсли;


//НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
//4.2.3 Визначимо ставку ПДВ для заданого контрагенту з регіструвідомостей
Если Конфигурация = "УПП" Или Конфигурация = "БУ" Или Конфигурация = "УТП" Тогда

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

//4.2.4 Заповнимо суму ПДВ, якщо заповнене поле "заказ" та суми по рахунках співпадають
//якщо знайдена сделка то суму ПДВ ставимо із сделки
Если (Строка(НоваяСтрока.Сделка)<>"") тогда //Документы.СчетНаОплатуПокупателю.ПустаяСсылка() тогда
// ПЗР=СуммаНДССНалогомНаРекламуДокумента(НоваяСтрока.Сделка);
//включимо заокруглення при обчисленні податку на рекламу
//Если (НоваяСтрока.Сделка.СуммаДокумента=НоваяСтрока.Приход) тогда
//СуммаСНДСПЗР - в цій змінній визначимо суму - податок з реклами
//ПДВ обраховуємо з врахуванням ПЗР та без нього
Если ((НоваяСтрока.Сделка.СуммаДокумента>=СуммаСНДСПЗР-0.2)и(НоваяСтрока.Сделка.СуммаДокумента<=СуммаСНДСПЗР+0.2))
или(НоваяСтрока.Сделка.СуммаДокумента=
НоваяСтрока.Приход)тогда
//Суму з ПДВ візьмемо разом з податком на рекламу
НоваяСтрока.СуммаНДС=УчетНДС.
ПолучитьНДСДокумента(НоваяСтрока.Сделка);
//тепер перевіримо, якщо є реклама - то поставимо праперець реклами
Если (НоваяСтрока.Сделка.СуммаДокумента<>НоваяСтрока.Приход)
и((НоваяСтрока.
Сделка.СуммаДокумента>=СуммаСНДСПЗР-0.2)и(НоваяСтрока.Сделка.СуммаДокумента<=СуммаСНДСПЗР+0.2)) тогда
НоваяСтрока.ФлагРеклама=истина;
КонецЕсли;
//проведемо перевірку про правильність нарахування ПДВ
КонецЕсли;
КонецЕсли;
// определяем статус

Если клЗначениеНеЗаполнено(НоваяСтрока.Контрагент) Тогда
НоваяСтрока.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты;
Иначе
// договор должен быть заполнен всегда
Если клЗначениеНеЗаполнено(НоваяСтрока.Договор) Тогда
НоваяСтрока.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты;
Иначе

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

КонецЕсли;
КонецЕсли;
КонецЕсли; //коли контрагента не знайдено
КонецЦикла;

// 4.5 Удаляем с тзПлатежи, те которые уже есть в тчИмпорт
// (совпадение по ЮрФизЛицу и приходу-расходу) (УТ)
// (совпадение по Контрагенту и приходу-расходу) (УПП)

МассивУдаляемыхСтрок = Новый Массив;

Для Каждого Строка Из тзПлатежи Цикл
ПервоеСовпадениеПриход = Истина;
ПервоеСовпадениеРасход = Истина;
Для Каждого СтрокаИмпорт Из тчИмпорт Цикл

СтрокаСравнения = "Контрагент";
Если (Строка[СтрокаСравнения] = СтрокаИмпорт[СтрокаСравнения]) Тогда
// приход-расход
Если (Строка.Приход > 0) И (СтрокаИмпорт.Приход > 0) И (Строка.Приход = СтрокаИмпорт.Приход) Тогда
// совпало
Если ПервоеСовпадениеПриход Тогда
// эту строку из тзПлатежи удаляем
МассивУдаляемыхСтрок.Добавить(Строка);
ПервоеСовпадениеПриход = Ложь;
КонецЕсли;
КонецЕсли;
Если (Строка.Расход > 0) И (СтрокаИмпорт.Расход > 0) И (Строка.Расход = СтрокаИмпорт.Расход ) Тогда
// совпало
Если ПервоеСовпадениеРасход Тогда
// эту строку из тзПлатежи удаляем
МассивУдаляемыхСтрок.Добавить(Строка);
ПервоеСовпадениеРасход = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл
тзПлатежи.Удалить(ЭлементМассива);
КонецЦикла;

// 5. Объединяем с тчИмпорт, в которой сейчас существующие платежи. Устанавливаем статусы

Для Каждого Строка Из тзПлатежи Цикл
НоваяСтрока = тчИмпорт.Добавить();

НоваяСтрока.Контрагент = Строка.Контрагент;

НоваяСтрока.Приход = Строка.Приход;
НоваяСтрока.Расход = Строка.Расход;

НоваяСтрока.НомерПП = Строка.НомерПП;

Если НоваяСтрока.Приход > 0 Тогда
НоваяСтрока.ВидДокумента = ПолучитьИмяОбъектаКонфигурации
("ТипДокументаВыпискаПриходПоУмолчанию")
ИначеЕсли НоваяСтрока.Расход > 0 Тогда
НоваяСтрока.ВидДокумента = ПолучитьИмяОбъектаКонфигурации
("ТипДокументаВыпискаРасходПоУмолчанию")
КонецЕсли;
НоваяСтрока.СтавкаНДС = Строка.СтавкаНДС;
НоваяСтрока.СуммаНДС = Строка.СуммаНДС;
НоваяСтрока.ФлагРеклама = Строка.ФлагРеклама;

НоваяСтрока.Сделка = Строка.Сделка;
НоваяСтрока.СчетКонтрагента = Строка.СчетКонтрагента;
НоваяСтрока.Договор = Строка.Договор;

НоваяСтрока.Содержание = Строка.Содержание;

НоваяСтрока.Статус = Строка.Статус;
НоваяСтрока.СписокНайденныхСделок = Строка.СписокНайденныхСделок;
НоваяСтрока.Флаг = Истина;

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

КонецЦикла;

// 6. Сортируем тчИмпорт
СортировкаТчИмпорт();

КонецПроцедуры // ИмпортВыписки()

// Читает существующие документы выписок
//
// Параметры:
//
// <Параметр1> – <Тип.Вид> – <описание параметра>
// <продолжение описания параметра>
// <Параметр2> – <Тип.Вид> – <описание параметра>
// <продолжение описания параметра>
//
Процедура ПрочитатьСуществующиеПлатежи()

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

//Запрос к документам: выписки (СтрокаВыпискиПриход и СтрокаВыпискиРасход)

Запрос = Новый Запрос;

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

ТекстВыбрать = "ВЫБРАТЬ
| Ссылка,
| Контрагент КАК Контрагент,
| Ответственный КАК Ответственный,
| СуммаДокумента,
| ДоговорКонтрагента КАК Договор,";

ТекстГде = "ГДЕ
| Дата МЕЖДУ &ДатаНач И &ДатаКон И
| Организация = &Организация И
| СчетОрганизации = &БанковскийСчет И
| ПометкаУдаления = Ложь И
| Проведен = Истина
|";

//здесь в цикле по списку документов из ПолучитьИмяОбъектаКонфигурации("ТипДокументаВыпискаПриход")
СписокВыпискаПриход = ПолучитьИмяОбъектаКонфигурации("ТипДокументаВыпискаПриход");
ТекстЗапроса = "";
Для Каждого ДокументВыписки Из СписокВыпискаПриход Цикл
ДокументВыпискиПриход = ДокументВыписки.Значение;
ТекстЗапроса = ТекстЗапроса + ТекстВыбрать + "
| ""Приход"" КАК ПриходРасход
|
|ИЗ
| Документ." + ДокументВыпискиПриход + "
|" + ТекстГде + "
|
|ОБЪЕДИНИТЬ
|";
КонецЦикла;

СписокВыпискаРасход = ПолучитьИмяОбъектаКонфигурации("ТипДокументаВыпискаРасход");
Для Каждого ДокументВыписки Из СписокВыпискаРасход Цикл
ДокументВыпискиРасход = ДокументВыписки.Значение;
ТекстЗапроса = ТекстЗапроса + ТекстВыбрать + "
| ""Расход"" КАК ПриходРасход
|
|ИЗ
| Документ." + ДокументВыпискиРасход + "
|" + ТекстГде + "
|
|ОБЪЕДИНИТЬ
|";
КонецЦикла;
//удалить последнее ОБЪЕДИНИТЬ
ТекстЗапроса = Сред(ТекстЗапроса,1,СтрДлина(ТекстЗапроса) - СтрДлина("|ОБЪЕДИНИТЬ"));

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

Пока Выборка.Следующий() Цикл

НоваяСтрока = тчИмпорт.Добавить();

НоваяСтрока.Контрагент = Выборка.Контрагент;


НоваяСтрока.Приход = ?(Выборка.ПриходРасход = "Приход",Выборка.СуммаДокумента, 0);
НоваяСтрока.Расход = ?(Выборка.ПриходРасход = "Расход",Выборка.СуммаДокумента, 0);

НоваяСтрока.Договор = Выборка.Договор;

Если Конфигурация = "УТ" Тогда
ИначеЕсли Конфигурация = "УПП" Тогда

КонецЕсли;

//сделка и т.п. внутри таб части "РасшифровкаПлатежа"
НоваяСтрока.СтавкаНДС = Выборка.Ссылка.РасшифровкаПлатежа[0].СтавкаНДС;
НоваяСтрока.Сделка = Выборка.Ссылка.РасшифровкаПлатежа[0].Сделка;

НоваяСтрока.Ответственный = Выборка.Ответственный;

НоваяСтрока.Содержание = Выборка.Ссылка.Комментарий;
НоваяСтрока.Документ = Выборка.Ссылка;
НоваяСтрока.ВидДокумента = Выборка.Ссылка.Метаданные().Имя;

НоваяСтрока.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж;
НоваяСтрока.Флаг = Истина;

КонецЦикла;

// Сортируем тчИмпорт
СортировкаТчИмпорт();
КонецПроцедуры // ПрочитатьСуществующиеПлатежи()

// Обновляет данные в информационной строке импорта
//
// Параметры: нет
//
//
Процедура ОбновитьИнфоСтрокуИмпорт()

// сколько платежей выбрано
ВыбраноПлатежей = 0;
ВсегоПлатежей = 0;
СуммаПриходаВсего = 0;
СуммаРасходаВсего = 0;
СуммаПриходаВыбрано = 0;
СуммаРасходаВыбрано = 0;

// сколько уже существующих, новых, отредактированых платежей
// сумма прихода и расхода

Для Каждого Строка Из тчИмпорт Цикл

ВсегоПлатежей = ВсегоПлатежей + 1;
СуммаПриходаВсего = СуммаПриходаВсего + Строка.Приход;
СуммаРасходаВсего = СуммаРасходаВсего + Строка.Расход;

Если Строка.Флаг Тогда
ВыбраноПлатежей = ВыбраноПлатежей + 1;
СуммаПриходаВыбрано = СуммаПриходаВыбрано + Строка.Приход;
СуммаРасходаВыбрано = СуммаРасходаВыбрано + Строка.Расход;
КонецЕсли;
КонецЦикла;

// обновляем данные в информационной строке

ИнфоСтрокаИмпорт = НСтр("ru='Всего платежей: ';uk='Всього платежів: '") + Формат(ВсегоПлатежей, "ЧДЦ=0") + НСтр("ru=' Приход: ';uk=' Прихід: '") + Формат(СуммаПриходаВсего, "ЧЦ=16; ЧДЦ=2") + НСтр("ru=' Расход: ';uk=' Видаток: '") + Формат(СуммаРасходаВсего, "ЧЦ=16; ЧДЦ=2");
ИнфоСтрокаИмпорт = ИнфоСтрокаИмпорт + Символы.ПС;
ИнфоСтрокаИмпорт = ИнфоСтрокаИмпорт +
НСтр("ru='Выбрано платежей: ';uk='Вибрано платежів: '") + Формат(ВыбраноПлатежей, "ЧДЦ=0") + НСтр("ru=' Приход: ';uk=' Прихід: '") + Формат(СуммаПриходаВыбрано, "ЧЦ=16; ЧДЦ=2") + НСтр("ru=' Расход: ';uk=' Видаток: '") + Формат(СуммаРасходаВыбрано, "ЧЦ=16; ЧДЦ=2");


КонецПроцедуры // ОбновитьИнфоСтрокуИмпорт()

// Процедура проверяет, заполнены ли все реквизиты выписки
// также проверяет модифицировнность существующих документов
// должна вызываться при изменении КАЖДОЙ ячейки табличного поля тпИмпорт
// (кроме Флаг)
// Меняет статус строки выписки
//
// Параметры:
//
// ТС – текущая строка тпИмпорт
//
Процедура ЗаполненыВсеРеквизитыВыписки(ТС)

// все ли реквизиты выписки заполнены?
// имеет более высокий приоритет над "модифированностью"
// так как если реквизиты не заполнены - это однозначно статус - НеобходимоЗаполнитьРеквизиты

ЗаполненыВсе = Истина;
Мофицированность = Ложь;
ЕстьДокумент = Истина;
Документ = ТС.Документ;

Если Документ = Неопределено Или клЗначениеНеЗаполнено(Документ.Номер) Тогда //вторая проверка в случае, если документ удалён физически
ЕстьДокумент = Ложь;
ТС.Документ = Неопределено;
КонецЕсли;

Если клЗначениеНеЗаполнено(ТС.Контрагент) Тогда
ЗаполненыВсе = Ложь;
ИначеЕсли ЕстьДокумент Тогда
Если ТС.Контрагент <> Документ.Контрагент Тогда
Мофицированность = Истина;
КонецЕсли;
КонецЕсли;

// приход - расход
Если ЕстьДокумент Тогда
Если Документ.Метаданные().Имя = ПолучитьИмяОбъектаКонфигурации("ТипДокументаВыпискаПриход") Тогда
// приход
Если ТС.Приход <> Документ.СуммаДокумента Тогда
Мофицированность = Истина;
КонецЕсли;
Иначе
// расход
Если ТС.Расход <> Документ.СуммаДокумента Тогда
Мофицированность = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;

// ставка НДС
Если клЗначениеНеЗаполнено(ТС.СтавкаНДС) Тогда
ЗаполненыВсе = Ложь;
ИначеЕсли ЕстьДокумент Тогда
КонецЕсли;

// договор - должен быть всегда
Если клЗначениеНеЗаполнено(ТС.Договор) Тогда
ЗаполненыВсе = Ложь;
ИначеЕсли ЕстьДокумент Тогда
Если ТС.Договор <> Документ.ДоговорКонтрагента Тогда
Мофицированность = Истина;
КонецЕсли;
КонецЕсли;

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

// мофицированность
Если ЕстьДокумент Тогда
Если ТС.Сделка <> Документ.РасшифровкаПлатежа[0].Сделка Тогда
Мофицированность = Истина;
КонецЕсли;
КонецЕсли;

// содержание подразделение-ответственный - только на мофицированность
Если ЕстьДокумент Тогда

Если ТС.Содержание <> Документ.Комментарий Тогда
Мофицированность = Истина;
КонецЕсли;
Если ТС.Ответственный <> Документ.Ответственный Тогда
Мофицированность = Истина;
КонецЕсли;

КонецЕсли;

// установим статус строки
Если НЕ ЗаполненыВсе Тогда
ТС.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты;
Иначе
Если ЕстьДокумент Тогда
Если Мофицированность Тогда
ТС.Статус = СтатусыСтрокИмпорта.ГотовКЗаписи;
Иначе
ТС.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж;
КонецЕсли;
Иначе
ТС.Статус = СтатусыСтрокИмпорта.ГотовКЗаписи;
КонецЕсли;
КонецЕсли;

// применим сортировку по настройкам
СортировкаТчИмпорт();
КонецПроцедуры // ЗаполненыВсеРеквизитыВыписки()

// Формирует документы-выписки по тчИмпорт
// для успешно сформированных документов будет установлен тчИмпорт.Документ
// и Статус будет установлен в существующий платеж
//
// Параметры: нет
//
Процедура СформироватьВыписки()

МассивДокументов = Новый Массив;

Для Каждого Строка Из тчИмпорт Цикл

Если Строка.Флаг Тогда

// надо импортировать эту строку
// статус "СуществующийПлатеж" не трогаем, остальные пытаемся записать и при
// установленных настройках провести
Если Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж Тогда
Продолжить;
КонецЕсли;

НовыйДокумент = Истина;
Если Строка.Документ = Неопределено Или клЗначениеНеЗаполнено(Строка.Документ.Номер) Тогда //вторая проверка в случае, если документ удалён физически
// создаем новый документ

ТипДокумента = Строка.ВидДокумента;
Если ПустаяСтрока(ТипДокумента) Тогда
Сообщить("Для строки """ + Строка.НомерСтроки + """ не выбран вид документа!");
Продолжить;
КонецЕсли;
Док = Документы[ТипДокумента];

докОб = Док.СоздатьДокумент();
Иначе
// перезаписываем измененный старый документ
докОб = Строка.Документ.ПолучитьОбъект();
НовыйДокумент = Ложь;
КонецЕсли;


// заполняем реквизиты документа
докОб.Контрагент = Строка.Контрагент;
докОб.СуммаДокумента = ?(Строка.Приход > 0, Строка.Приход, Строка.Расход);
докОб.Ответственный = Строка.Ответственный;

Если Конфигурация = "УТ" Тогда
ИначеЕсли Конфигурация = "УПП" Тогда
КонецЕсли;


//в таб части РасшифровкаПлатежа
докОб.РасшифровкаПлатежа.Очистить();
РасшифровкаПлатежа = докОб.РасшифровкаПлатежа.Добавить();
Попытка
РасшифровкаПлатежа.Сделка = Строка.Сделка;
Исключение
КонецПопытки;
РасшифровкаПлатежа.ДоговорКонтрагента = Строка.Договор;

докОбМетаданные = докОб.Метаданные();
Если клЕстьРеквизит("БанковскийСчет",докОбМетаданные) Тогда
докОб.БанковскийСчет = Счет;
ИначеЕсли клЕстьРеквизит("СчетОрганизации",докОбМетаданные) Тогда
докОб.СчетОрганизации = Счет;
КонецЕсли;

докОб.Организация = Организация;
докОб.Комментарий = Строка.Содержание;

Если клЕстьРеквизит("СчетКонтрагента",докОбМетаданные) Тогда
докОб.СчетКонтрагента = Строка.СчетКонтрагента;
КонецЕсли;

Если клЕстьРеквизит("НомерПоручения",докОбМетаданные) Тогда
докОб.НомерПоручения = Строка.НомерПП;
КонецЕсли;

// вид учета

Если Конфигурация = "УПП" Или Конфигурация = "УТ" Тогда
Если Не (докОб.ОтраженоВОперУчете
или докОб.ОтражатьВБухгалтерскомУчете или докОб.ОтражатьВНалоговомУчете) Тогда

докОб.ОтраженоВОперУчете = Истина;
докОб.ОтражатьВБухгалтерскомУчете = Истина;
докОб.ОтражатьВНалоговомУчете = Истина;

КонецЕсли;
Иначе
Если Не (докОб.ОтражатьВНалоговомУчете) Тогда
докОб.ОтражатьВНалоговомУчете = Истина;
КонецЕсли;
КонецЕсли;

Если Конфигурация = "УТП" тогда
докОб.ОтражатьВУправленческомУчете = Истина;
докОб.ОтражатьВБухгалтерскомУчете = Истина;
Конецесли;

Если НовыйДокумент Тогда
// дата для нового
докОб.Дата = ДатаВыписки;
// номер для нового
клУстановитьНомерДокумента(докОб);
КонецЕсли;

докОб.Оплачено = Истина;

Если клЕстьРеквизит("ДатаОплаты",докОбМетаданные) Тогда
докОб.ДатаОплаты = ДатаВыписки;
ИначеЕсли клЕстьРеквизит("ДатаВыписки",докОбМетаданные) Тогда
докОб.ДатаВыписки = ДатаВыписки;
КонецЕсли;

// валюта - из счета
докОб.ВалютаДокумента = Счет.ВалютаДенежныхСредств;
// курс, кратность
СтруктураКурсаДокумента = клКурсДляВалюты(докОб.ВалютаДокумента, докОб.Дата);
докОб.КурсДокумента = СтруктураКурсаДокумента.Курс;
докОб.КратностьДокумента = СтруктураКурсаДокумента.Кратность;

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

//в таб части РасшифровкаПлатежа
РасшифровкаПлатежа.КурсВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Курс;
РасшифровкаПлатежа.КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
РасшифровкаПлатежа.СтавкаНДС = Строка.СтавкаНДС;
РасшифровкаПлатежа.СуммаПлатежа = докОб.СуммаДокумента;
РасшифровкаПлатежа.СуммаВзаиморасчетов = докОб.СуммаДокумента;

ЗначениеСтавкиНДС = клПолучитьСтавкуНДС(РасшифровкаПлатежа.СтавкаНДС);

//СуммуПДВ будемо розносити наступним чином: якщо в рядку є сума ПДВ то рознесемо - інакше автомат. обрахунок
Если Строка.СуммаНДС<>0 тогда
РасшифровкаПлатежа.СуммаНДС = Строка.СуммаНДС;
Иначе
РасшифровкаПлатежа.СуммаНДС = РасшифровкаПлатежа.СуммаПлатежа*ЗначениеСтавкиНДС
/(100+ЗначениеСтавкиНДС);
КонецЕсли;

Если клЕстьРеквизит("НазначениеПлатежа",докОбМетаданные) Тогда
докОб.НазначениеПлатежа = клСформироватьНазначениеПлатежа(докОб,РасшифровкаПлатежа);
КонецЕсли;

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

// вид операции
докОб.ВидОперации = Перечисления[докОб.ВидОперации.Метаданные().Имя][0];

СпСчБезИзм = Новый СписокЗначений;//список рахунків для яких є стандартний вид операцій
СпСчБезИзм.Добавить("36");СпСчБезИзм.Добавить("63");
СпСчБезИзм.Добавить("37");

Если Конфигурация = "УПП" Или Конфигурация = "БУ" Или Конфигурация = "УТП" Тогда
// счета

Если ПолучитьИмяОбъектаКонфигурации("ТипДокументаВыпискаПриход").
НайтиПоЗначению(Строка.ВидДокумента) <> Неопределено Тогда
//Если Строка.ВидДокумента="ПлатежноеПоручениеВходящее" тогда
//зміни по ПДВ
СчетаУчета= УправлениеВзаиморасчетами.
ПолучитьСчетаРасчетовСКонтрагентом(Организация, Строка.Контрагент, Строка.Договор);
РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;//НастройкиОбработки.
ВхСчетРасчетов;
РасшифровкаПлатежа.СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателя;//НастройкиОбработки.
ВхСчетАвансов;
РасшифровкаПлатежа.СчетУчетаНДС = СчетаУчета.СчетУчетаНДСПродаж;
РасшифровкаПлатежа.СчетУчетаНДСПодтвержденный = СчетаУчета.СчетУчетаНДСПродажПодтвержденный;
РасшифровкаПлатежа.НалоговоеНазначение = СчетаУчета.НалоговоеНазначениеПродаж;
РасшифровкаПлатежа.СтатьяВДВР = СчетаУчета.СтатьяВаловыхДоходов;

Если (1=0) тогда //Выборка.Следующий() тогда
РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом = выборка.СчетУчетаРасчетовСПокупателем;//НастройкиОбработки.
ВхСчетРасчетов;
РасшифровкаПлатежа.СчетУчетаРасчетовПоАвансам = выборка.СчетУчетаАвансовПолученных;//НастройкиОбработки.
ВхСчетАвансов;
РасшифровкаПлатежа.СчетУчетаНДС = выборка.СчетУчетаНДСПродаж;
РасшифровкаПлатежа.СчетУчетаНДСПодтвержденный = выборка.СчетУчетаНДСПродажПодтвержденный;
//РасшифровкаПлатежа.СтатьяВаловыхДоходов = выборка.СтатьяВаловыхДоходов;
РасшифровкаПлатежа.НалоговоеНазначение = Выборка.НалоговоеНазначениеПродаж;
РасшифровкаПлатежа.СтатьяВДВР = Выборка.СтатьяВаловыхДоходов;
КонецЕсли;
//визначимо вид операції для платіжних документів в залежності по
Если СпСчБезИзм.НайтиПоЗначению(Сред(СокрЛП(РасшифровкаПлатежа.
СчетУчетаРасчетовСКонтрагентом),1,2))=Неопределено тогда //коли рахунок не підрахунок з контрагентами
//ДокОб.ВидОперации = Перечисления.
ВидыОперацийПоступлениеБезналичныхДенежныхСредств.
ПрочееПоступлениеБезналичныхДенежныхСредств;
//ДокОб.СчетУчетаРасчетовСКонтрагентом = РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом;
КонецЕсли;
Иначе
//РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом = НастройкиОбработки.ИсхСчетРасчетов;РасшифровкаПлатежа.
СчетУчетаРасчетовПоАвансам = НастройкиОбработки.ИсхСчетАвансов;
//зміни по ПДВ
СчетаУчета = УправлениеВзаиморасчетами.
ПолучитьСчетаРасчетовСКонтрагентом(Организация, Строка.Контрагент, Строка.Договор);
РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом =СчетаУчета.СчетРасчетов;
РасшифровкаПлатежа.СчетУчетаРасчетовПоАвансам =СчетаУчета.СчетАвансов;
РасшифровкаПлатежа.СчетУчетаНДС = СчетаУчета.СчетУчетаНДСПриобретений;
РасшифровкаПлатежа.СчетУчетаНДСПодтвержденный = СчетаУчета.СчетУчетаНДСПриобретенийПодтвержденный;
РасшифровкаПлатежа.НалоговоеНазначение = СчетаУчета.НалоговоеНазначениеПриобретений;
РасшифровкаПлатежа.СтатьяВДВР = СчетаУчета.СтатьяВаловыхРасходов;
Если (1=0) тогда //Выборка.Следующий() тогда
РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом =Выборка.СчетУчетаРасчетовСПоставщиком;
РасшифровкаПлатежа.СчетУчетаРасчетовПоАвансам =Выборка.СчетУчетаАвансовВыданных;
РасшифровкаПлатежа.СчетУчетаНДС = выборка.СтавкаНДСПриобретений;
РасшифровкаПлатежа.СчетУчетаНДСПодтвержденный = выборка.СчетУчетаНДСПриобретенийПодтвержденный;
//РасшифровкаПлатежа.СтатьяВаловыхДоходов = выборка.СтатьяВаловыхДоходов;
РасшифровкаПлатежа.НалоговоеНазначение = Выборка.НалоговоеНазначениеПриобретений;
РасшифровкаПлатежа.СтатьяВДВР = Выборка.СтатьяВаловыхРасходов;
КонецЕсли;
//визначимо вид операції для платіжних документів в залежності від рахунку: сюди будемо прив'язувати систему фільтрів
Если СпСчБезИзм.НайтиПоЗначению(Сред(СокрЛП(РасшифровкаПлатежа.
СчетУчетаРасчетовСКонтрагентом),1,2))=Неопределено тогда //коли рахунок не підрахунок з контрагентами
ДокОб.ВидОперации = Перечисления.ВидыОперацийППИсходящее.
ПрочееСписаниеБезналичныхДенежныхСредств;
ДокОб.СчетУчетаРасчетовСКонтрагентом = РасшифровкаПлатежа.СчетУчетаРасчетовСКонтрагентом;
ДокОб.СпособОтраженияПрочегоСписанияДенежныхСтредствВНУ=
Перечисления.
СпособыОтраженияПрочегоСписанияДенежныхСредствВНУ.
ВаловыеРасходы;
ДокОб.СтатьяВДВРПриПрочемСписании = Справочники.СтатьиНалоговыхДеклараций.
НП_ДругиеВР_Страхование;//НайтиПоКоду("00025");
ДокОб.НалоговоеНазначениеПриПрочемСписании= Справочники.НалоговыеНазначенияАктивовИЗатрат.ХозДеятельность;
ДокОб.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПеречислениеНалога;
//ДокОб.СубконтоДт1 = ПланыСчетов.Хозрасчетный.СоздатьСчет();
//кДокОб.СчетУчетаРасчетовСКонтрагентом.Субконто1;
//ДокОб.СубконтоДт2 = ДокОб.СчетУчетаРасчетовСКонтрагентом.Субконто2;
//ДокОб.СубконтоДт3 = ДокОб.СчетУчетаРасчетовСКонтрагентом.Субконто3;
КонецЕсли;

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

Если клЕстьРеквизит("СчетУчетаДенежныхСредств",докОбМетаданные) Тогда
докОб.СчетУчетаДенежныхСредств = НастройкиОбработки.СчетУчетаДС;
//докОб.СчетУчетаДенежныхСредств = ПланыСчетов.Хозрасчетный.НайтиПоКоду("311");
ИначеЕсли клЕстьРеквизит("СчетБанк",докОбМетаданные) Тогда
докОб.СчетБанк = НастройкиОбработки.СчетУчетаДС;
КонецЕсли;


// пытаемся записать
Попытка
докОб.Записать();
// записали - поменяем сразу статус на существующий платеж
Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж;
Исключение
//
КонецПопытки;

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

// добавим в массив созданных
МассивДокументов.Добавить(докОб);

// запишем в строку ссылку на созданный документ
Строка.Документ = докОб.Ссылка;

КонецЕсли;
КонецЦикла;

// применим сортировку по настройкам
СортировкаТчИмпорт();

// если установлена настройка - открываем все созданные и перезаписанные документы
Если НастройкиОбработки.ОткрыватьСозданныеДокументы Тогда
Для Каждого ЭлементМассива Из МассивДокументов Цикл
ЭлементМассива.ПолучитьФорму("ФормаДокумента").Открыть();
КонецЦикла;
КонецЕсли;

КонецПроцедуры // СформироватьВыписки()

// Сортирует тчИмпорт согласно настроек
//
// Параметры: УстанавливатьТекущуюСтроку - булево
// При истина устанавливается необходимость изменения текущей строки в тпИмпорт
// Само изменение текущей строки происходит в ОбновлениеОтображения() -
// здесь текущая строка устанавливаться не хочет
//
Процедура СортировкаТчИмпорт(УстанавливатьТекущуюСтроку = Истина)
// применим сортировку по настройкам
// запомним текущую строку тпИмпорт
Если УстанавливатьТекущуюСтроку Тогда
Если ЭлементыФормы.тпИмпорт.ТекущаяСтрока <> Неопределено Тогда
ТС = ЭлементыФормы.тпИмпорт.ТекущаяСтрока.НомерСтроки - 1;
Иначе
ТС = 0;
КонецЕсли;
КонецЕсли;
Если ТипСортировки <> Неопределено ИЛИ ТипСортировки <> "" Тогда
//сортируем таблицу значений "тчИмпорт.Выгрузить()" табличной части "тчИмпорт"
тзИмпорт = Сортировать(тчИмпорт.Выгрузить(), ТипСортировки);
//загружаем "тзИмпорт" в "тчИмпорт"
тчИмпорт.Загрузить(тзИмпорт);
КонецЕсли;
Если УстанавливатьТекущуюСтроку И ТС > 0 Тогда
НадоОбновитьТекущуюСтроку = Истина;
НомерНовойТекущейСтроки = ТС;
КонецЕсли;
КонецПроцедуры // СортировкаТчИмпорт()


Обработка


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


.



Обработки Клиент-банк для УТП Украина Переделанная программа ABBYY под УТП Умеет работать разными шаблонами файлов возможность дописать любой новый шаблон внедрен модуль для работы налогом на рекламу подбор заказов ведется по счетам сумма НДС подставляется из найденного заказа Все стандартные функции обработки поиск контрагентов ЕДРПОУ при этом система предлагает выбрать контрагента или создать нового договор если контрагент не найден