"Неверный реквизит платежного документа КодНазПлатежа". Исправляем обработку КлиентБанк

01.06.20

Интеграция - Обмен с интернет-банком

C 01.06.2020 банки требуют указывать реквизит КодНазПлатежа (код вида дохода) в выписках. При этом его заполнение необязательно. Соответственно в старых версиях обработок "Клиент банк" не загружаются файлы с плат.поручениями.

Данная ошибка исправляется очень просто:

1. Открываем конфигуратор и находим нашу обработку "КлиентБанк" в списке объектов конфигурации.

2. Открываем модуль объекта.

3. Находим фрагмент кода:

РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6";
	

и заменяем на:

РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа";

 

4. Находим фрагмент кода:

	СоздатьКолонкуВТаблице(Таб, ТабПоле, "НазначениеПлатежа6",   Т_Строка,    "Назначение платежа, стр. 6", НеВидимая);

и добавляем ниже две строки:

	СоздатьКолонкуВТаблице(Таб, ТабПоле, "КодВыплат",  			 Т_Строка,    "КодВыплат",					НеВидимая);
	СоздатьКолонкуВТаблице(Таб, ТабПоле, "КодНазПлатежа",   	 Т_Строка,    "КодНазПлатежа",				НеВидимая);	

 

5. Обновляем конфигурацию.

6. Готово.

Неверный реквизит платежного документа КодНазПлатежа

См. также

Автоматическая обработка документов по банку при загрузке банковской выписки в 1С

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

12000 руб.

21.03.2023    8142    29    12    

43

Обмен с клиентом банка для Беларуси

Банковские операции Обмен с интернет-банком Платформа 1С v8.3 Бухгалтерский учет Конфигурации 1cv8 1С:Конвертация данных 1С:Бухгалтерия 3.0 Беларусь Бухгалтерский учет Платные (руб)

Типовая обработка "Клиент-банк" из конфигурации 1С "Бухгалтерия для Беларуси, редакция 2.1" корректно работает с выписками только банка "Дабрабыт", до 28.01.2019 "Москва-Минск". А бухгалтеру нужно работать и с другими банками и с другими конфигурациями. Для этого было разработано расширение, которое позволит решить данную проблему!

10.10.2017    36371    69    Xershi    41    

57

SALE! 20%

Обмен с клиентом банка для БП 3.0, ERP 2.4, ERP 2.5 с дополнительными правилами загрузки

Обмен с интернет-банком Банковские операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Выписка клиент-банка загружается и обрабатывается по Вашим правилам. Заполнение реквизитов документов, анализ назначения платежа. Работа с клиент банком не отличается от типового варианта, а документы автоматически заполняются так, как нужно вам. Дополнительная обработка, работающая совместно с основным расширением позволяет подключать собственные произвольные алгоритмы.

20400 16320 руб.

03.04.2013    122217    243    377    

157

Загрузка банковской выписки из Excel и формирование файла формата 1CClientBankExchange (kl_to_1c)

Банковские операции Обмен с интернет-банком Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Обработка создания файла по стандарту обмена с системами "Клиент банка" kl_to_1c.txt Формат файла обмена Российская Федерация, версия 1.03 При восстановлении учета в случае отсутствия в 1с банковских выписок (например, р/с в банке закрыт в связи с банкротством и доступ к выгрузке из клиент-банка невозможен), можно запросить у банка выписку за период в формате Excel. С помощью этой обработки создается файл формата 1CClientBankExchange, в 1с77 он назывался kl_to_1c.txt который загружается штатными средствами в 1с8. При этом будут созданы загружаемые контрагенты и их р/с.

3840 руб.

19.04.2019    41644    128    52    

62

Загрузка реестра платежей физических лиц из Сбербанка

Банковские операции Обмен с интернет-банком Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка загружает реестры платежей Сбербанка в документы "Поступление на расчетный счет". (Возможность покупки за рубли или StartMoney).

6000 руб.

16.07.2020    19250    33    10    

12
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 696 01.06.20 14:25 Сейчас в теме
(8) К ERP инструкция не подходит.
Либо, я разучился пользоваться поиском.

1С:ERP Управление предприятием 2 (2.4.11.98) (http://v8.1c.ru/erp/)
Copyright © ООО "1С-Софт", 2004-2019. Все права защищены
(http://www.1c.ru)
2. Darklight 32 01.06.20 15:01 Сейчас в теме
Судя по всему - в 1С Бухгалтерии 3.0 (про 2.0 не знаю) эти свойства тоже не загружаются. Разница лишь в том, что в бухгалтерии эти свойства игнорируются (с молчаливым занесением в протокол-лог), а в УПП - вот выдаётся ошибка!
А раз проблема есть в 1С: Бухгалтерии 3.0 то она скорее всего есть и в ERP 2.4 - но код загрузки ERP 2.4 ближе к Бухгалтерии 3.0 - а значит и инструкция должна быть от неё (ибо от УПП отличий там в алгоритмах очень много), как и для 1С: КА т.е. ошибки не будет, но и данные свойства не загрузятся в базу.

Другое дело - а так уж ли нужны или эти свойства в базе уже после поступления документа из банка? Думаю - что не особо то и нужны (и их просто можно было бы игнорировать как в Бухгалтерии 3.0, ну и ждать когда 1С сама внесёт правки в очередном обновлении) - ну а кому не в терпёж - то, да - могут и загрузку вручную поправить....

Единственное замечание к статье - это так как вносятся исправления - типовой код лучше трогать как можно меньше (особенно там, где ожидается появление типовых обновлений) - и не изменять те, строки кода, которые можно не изменять, например строку
"РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6";"
лучше отступить одну пустую строку вниз от неё и написать так
РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6";

РеквизитыПлДок_НазначениеНеОбязательные = РеквизитыПлДок_НазначениеНеОбязательные + ",КодВыплат,КодНазПлатежа"; //код изменён - исправление типовой ошибки (релиз 1.3.140.2)
4. Darklight 32 01.06.20 15:46 Сейчас в теме
(2)Подумал подумал - точно - а зачем эти свойства вообще обрабатывать? - расходные банковские выписки в УПП загружаются в Платёжные ордера на списание денежных средств - а там таких реквизитов нет в принципе - значит и обрабатывать их нет смысла - вот в бухгалтерии 3.0 они и просто игнорируются (а УПП - вот да - просто тоже надо игнорировать - поэтому, я вообще сделал бы как в бухгалтерии - ВСЕ не распознанные тэги я бы игнорировал:

Тогда в модуле обработки КлиентБанк надо найти вот этот текст:

"Сообщить("Неверный реквизит платежного документа, строка " + (Импорт_ТекущаяСтрока - 1) + " : " + СтрокаРазбора);"

и заменить там код (а вернее просто вставить перед ним, чтобы не трогать типовой):

				// неправиьный реквизит заголовка
				Сообщить("Неверный реквизит платежного документа, строка " + (Импорт_ТекущаяСтрока - 1) + " : " + СтрокаРазбора);
				Возврат Ложь;



на код


				продолжить; //код изменён - игнорировать в загрузке неиспользуемые тэги

				// неправиьный реквизит заголовка
				Сообщить("Неверный реквизит платежного документа, строка " + (Импорт_ТекущаяСтрока - 1) + " : " + СтрокаРазбора);
				Возврат Ложь;

Показать



Будут пропускаться ВСЕТЭГИ, не используемые в алгоритме загрузки!

Ну а в Бухгалтерии 3.0 и ЕРП 2.4 ничего трогать не надо - там и так все такие тэги игнорируются с занесением в протокол-лог (в УПП такого лога нет), который потом даже не отображается пользователю! И загрузка этих тэгов НЕ НУЖНА!

P.S. Кстати, исправления алгоритма из статьи эти тэги тоже не загружает (ибо некуда из загружать) ! И нигде их не показывает пользователю!
saddy; parshin; eddoptimist; Ks_83; maxpower; COMPER; Student1C; zqzq; farsesoft; spynett; +10 Ответить
9. farsesoft 19 01.06.20 23:13 Сейчас в теме
(4)
продолжить; //код изменён - игнорировать в загрузке неиспользуемые тэги


надо еще одну строку из тела цикла повторить, иначе никогда из цикла не выйдет, а так рабочий способ.

СтрокаРазбора = ПолучитьСтрокуИмпорта();
Продолжить; //код изменён - игнорировать в загрузке неиспользуемые тэги
saddy; powar; Barmolei; parshin; eddoptimist; Ks_83; maxpower; COMPER; SashaSashaSashka; zqzq; Lusha_28; Shrike; +12 Ответить
11. &rew 49 02.06.20 06:13 Сейчас в теме
(9Можно "запилить" Прервать по тегу "КодНазПлатежа". Но это не панацея. Загрузим входящие, а в исходящих, то надо указывать все-равно этот код, при расчетах с физлицами.
shuvalov_m; +1 Ответить
16. Darklight 32 02.06.20 12:24 Сейчас в теме
(11)Что Вы там указывать собрались? Загружаются - платёжные ордера (там ни во входящих ни в исходящих этих реквизитов нет). А при выгрузке - 1С всё сделала - там эти свойства заполняются!
17. &rew 49 02.06.20 12:38 Сейчас в теме
(16)То же что и Вы - 1,2,3. 1С сделала в обновлении. В старых переписанных в "копро" конфах этого нет. Под это дело и доки допилины и общие модули и сама обработка. Можно еще прямо в тестовик руками забивать.
shuvalov_m; +1 Ответить
5. digorec88 01.06.20 16:12 Сейчас в теме
(2) А еще лучше выгрузить как внешнюю и вносить в нее изменения. За статью спасибо!!!!!
3. rusakov1969 01.06.20 15:34 Сейчас в теме
Спасибо тебе, добрый человек
maksa2005; +1 Ответить
6. vano-ekt 123 01.06.20 17:07 Сейчас в теме
из последнего обновления возьмите клиент-банк, в УПП он ссылается на одну функцию общего модуля, можете поставить заглушку или обновить тот же общий модуль
в 1.139.2 - точно есть уже поддержка формата 1.03
7. Brawler 454 01.06.20 17:28 Сейчас в теме
(6) да оно и в 1.3.140.2 типа есть да и ошибка есть
13. vano-ekt 123 02.06.20 08:07 Сейчас в теме
(7) и в правду, ошибка в типовой :) с обновлением интернет-банка приехала ошибка
8. Skif1989 01.06.20 19:51 Сейчас в теме
12. &rew 49 02.06.20 06:13 Сейчас в теме
14. revned 6 02.06.20 08:30 Сейчас в теме
(8) Обновить, оно конечно правильно будет.
Но вот у меня такая же проблема появилась. Обновлять сейчас не вариант, УНФ сильно переписанная.
Пока сделал такой костыль:
Если ИмпортЗагружаемые[Тег] = Истина Тогда
				СтрокаДокумента[Тег] = Значение;
			Иначе
				//++
				СтрокаПоиска = СтрЗаменить(СтрокаРазбора, "=", "");
				Если СтрНайти("НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа", СтрокаПоиска) Тогда 
					Сообщить("Не поддерживаемый реквизит "+СтрокаПоиска + ". Реквизит не загружен.");
				Иначе
					//--
					// Неправиьный реквизит заголовка.
					ТекстСообщения = НСтр(
					"ru = 'Неверный реквизит платежного документа, строка %Импорт%: %СтрокаРазбора%'"
					);
					ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Импорт%", (ИмпортТекущаяСтрока - 1));
					ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СтрокаРазбора%", СтрокаРазбора);
					УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтаФорма, ТекстСообщения);
					Возврат Ложь;
					//++	
				КонецЕсли;
				//--
			КонецЕсли;
Показать


УНФ 1.6.16.219
Irveen; 1СРамиль; +2 Ответить
41. user1222071 05.06.20 11:01 Сейчас в теме
(14) Подскажите, пожалуйста, куда этот код добавить.
44. revned 6 08.06.20 07:59 Сейчас в теме
(41) Это я добавлял в обработку КлинетБанк в форму ФормаЗагрузка в функцию:
Функция ЗагрузитьСекциюДокумента(СтрокаДокумента, ИмпортТекущаяСтрока, ИмпортКоличествоСтрок, ИмпортТекстДляРазбора, ИмпортЗагружаемые)
45. user1222071 08.06.20 08:44 Сейчас в теме
55. Irveen 30.07.20 11:08 Сейчас в теме
(14) Добавил этот код в функцию ЗагрузитьСекциюДокумента и сработало. Выдало предупреждения о том, что реквизит не поддерживаемый и что он не загружен - все как положено.
На следующий день загружаю выписку, но уже на другое ЮрЛицо и тут снова та же ошибка:

Неверный реквизит платежного документа, строка 79: КодНазПлатежа=1


Где еще может быть проблема?
(Вдруг важно - Это загружалась платежка, в которой наша оплата контрагенту (перечисление зарплаты))
69. user745012 30.10.22 17:17 Сейчас в теме
(14)

/

СтрокаПоиска = "";
Если СтрНайти("КодНазПлатежа", СтрокаПоиска) Тогда
(55)
56. Irveen 30.07.20 11:12 Сейчас в теме
(14) Добавил этот код в функцию ЗагрузитьСекциюДокумента и сработало. Выдало предупреждения о том, что реквизит не поддерживаемый и что он не загружен - все как положено.
На следующий день загружаю выписку, но уже на другое ЮрЛицо и тут снова та же ошибка:

Неверный реквизит платежного документа, строка 79: КодНазПлатежа=1


Где еще может быть проблема?
(Вдруг важно - Это загружалась платежка, в которой наша оплата контрагенту (перечисление зарплаты))
10. Shrike 6 02.06.20 04:40 Сейчас в теме
Спасибо за информацию по исправлению.
15. marat.coolls 02.06.20 09:17 Сейчас в теме
18. FLYYY1986 02.06.20 14:35 Сейчас в теме
19. user1193102 02.06.20 14:48 Сейчас в теме
20. rago 02.06.20 16:39 Сейчас в теме
Спасибо! УТ10.3 перестала ругаться! Плюсую!
21. evrakylon 02.06.20 16:57 Сейчас в теме
Спасибо за быстрый способ!
22. fzt 03.06.20 03:45 Сейчас в теме
Ошибку ищу свою, голову пеплом посыпаю, а оказывается ошибся не я. Спасибо.
23. user1418065 03.06.20 08:24 Сейчас в теме
Ребята помогите!У меня вот такая ошибка:
{Обработка.КлиентБанк.МодульОбъекта(50,46)}: Ожидается символ ';'
Перем РеквизитыПлДок_НазначениеНеОбязательные<<?>> = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа"; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(50,47)}: Неопознанный оператор
Перем РеквизитыПлДок_НазначениеНеОбязательные <<?>>= "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа"; (Проверка: Толстый клиент (обычное приложение))
24. andreyR3 1 03.06.20 08:39 Сейчас в теме
Перем РеквизитыПлДок_НазначениеНеОбязательные;

а потом

РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа";

или просто убрать Перем
25. user1418065 03.06.20 08:46 Сейчас в теме
andreyR3
Напиши,для особо тупых,как это должно выглядить.Я не понял просто)
Спасибо
27. andreyR3 1 03.06.20 09:10 Сейчас в теме
28. user1418065 03.06.20 09:15 Сейчас в теме
(27) {Обработка.КлиентБанк.МодульОбъекта(51,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДок_Аккредитив; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(52,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДок_УсловияОпл; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(53,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДок_Дополнительные; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(55,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_Основные; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(56,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_ВидПлатежаОплаты; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(57,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_Плательщик; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(58,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_ПлательщикНПР; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(59,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_Получатель; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(60,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_ПолучательНПР; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(61,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем РеквизитыПлДокЭкс_БюджетПлатеж; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(63,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции
<<?>>Перем мТекущаяВалютаВзаиморасчетов; (Проверка: Толстый клиент (обычное приложение))
{Обработка.КлиентБанк.МодульОбъекта(67,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Функция ПолучитьВыборкуОрганизаций() Экспорт (Проверка: Толстый клиент (обычное приложение))
29. user1418065 03.06.20 09:16 Сейчас в теме
(27) У тебя нет случайно этой обработки с исправленной ошибкой? Плиз.Бухи над душёй стоят уже второй день
31. andreyR3 1 03.06.20 09:25 Сейчас в теме
(29) Обработки нет.

Служебное слово(описатель) 'Перем' не может использоваться одновременно с оператором присваивания (=).

поэтому код должен выглядеть:
Перем РеквизитыПлДок_НазначениеНеОбязательные;
РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа";


или, поскольку 'Перем' не обязательный описатель его можно просто удалить. Т.е. можно и так:
РеквизитыПлДок_НазначениеНеОбязательные = "НазначениеПлатежа1,НазначениеПлатежа2,НазначениеПлатежа3,НазначениеПлатежа4,НазначениеПлатежа5,НазначениеПлатежа6,КодВыплат,КодНазПлатежа";
32. user1418065 03.06.20 09:39 Сейчас в теме
(31) в ошибку вываливается,я пробывал оба варианта
42. demon75 05.06.20 11:06 Сейчас в теме
(29) Могу подкинуть исправленную с УПП 1.3 (8.2) как внешняя обработка. Способ указанный автором работает.
Прикрепленные файлы:
Клиент банкМод3.epf
70. Zlodey 47 06.07.23 07:20 Сейчас в теме
(42) в обработке ошибки, нажимаешь прочитать файл:

Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.КлиентБанкМод.МодульОбъекта(2660)}: Результат = ЗапросПоискаДокумента.Выполнить().Выбрать();
{ВнешняяОбработка.КлиентБанкМод.МодульОбъекта(3227)}: РаспознатьДанныеВСтрокеДокумента(СтрокаДокумента);
{ВнешняяОбработка.КлиентБанкМод.Форма.Форма.Форма(657)}: ЗаполнитьДокументыНаИмпорт(ДокументыКИмпорту,ЭлементыФормы.ДокументыКИмпорту,ВыводитьСообщения);
{ВнешняяОбработка.КлиентБанкМод.Форма.Форма.Форма(634)}: ПрочитатьДанныеИзФайла();
по причине:
{(11, 42)}: Не задано значение параметра "Свойство"
ПО (ЗначенияСвойствОбъектов.Свойство = <<?>>&Свойство)
26. user1418065 03.06.20 08:58 Сейчас в теме
перем
Прикрепленные файлы:
30. Fanat31 03.06.20 09:20 Сейчас в теме
Спасибо огромное. УТ 10.3 работает
33. user1418065 03.06.20 09:40 Сейчас в теме
(30) Скинь крин пож.У меня ничего не получатся
35. Fanat31 03.06.20 13:34 Сейчас в теме
71. Zlodey 47 06.07.23 07:22 Сейчас в теме
(35) не работает, выдает ошибку:

{ВнешняяОбработка.КлиентБанк.МодульОбъекта(5058,7)}: Процедура или функция с указанным именем не определена (ЗначениеНеЗаполнено)
Если <<?>>ЗначениеНеЗаполнено(СтруктураПараметров.Контрагент) Тогда
72. Zlodey 47 06.07.23 07:45 Сейчас в теме
(35) после исправления этой ошибки вылазит:
Поле объекта не обнаружено (НАЗНАЧЕНИЕПЛАТЕЖА6)
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(2468)}: СтрокаДокумента[Тег] = Значение;
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(3152)}: Если НЕ ЗагрузитьСекциюДокумента(НоваяСтрокаДокументов) Тогда
{ВнешняяОбработка.КлиентБанк.Форма.Форма.Форма(659)}: ЗаполнитьДокументыНаИмпорт(ДокументыКИмпорту,ЭлементыФормы.ДокументыКИмпорту,ВыводитьСообщения);
{ВнешняяОбработка.КлиентБанк.Форма.Форма.Форма(636)}: ПрочитатьДанныеИзФайла();
34. кольщик 03.06.20 13:24 Сейчас в теме
Подскажите, в КА 2.4 что то нужно менять или так всё будет работать?
36. hjvf434 04.06.20 10:15 Сейчас в теме
37. nik_rzn 04.06.20 12:58 Сейчас в теме
Здравствуйте, не подскажите вот выгрузка хмл файл обмена с банком

<?xml version="1.0" encoding="windows-1251" ?>
<СчетаПК xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/edi/edi_stnd/109" xsi:type="СчетПК" ДатаФормирования="2020-06-04" НомерДоговора="7831142" ДатаДоговора="2020-01-01" НаименованиеОрганизации="Общество с ограниченной ответственностью 'Феррум'" ИНН="5072712165" РасчетныйСчетОрганизации="40702810240230100427" БИК="044525225" ИдПервичногоДокумента="f9a1ba2b-a638-11ea-b9ec-005056c00008">
	<ЗачислениеЗарплаты>
		<Сотрудник Нпп="1">
			<Фамилия>Пупки</Фамилия>
			<Имя>Николай</Имя>
			<Отчество>Евгеньевич</Отчество>
			<ОтделениеБанка>01</ОтделениеБанка>
			<ЛицевойСчет>8888888888888888</ЛицевойСчет>
			<Сумма>7777777</Сумма>
		</Сотрудник>
	</ЗачислениеЗарплаты>
	<КонтрольныеСуммы>
		<КоличествоЗаписей>1</КоличествоЗаписей>
		<СуммаИтого>7777777</СуммаИтого>
	</КонтрольныеСуммы>
</СчетаПК>
Показать



Куда мне секцию нужно вставить КодНазПлатежа ???
39. nik_rzn 04.06.20 17:42 Сейчас в теме
(37) спасибо за внимание ) нашел ответ т.е схему xsd тут если кого заинтересует https://v8.1c.ru/tekhnologii/obmen-dannymi-i-integratsiya/standarty-i-formaty/standart-obmena-dannymi-po-zarplatnym-proektam/
38. user917250 04.06.20 14:49 Сейчас в теме
Большое человеческое спасибо. В Бухгалтерии 2.0 работает.
40. ssergey5135 05.06.20 09:37 Сейчас в теме
Спасибо за подсказку, у самого руки не дошли. Конфигурация УТ 10.3.58.2
43. andy3626603 06.06.20 13:36 Сейчас в теме
Спасибо большое за инструкцию. Вы сэкономили кучу времени мне и денег клиентам)
46. eddoptimist 08.06.20 12:46 Сейчас в теме
47. Homs 09.06.20 05:31 Сейчас в теме
Спасибо. Быстро исправил.
48. nikifan 09.06.20 08:38 Сейчас в теме
Спасибо огромное! УПП 1.3.130.1
49. user934971 09.06.20 20:49 Сейчас в теме
Спасибо!!!!!!!!!!! УТ10.3 заработало!
50. Sokar 10.06.20 09:07 Сейчас в теме
51. SerShl 16.06.20 10:58 Сейчас в теме
Спасибо!!!
Софт-Портал: "Управление сбытом тепловой энергии" (5.0.31.1) заработало.
52. marshalbratsk 16.06.20 16:05 Сейчас в теме
Круто! спасибо автор!
Для Бух 2.0 КОРП прокатило
53. user591448 24.06.20 15:01 Сейчас в теме
Добрый день! А не подскажите как исправить данную ошибку в УТ 11.1?
54. user970589 10 16.07.20 15:28 Сейчас в теме
Спасибо, на КА 1.1 зашло.
57. user819028 03.08.20 12:06 Сейчас в теме
58. maksa2005 530 10.08.20 08:17 Сейчас в теме
59. Elvina 5 11.08.20 07:03 Сейчас в теме
60. buba 11.08.20 13:04 Сейчас в теме
61. ValeriyZ 19 28.08.20 07:48 Сейчас в теме
Благодарю! На УТ 10.3 получилось, самому отлаживаться не пришлось.
62. user1459085 04.09.20 14:09 Сейчас в теме
У меня модуль объекта открываю и не внести исправления, потому что "Только для чтения". Куда зайти, убрать "только для чтения", подскажите пожалуйста. Проверила свои права, стоят все галки-администратора!
63. user1386419 13.10.20 10:15 Сейчас в теме
Подскажите пожалуйста, на УНФ работает? Не могу найти где править, HELP!!!!


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

// Функция проверяет документ для загрузки.
//
Функция ПроверитьДокументДляЗагрузки(СтруктураДокумента)
	
	Результат = "";
	
	Если СтруктураДокумента.Готовность > 3 Тогда
		Результат = СтруктураДокумента.ОписаниеОшибок;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции // ПроверитьДокументДляЗагрузки()

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

// Процедура рассчитывает курс и сумму документа.
//
Процедура РассчитатьКурсИСуммуРасчетов(СтрокаПлатеж, ВалютаРасчетов, ДатаКурса, ОбъектДокумента, ЭтоНовыйДокумент)
	
	СтруктураКурсаРасчетов = ПолучитьКурсВалюты(ВалютаРасчетов, ДатаКурса);
	СтруктураКурсаРасчетов.Курс = ?(СтруктураКурсаРасчетов.Курс = 0, 1, СтруктураКурсаРасчетов.Курс);
	СтруктураКурсаРасчетов.Кратность = ?(СтруктураКурсаРасчетов.Кратность = 0, 1, СтруктураКурсаРасчетов.Кратность);
	
	УстановитьСвойство(
		СтрокаПлатеж,
		"Курс",
		СтруктураКурсаРасчетов.Курс,
		,
		ЭтоНовыйДокумент
	);
	УстановитьСвойство(
		СтрокаПлатеж,
		"Кратность",
		СтруктураКурсаРасчетов.Кратность,
		,
		ЭтоНовыйДокумент
	);
	СтруктураКурсаДокумента = ПолучитьКурсВалюты(ОбъектДокумента.ВалютаДенежныхСредств, ДатаКурса);
	
	СуммаРасчетов = ПересчитатьИзВалютыВВалюту(
		СтрокаПлатеж.СуммаПлатежа,
		СтруктураКурсаДокумента.Курс,
		СтруктураКурсаРасчетов.Курс,
		СтруктураКурсаДокумента.Кратность,
		СтруктураКурсаРасчетов.Кратность
	);
	
	УстановитьСвойство(
		СтрокаПлатеж,
		"СуммаРасчетов",
		СуммаРасчетов,
		Истина,
		ЭтоНовыйДокумент
	);
	
КонецПроцедуры // РассчитатьКурсИСуммуРасчетов()

// Функция получает представление объекта.
//
Функция ПолучитьПредставлениеОбъекта(Объект)
	
	Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаСчет") Тогда
		НазваниеОбъекта = НСтр(
			"ru = 'документ ""Поступление на счет"" № %Номер% от %Дата%'"
		);
		НазваниеОбъекта = СтрЗаменить(НазваниеОбъекта, "%Номер%", Строка(СокрЛП(Объект.Номер)));
		НазваниеОбъекта = СтрЗаменить(НазваниеОбъекта, "%Дата%", Строка(Объект.Дата));
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходСоСчета") Тогда
		НазваниеОбъекта = НСтр(
			"ru = 'документ ""Расход со счета"" № %Номер% от %Дата%'"
		);
		НазваниеОбъекта = СтрЗаменить(НазваниеОбъекта, "%Номер%", Строка(СокрЛП(Объект.Номер)));
		НазваниеОбъекта = СтрЗаменить(НазваниеОбъекта, "%Дата%", Строка(Объект.Дата));
	Иначе
		НазваниеОбъекта = НСтр("ru = 'объект'");
	КонецЕсли;
	
	Возврат НазваниеОбъекта;
	
КонецФункции // ПолучитьПредставлениеОбъекта()

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

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

// Процедура задает пометку на удаление.
//
Процедура ЗадатьПометкуНаУдаление(ОбъектДляПометки, Пометка)
	
	НазваниеОбъекта = ПолучитьПредставлениеОбъекта(ОбъектДляПометки);
	НазваниеДействия = ?(Пометка, НСтр("ru = ' помечен на удаление'"), НСтр("ru = ' отменена пометка на удаление'"));
	Попытка
		ОбъектДляПометки.Записать(РежимЗаписиДокумента.Запись);
		ОбъектДляПометки.УстановитьПометкуУдаления(Пометка);
		ТекстСообщения = НСтр("ru = '%НазваниеОбъектаЛев% %НазваниеОбъектаСред%: %НазваниеДействия%.'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаЛев%", ВРег(Лев(НазваниеОбъекта, 1)));
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаСред%", Сред(НазваниеОбъекта, 2));
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеДействия%", НазваниеДействия);		
		УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);		
	Исключение
		ТекстСообщения = НСтр("ru = '%НазваниеОбъектаЛев% %НазваниеОбъектаСред%: не %НазваниеДействия%! Произошли ошибки при записи!'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаЛев%", ВРег(Лев(НазваниеОбъекта, 1)));
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаСред%", Сред(НазваниеОбъекта, 2));
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеДействия%", НазваниеДействия);
		УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
	КонецПопытки
	
КонецПроцедуры // ЗадатьПометкуНаУдаление()

// Процедура записывает объект.
//
Процедура ЗаписатьОбъект(ОбъектДляЗаписи, СтрокаСекции, ЭтоНовыйДокумент)
	
	ТипДокумента = ОбъектДляЗаписи.Метаданные().Имя;
	Если ТипДокумента = "РасходСоСчета" Тогда
		ИмяДокумента = "Расход со счета";
		Если ЗаполнятьДолгиАвтоматически И СтрокаСекции.ВидОперации = Перечисления.ВидыОперацийРасходСоСчета.Поставщику Тогда
			УправлениеНебольшойФирмойСервер.ЗаполнитьРасшифровкуПлатежаРасход(ОбъектДляЗаписи,,,,, СтрокаСекции.Договор);
		КонецЕсли;
	ИначеЕсли ТипДокумента = "ПоступлениеНаСчет" Тогда
		ИмяДокумента = "Поступление на счет";
		Если ЗаполнятьДолгиАвтоматически И СтрокаСекции.ВидОперации = Перечисления.ВидыОперацийПоступлениеНаСчет.ОтПокупателя Тогда
			УправлениеНебольшойФирмойСервер.ЗаполнитьРасшифровкуПлатежаПриход(ОбъектДляЗаписи,,,,, СтрокаСекции.Договор);
		КонецЕсли;
	КонецЕсли;
	УстановитьСвойство(
		ОбъектДляЗаписи,
		"НазначениеПлатежа",
		СтрокаСекции.НазначениеПлатежа,
		,
		ЭтоНовыйДокумент
	);
	УстановитьСвойство(
		ОбъектДляЗаписи,
		"Автор",
		Пользователи.ТекущийПользователь(),
		Истина,
		ЭтоНовыйДокумент
	);
	ОбъектМодифицирован = ОбъектДляЗаписи.Модифицированность();
	ОбъектПроведен = ОбъектДляЗаписи.Проведен;
	НазваниеОбъекта = ПолучитьПредставлениеОбъекта(ОбъектДляЗаписи);
	
	Если ОбъектМодифицирован Тогда
		Попытка
			Если ОбъектПроведен Тогда
				ОбъектДляЗаписи.Записать(РежимЗаписиДокумента.ОтменаПроведения);
				СтрокаСекции.Проведен = ОбъектДляЗаписи.Проведен;
			Иначе
				ОбъектДляЗаписи.Записать(РежимЗаписиДокумента.Запись);
			КонецЕсли;
			ТекстСообщения = НСтр("ru = '%Статус% %НазваниеОбъекта%.'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Статус%" , ?(ЭтоНовыйДокумент, НСтр("ru = 'Создан '"), НСтр("ru = 'Перезаписан '")));
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъекта%", НазваниеОбъекта);
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
		Исключение
			ТекстСообщения = НСтр("ru = '%НазваниеОбъектаЛев% %НазваниеОбъектаСред% %Статус%! Произошли ошибки при записи!'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаЛев%", ВРег(Лев(НазваниеОбъекта, 1)));
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаСред%", Сред(НазваниеОбъекта, 2));
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Статус%", ?(ОбъектДляЗаписи.ЭтоНовый(), НСтр("ru = ' не создан'"), НСтр("ru = ' не записан'")));
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
			Возврат;
		КонецПопытки;
	Иначе
		ТекстСообщения = НСтр("ru = 'Уже существует %НазваниеОбъекта%. Возможно загрузка производилась ранее.'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъекта%", НазваниеОбъекта);
		УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
	КонецЕсли;
	
	Если ПроводитьЗагружаемые И (ОбъектМодифицирован ИЛИ НЕ ОбъектПроведен) Тогда
		Попытка
			ОбъектДляЗаписи.Записать(РежимЗаписиДокумента.Проведение);
			ТекстСообщения = НСтр("ru = '%Статус% %НазваниеОбъекта% %Статус%'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Статус%", ?(ОбъектПроведен, НСтр("ru = 'Перепроведен '"), НСтр("ru = 'Проведен '")));
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъекта%", НазваниеОбъекта);
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
			СтрокаСекции.Проведен = ОбъектДляЗаписи.Проведен;
		Исключение
			ТекстСообщения = НСтр("ru = '%НазваниеОбъектаЛев% %НазваниеОбъектаСред% не проведен! Произошли ошибки при проведении!'");
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаЛев%", ВРег(Лев(НазваниеОбъекта, 1)));
			ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НазваниеОбъектаСред%", Сред(НазваниеОбъекта, 2));
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
		КонецПопытки
	КонецЕсли;
	
КонецПроцедуры // ЗаписатьОбъект()

// Процедура синхронизирует документы по счетам.
//
Процедура СинхронизироватьДокументыПоСчетам(ДокументыКИмпорту, ВидДокументовИсходящих, ВидДокументовВходящих, НачалоИнтервалаЗагрузки, КонецИнтервалаЗагрузки, ИмпортРасчетныеСчета)
	
	// Составляем список счетов.
	СписокСчетов = Новый СписокЗначений;
	Для каждого СтрокаСчета Из ИмпортРасчетныеСчета Цикл
		СписокСчетов.Добавить(СокрЛП(СтрокаСчета.РасчСчет));
	КонецЦикла;
	
	ДокументыНаУдаление = Новый Запрос(
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	" + ВидДокументовИсходящих + ".Ссылка,
	|	" + ВидДокументовИсходящих + ".Дата,
	|	" + ВидДокументовИсходящих + ".БанковскийСчет.НомерСчета
	|ИЗ
	|	Документ." + ВидДокументовИсходящих + " КАК " + ВидДокументовИсходящих + "
	|ГДЕ
	|	" + ВидДокументовИсходящих + ".Дата >= &ДатаНач
	| И " + ВидДокументовИсходящих + ".Дата <= &ДатаКон
	| И " + ВидДокументовИсходящих + ".БанковскийСчет.НомерСчета В(&НомераСчетов)");
	
	ДокументыНаУдаление.УстановитьПараметр("ДатаНач", НачалоИнтервалаЗагрузки);
	ДокументыНаУдаление.УстановитьПараметр("ДатаКон", КонецИнтервалаЗагрузки);
	ДокументыНаУдаление.УстановитьПараметр("НомераСчетов", СписокСчетов);
	ВыборкаДокументов = ДокументыНаУдаление.Выполнить().Выбрать();
	
	Пока ВыборкаДокументов.Следующий() Цикл
		СтрокаВТаблицеИмпорта = ДокументыКИмпорту.Найти(ВыборкаДокументов.Ссылка, "Документ"); 		
		Если СтрокаВТаблицеИмпорта = Неопределено Тогда
			ОбъектДокументаКУдаление = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
			Если ИспользоватьГраницуОбработки Тогда
				Если ЗначениеЗаполнено(ДатаГраницыОбработки) Тогда
					Если НачалоДня(ОбъектДокументаКУдаление.Дата) <= НачалоДня(ДатаГраницыОбработки) Тогда
						ТекстСообщения = НСтр("ru = 'Платежный документ ""%ОбъектДокументаКУдаление%"" не помечен на удаление, так как имеет дату равной или меньшей границы обработки!'");
						ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОбъектДокументаКУдаление%", ОбъектДокументаКУдаление);
						УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
						Продолжить;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			ЗадатьПометкуНаУдаление(ОбъектДокументаКУдаление, Истина);
		КонецЕсли;
	КонецЦикла;
	
	// Поступления на счет, отсутствующие в списке загруженным помечаем
	// на удаление.
	ДокументыНаУдаление = Новый Запрос(
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	" + ВидДокументовВходящих + ".Ссылка,
	|	" + ВидДокументовВходящих + ".ДатаВходящегоДокумента,
	|	" + ВидДокументовВходящих + ".БанковскийСчет.НомерСчета
	|ИЗ
	|	Документ." + ВидДокументовВходящих + " КАК " + ВидДокументовВходящих + "
	|ГДЕ
	|	" + ВидДокументовВходящих + ".ДатаВходящегоДокумента >= &ДатаНач
	| И " + ВидДокументовВходящих + ".ДатаВходящегоДокумента <= &ДатаКон
	| И " + ВидДокументовВходящих + ".БанковскийСчет.НомерСчета В(&НомераСчетов)");
	
	ДокументыНаУдаление.УстановитьПараметр("ДатаНач", НачалоИнтервалаЗагрузки);
	ДокументыНаУдаление.УстановитьПараметр("ДатаКон", КонецИнтервалаЗагрузки);
	ДокументыНаУдаление.УстановитьПараметр("НомераСчетов", СписокСчетов);
	ВыборкаДокументов = ДокументыНаУдаление.Выполнить().Выбрать();
	
	Пока ВыборкаДокументов.Следующий() Цикл
		СтрокаВТаблицеИмпорта = ДокументыКИмпорту.Найти(ВыборкаДокументов.Ссылка, "Документ");
		Если СтрокаВТаблицеИмпорта = Неопределено Тогда
			ОбъектДокументаКУдаление = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
			Если ИспользоватьГраницуОбработки Тогда
				Если ЗначениеЗаполнено(ДатаГраницыОбработки) Тогда
					Если НачалоДня(ОбъектДокументаКУдаление.Дата) <= НачалоДня(ДатаГраницыОбработки) Тогда
						ТекстСообщения = НСтр("ru = 'Платежный документ ""%ОбъектДокументаКУдаление%"" не помечен на удаление, так как имеет дату равной или меньшей границы обработки!'");
						ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОбъектДокументаКУдаление%", ОбъектДокументаКУдаление);
						УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
						Продолжить;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
			ЗадатьПометкуНаУдаление(ОбъектДокументаКУдаление, Истина);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры // СинхронизироватьДокументыПоСчетам()

// Функция возвращает найденный элемент дерева.
//
Функция НайтиЭлементДерева(ЭлементыДерева, ИмяКолонки, ИскомоеЗначение)
	
	Для Ном = 0 По ЭлементыДерева.Количество() - 1 Цикл
		
		ЭлементДерева = ЭлементыДерева.Получить(Ном);
		
		Если ЭлементДерева[ИмяКолонки] = ИскомоеЗначение Тогда
			Возврат ЭлементДерева;
		КонецЕсли;
		
		Если ЭлементДерева.ПолучитьЭлементы().Количество() > 0 Тогда
			
			РезультатПоиска = НайтиЭлементДерева(ЭлементДерева.ПолучитьЭлементы(), ИмяКолонки, ИскомоеЗначение);
			
			Если НЕ РезультатПоиска = Неопределено Тогда
				Возврат РезультатПоиска;
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции // НайтиЭлементДерева()

// Функция ищет банк по БИК или корр. счету и возвращает найденное значение.
//
Функция НайтиБанкПоБикИКоррСчету(БИК, КоррСчет)
	
	НайденныйБанк = Справочники.Банки.ПустаяСсылка();
	
	Если НЕ ПустаяСтрока(БИК) Тогда
		НайденныйБанк = Справочники.Банки.НайтиПоКоду(БИК);
	КонецЕсли;
	
	Если НайденныйБанк = Справочники.Банки.ПустаяСсылка() Тогда
		НайденныйБанк = Справочники.Банки.НайтиПоРеквизиту("КоррСчет", КоррСчет);
	КонецЕсли;

	Возврат НайденныйБанк;

КонецФункции // НайтиБанкПоБикИКоррСчету()

// Функция создает контрагента.
//
Функция СоздатьКонтрагента(СтрокаКонтрагент = Неопределено) Экспорт
	
	СообщатьОСозданномКонтрагенте	  = Ложь;
	СообщатьОСозданномБанковскомСчете = Ложь;
	
	// Эти элементы есть у всех справочников.
	Если НЕ ТипЗнч(СтрокаКонтрагент.Реквизит) = Тип("СправочникСсылка.Контрагенты") Тогда
		
		НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
		
		НовыйЭлемент.Наименование = СтрокаКонтрагент.Представление;
		НовыйЭлемент.НаименованиеПолное = СтрокаКонтрагент.Представление;
		НовыйЭлемент.ИНН = СтрокаКонтрагент.ПолучитьЭлементы()[1].Значение;
		НовыйЭлемент.КПП = СтрокаКонтрагент.ПолучитьЭлементы()[2].Значение;
		
		Если СтрДлина(НовыйЭлемент.ИНН) = 12 Тогда
			НовыйЭлемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
		Иначе
			НовыйЭлемент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
		КонецЕсли;
		
		НовыйЭлемент.СчетУчетаРасчетовСПокупателем = ПланыСчетов.Управленческий.РасчетыСПокупателями;
		НовыйЭлемент.СчетУчетаАвансовПокупателя = ПланыСчетов.Управленческий.РасчетыПоАвансамПолученным;
		НовыйЭлемент.СчетУчетаРасчетовСПоставщиком = ПланыСчетов.Управленческий.РасчетыСПоставщиками;
		НовыйЭлемент.СчетУчетаАвансовПоставщику = ПланыСчетов.Управленческий.РасчетыПоАвансамВыданным;
		НовыйЭлемент.ВестиРасчетыПоДоговорам = Истина;
		НовыйЭлемент.ВестиРасчетыПоДокументам = Истина;
		НовыйЭлемент.ВестиРасчетыПоЗаказам = Истина;
		НовыйЭлемент.ВестиУчетОплатыПоСчетам = Истина;
		
		НовыйЭлемент.Записать();
		
		СообщатьОСозданномКонтрагенте = Истина;
		
	Иначе
		
		НовыйЭлемент = СтрокаКонтрагент.Реквизит.ПолучитьОбъект();
		
	КонецЕсли;
	
	Если СообщатьОСозданномКонтрагенте Тогда
		
		Сообщение = Новый СообщениеПользователю;
		
		Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Контрагент (%1) создан.'"), СтрокаКонтрагент.Представление);
		
		Сообщение.Сообщить();
		
		ПредставлениеКонтрагента = "" + Символы.Таб + "- ";
		
	Иначе
		
		ПредставлениеКонтрагента = "Контрагенту (" + СтрокаКонтрагент.Представление + ")";
		
	КонецЕсли;

	Для каждого Строка Из СтрокаКонтрагент.ПолучитьЭлементы() Цикл
		
		СообщатьОСозданномБанковскомСчете = Ложь;
		
		Если Строка.Представление = "Р/счет" Тогда
			
			Попытка
				
				НомерСчета = Строка.Значение;
				
				НовыйСчет = Справочники.БанковскиеСчета.СоздатьЭлемент();
				
				НовыйСчет.НомерСчета = НомерСчета;
				НовыйСчет.Владелец   = НовыйЭлемент.Ссылка;
				
				РССчет = Строка.ПолучитьЭлементы();
				
				Если НЕ НайтиЭлементДерева(РССчет, "Представление", "РЦ банка") = Неопределено Тогда
					
					// Банк контрагента.
					Если НЕ ПустаяСтрока(РССчет[0].Значение) Тогда
						
						НовыйБанк = НайтиБанкПоБикИКоррСчету("", РССчет[2].Значение);
						
						Если НовыйБанк = Справочники.Банки.ПустаяСсылка() Тогда
							
							НовыйБанк = Справочники.Банки.СоздатьЭлемент();
							
							НовыйБанк.Наименование = РССчет[0].Значение;
							НовыйБанк.Город        = РССчет[1].Значение;
							НовыйБанк.КоррСчет     = РССчет[2].Значение;
							
							НовыйБанк.Записать();
							
						КонецЕсли;
						
						НовыйСчет.Банк = НовыйБанк.Ссылка;
						
					КонецЕсли;
					
					// РЦ банка контрагента.
					Если НЕ ПустаяСтрока(РССчет[3].Значение) Тогда
						
						НовыйБанкКорр = НайтиБанкПоБикИКоррСчету(РССчет[5].Значение, РССчет[6].Значение);
						
						Если НовыйБанкКорр = Справочники.Банки.ПустаяСсылка() Тогда
							
							НовыйБанкКорр = Справочники.Банки.СоздатьЭлемент();
							
							НовыйБанкКорр.Наименование = РССчет[3].Значение;
							НовыйБанкКорр.Город        = РССчет[4].Значение;
							НовыйБанкКорр.Код          = РССчет[5].Значение;
							НовыйБанкКорр.КоррСчет     = РССчет[6].Значение;
							
							НовыйБанкКорр.Записать();
							
						КонецЕсли;
						
						НовыйСчет.БанкРасчетов = НовыйБанкКорр.Ссылка;
						
					КонецЕсли;
					
				Иначе
					
					// Банк контрагента.
					НовыйБанк = НайтиБанкПоБикИКоррСчету(РССчет[2].Значение, РССчет[3].Значение);
					
					Если НовыйБанк = Справочники.Банки.ПустаяСсылка() Тогда
						
						НовыйБанк = Справочники.Банки.СоздатьЭлемент();
						
						НовыйБанк.Наименование = РССчет[0].Значение;
						НовыйБанк.Город        = РССчет[1].Значение;
						НовыйБанк.Код          = РССчет[2].Значение;
						НовыйБанк.КоррСчет     = РССчет[3].Значение;
						
						НовыйБанк.Записать();
						
					КонецЕсли;
					
					НовыйСчет.Банк = НовыйБанк.Ссылка;
					
				КонецЕсли;
				
				НовыйСчет.ВариантУказанияКПП = Перечисления.ВариантыУказанияКПП.ВоВсехПлатежныхПоручениях;
				НовыйСчет.ВидСчета = "Расчетный";
				НовыйСчет.ВалютаДенежныхСредств = БанковскийСчет.ВалютаДенежныхСредств;
				СтрокаНаименования = СокрЛП(НовыйСчет.НомерСчета) + ?(ЗначениеЗаполнено(НовыйСчет.Банк), ", в " + Строка(НовыйСчет.Банк), "");
				СтрокаНаименования = Лев(СтрокаНаименования, 100);
				НовыйСчет.Наименование = СтрокаНаименования;
				
				НовыйСчет.Записать();
				
				СообщатьОСозданномБанковскомСчете = Истина;
				
				НовыйЭлемент.БанковскийСчетПоУмолчанию = НовыйСчет.Ссылка;
				НовыйЭлемент.Записать();
				
			Исключение
				
				Сообщение = Новый СообщениеПользователю;
				
				Сообщение.Текст = НСтр("ru='Не удалось создать банковский счет контрагента!'");
				
				Сообщение.Сообщить();
				
			КонецПопытки;
			
		КонецЕсли;
		
		Если СообщатьОСозданномБанковскомСчете Тогда
			
			Сообщение = Новый СообщениеПользователю;
			
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1 добавлен банковский счет (%2).'"), ПредставлениеКонтрагента, НомерСчета);
			
			Сообщение.Сообщить();
			
		КонецЕсли;
		
	КонецЦикла;
	
	НовыйЭлемент.Записать();
	
	Возврат НовыйЭлемент.Ссылка;
	
КонецФункции // СоздатьКонтрагента()

// Процедура загружает банковские выписки.
//
Процедура Загрузить(ИмпортЗаголовок) Экспорт
	
	ДокументыКИмпорту = Загрузка.Выгрузить();
	НачалоИнтервалаЗагрузки = Дата("00010101");
	КонецИнтервалаЗагрузки  = Дата("00010101");
	ДокументыКИмпорту.Индексы.Добавить("Документ");
	Результат = ПолучитьДатуИзСтроки(НачалоИнтервалаЗагрузки, ИмпортЗаголовок.ДатаНачала);
	Если НЕ ЗначениеЗаполнено(Результат) Тогда
		ТекстСообщения  = НСтр("ru = 'В заголовке файла загрузки неверно указана дата начала интервала! Файл не может быть загружен!'");
		УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
		Возврат;
	КонецЕсли;
	Результат = ПолучитьДатуИзСтроки(КонецИнтервалаЗагрузки, ИмпортЗаголовок.ДатаКонца);
	Если НЕ ЗначениеЗаполнено(Результат) Тогда
		ТекстСообщения = НСтр("ru = 'В заголовке файла импорта неверно указана дата окончания интервала!'");
		УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
	КонецЕсли;
	
	// Загружаем отмеченные секции документов.
	Для каждого СтрокаСекции Из ДокументыКИмпорту Цикл
		Если СтрокаСекции.Загружать Тогда
			РезультатПроверки = ПроверитьДокументДляЗагрузки(СтрокаСекции);
			Если ПустаяСтрока(РезультатПроверки) Тогда
				Если НЕ ЗначениеЗаполнено(СтрокаСекции.Документ) Тогда
					
					// В ИБ не найден документ, необходимо создать новый.
					ОбъектДокумента = Документы[СтрокаСекции.ВидДокумента].СоздатьДокумент();
					ЭтоНовыйДокумент = Истина;
					
				Иначе
					
					// В ИБ найден документ, необходимо получить его объект.
					ОбъектДокумента = СтрокаСекции.Документ.ПолучитьОбъект();
					ЭтоНовыйДокумент = Ложь;
					
				КонецЕсли;
				
				// Заполняем все реквизиты документа.
				ТипДокумента = ОбъектДокумента.Метаданные().Имя;
				Если ТипДокумента = "РасходСоСчета" Тогда
					ЗаполнитьРеквизитыРасходСоСчета(ОбъектДокумента, СтрокаСекции, ЭтоНовыйДокумент);
				ИначеЕсли ТипДокумента = "ПоступлениеНаСчет" Тогда
					ЗаполнитьРеквизитыПоступлениеНаСчет(ОбъектДокумента, СтрокаСекции, ЭтоНовыйДокумент);
				КонецЕсли;
				
				Если ОбъектДокумента.ПометкаУдаления Тогда
					ЗадатьПометкуНаУдаление(ОбъектДокумента, Ложь);
				КонецЕсли;
				
				ЗаписатьОбъект(ОбъектДокумента, СтрокаСекции, ЭтоНовыйДокумент);
				
				Если НЕ ОбъектДокумента.ЭтоНовый() Тогда
					Если НЕ ЗначениеЗаполнено(СтрокаСекции.Документ) Тогда
						СтрокаСекции.Документ = ОбъектДокумента.Ссылка;
						Если СтрокаСекции.ВидДокумента = "РасходСоСчета" Тогда
							РеквизитДаты = "ДатаОплаты";
							РеквизитНомера = "Номер";
						Иначе
							РеквизитДаты = "ДатаВходящегоДокумента";
							РеквизитНомера = "НомерВходящегоДокумента";
						КонецЕсли;
						СтрокаСекции.НомерДок = ОбъектДокумента[РеквизитНомера];
					КонецЕсли;
				КонецЕсли; 
			Иначе
				ТекстСообщения = НСтр(
					"ru = 'Платежный документ ""%Операция%"" №%Номер% от %Дата% не может быть загружен:
					|%РезультатПроверки%!'"
				);
				ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Операция%", СтрокаСекции.Операция);
				ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Номер%", СтрокаСекции.Номер);
				ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Дата%", СтрокаСекции.Дата);
				ТекстСообщения = СтрЗаменить(ТекстСообщения, "%РезультатПроверки%", РезультатПроверки);
				УправлениеНебольшойФирмойСервер.СообщитьОбОшибке(ЭтотОбъект, ТекстСообщения);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	// Платежные поручения исходящие, отсутствующие в списке загруженным помечаем
	// на удаление.
	СинхронизироватьДокументыПоСчетам(
		ДокументыКИмпорту,
		"РасходСоСчета",
		"ПоступлениеНаСчет",
		НачалоИнтервалаЗагрузки,
		КонецИнтервалаЗагрузки,
		ИмпортРасчетныеСчета
	);
	
КонецПроцедуры // Загрузить()

// ПРОЦЕДУРЫ И ФУНКЦИИ ВЫГРУЗКИ

// Процедура заполняет значения таблицы для экспорта.
//
Процедура ЗаполнитьЗначениеЭкспорта(СтрокаЭкспорта, ВыборкаДляЭкспорта)
	
	Плательщик = "Организация";
	Получатель = "Контрагент";
	
	Если ВыборкаДляЭкспорта.Дата < Дата('20110101') Тогда
		СтрокаЭкспорта.Номер = УправлениеНебольшойФирмойСервер.ПолучитьНомерНаПечать(ВыборкаДляЭкспорта.Номер, Организация.Префикс);
	Иначе
		СтрокаЭкспорта.Номер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаДляЭкспорта.Номер, Истина, Истина);
	КонецЕсли;
	
	СтрокаЭкспорта.Дата = ВыборкаДляЭкспорта.Дата;
	СтрокаЭкспорта.Сумма = Формат(ВыборкаДляЭкспорта.СуммаДокумента, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=' '; ЧГ=0");
	СтрокаЭкспорта.ПлательщикСчет = ВыборкаДляЭкспорта[Плательщик + "НомерСчета"];
	СтрокаЭкспорта.ПолучательСчет = ВыборкаДляЭкспорта[Получатель + "НомерСчета"];
	СтрокаЭкспорта.ВидПлатежа = ВыборкаДляЭкспорта.ВидПлатежа;
	НепрямыеРасчетыУПлательщика = ЗначениеЗаполнено(ВыборкаДляЭкспорта[Плательщик + "БанкДляРасчетов"]);
	НепрямыеРасчетыУПолучателя  = ЗначениеЗаполнено(ВыборкаДляЭкспорта[Получатель + "БанкДляРасчетов"]);
	
	// ВидОплаты.
	СтрокаЭкспорта.ВидОплаты = "01";
	
	// Плательщик1.
	ТекстПлательщика = "";
	Если НепрямыеРасчетыУПлательщика Тогда
		ПозицияРС = Найти(ВыборкаДляЭкспорта["ТекстПлательщика"], "р/с"); 
		Если ПозицияРС = 0 Тогда
			ТекстПлательщика = ВыборкаДляЭкспорта["ТекстПлательщика"];
		Иначе
			ТекстПлательщика = СокрЛП((Лев(ВыборкаДляЭкспорта["ТекстПлательщика"], ПозицияРС - 1)));
		КонецЕсли;
	Иначе
		ТекстПлательщика = ВыборкаДляЭкспорта["ТекстПлательщика"];
	КонецЕсли;
	СтрокаЭкспорта.Плательщик1 = ТекстПлательщика;
	
	// Плательщик, ПлательщикИНН.
	Значение = ВыборкаДляЭкспорта.ИННПлательщика;
	Если ПустаяСтрока(Значение) Тогда
		Значение = ВыборкаДляЭкспорта[Плательщик + "ИНН"];
	КонецЕсли;
	СтрокаЭкспорта.ПлательщикИНН = Значение;
	СтрокаЭкспорта.Плательщик = "ИНН " + Значение + " " + СтрокаЭкспорта.Плательщик1;
	
	// ПлательщикРасчСчет, ПлательщикБанк1, ПлательщикБанк2, ПлательщикБИК,
	// ПлательщикКорсчет, Плательщик2, Плательщик3, Плательщик4.
	Если НепрямыеРасчетыУПлательщика Тогда
		СтрокаЭкспорта.Плательщик2 		  = ВыборкаДляЭкспорта[Плательщик + "НомерСчета"];
		СтрокаЭкспорта.Плательщик3 		  = ВыборкаДляЭкспорта[Плательщик + "Банк"];
		СтрокаЭкспорта.Плательщик4 		  = ВыборкаДляЭкспорта[Плательщик + "ГородБанка"];
		СтрокаЭкспорта.Плательщик 		  = СтрокаЭкспорта.Плательщик + " р/с " + СтрокаЭкспорта.Плательщик2 + " в " + СтрокаЭкспорта.Плательщик3 + " " + СтрокаЭкспорта.Плательщик4;
		СтрокаЭкспорта.ПлательщикРасчСчет = ВыборкаДляЭкспорта[Плательщик + "РасчСчет"];
		СтрокаЭкспорта.ПлательщикБанк1    = ВыборкаДляЭкспорта[Плательщик + "БанкДляРасчетов"];
		СтрокаЭкспорта.ПлательщикБанк2    = ВыборкаДляЭкспорта[Плательщик + "ГородРЦБанка"];
		СтрокаЭкспорта.ПлательщикБИК      = ВыборкаДляЭкспорта[Плательщик + "БИКРЦБанка"];
		СтрокаЭкспорта.ПлательщикКорсчет  = ВыборкаДляЭкспорта[Плательщик + "КоррСчетРЦБанка"];
	Иначе
		СтрокаЭкспорта.ПлательщикРасчСчет = ВыборкаДляЭкспорта[Плательщик + "НомерСчета"];
		СтрокаЭкспорта.ПлательщикБанк1    = ВыборкаДляЭкспорта[Плательщик + "Банк"];
		СтрокаЭкспорта.ПлательщикБанк2    = ВыборкаДляЭкспорта[Плательщик + "ГородБанка"];
		СтрокаЭкспорта.ПлательщикБИК      = ВыборкаДляЭкспорта[Плательщик + "БИКБанка"];
		СтрокаЭкспорта.ПлательщикКорсчет  = ВыборкаДляЭкспорта[Плательщик + "РасчСчет"];
	КонецЕсли;
	
	// Получатель1.
	ТекстПолучателя = "";
	Если НепрямыеРасчетыУПолучателя Тогда
		ПозицияРС = найти(ВыборкаДляЭкспорта["ТекстПолучателя"], "р/с");
		Если ПозицияРС = 0 Тогда
			ТекстПолучателя = ВыборкаДляЭкспорта["ТекстПолучателя"];
		Иначе
			ТекстПолучателя = СокрЛП((Лев(ВыборкаДляЭкспорта["ТекстПолучателя"], ПозицияРС-1)));
		КонецЕсли;
	Иначе
		ТекстПолучателя = ВыборкаДляЭкспорта["ТекстПолучателя"];
	КонецЕсли;
	СтрокаЭкспорта.Получатель1 = ТекстПолучателя;
	
	// Получатель, ПолучательИНН.
	Значение = ВыборкаДляЭкспорта.ИННПолучателя;
	Если ПустаяСтрока(Значение) Тогда
		Значение = ВыборкаДляЭкспорта[Получатель + "ИНН"];
	КонецЕсли;
	СтрокаЭкспорта.ПолучательИНН = Значение;
	СтрокаЭкспорта.Получатель = "ИНН " + Значение + " " + СтрокаЭкспорта.Получатель1;
	
	// ПолучательРасчСчет, ПолучательБанк1, ПолучательБанк2, ПолучательБИК,
	// ПолучательКорсчет, Получатель2, Получатель3, Получатель4.
	Если НепрямыеРасчетыУПолучателя Тогда
		СтрокаЭкспорта.Получатель2 		  = ВыборкаДляЭкспорта[Получатель + "НомерСчета"];
		СтрокаЭкспорта.Получатель3 		  = ВыборкаДляЭкспорта[Получатель + "Банк"];
		СтрокаЭкспорта.Получатель4 		  = ВыборкаДляЭкспорта[Получатель + "ГородБанка"];
		СтрокаЭкспорта.Получатель 		  = СтрокаЭкспорта.Получатель	  + " р/с " + СтрокаЭкспорта.Получатель2 + " в " + СтрокаЭкспорта.Получатель3 + " " + СтрокаЭкспорта.Получатель4;
		СтрокаЭкспорта.ПолучательРасчСчет = ВыборкаДляЭкспорта[Получатель + "РасчСчет"];
		СтрокаЭкспорта.ПолучательБанк1    = ВыборкаДляЭкспорта[Получатель + "БанкДляРасчетов"];
		СтрокаЭкспорта.ПолучательБанк2    = ВыборкаДляЭкспорта[Получатель + "ГородРЦБанка"];
		СтрокаЭкспорта.ПолучательБИК      = ВыборкаДляЭкспорта[Получатель + "БИКРЦБанка"];
		СтрокаЭкспорта.ПолучательКорсчет  = ВыборкаДляЭкспорта[Получатель + "КоррСчетРЦБанка"];
	Иначе
		СтрокаЭкспорта.ПолучательРасчСчет = ВыборкаДляЭкспорта[Получатель + "НомерСчета"];
		СтрокаЭкспорта.ПолучательБанк1    = ВыборкаДляЭкспорта[Получатель + "Банк"];
		СтрокаЭкспорта.ПолучательБанк2    = ВыборкаДляЭкспорта[Получатель + "ГородБанка"];
		СтрокаЭкспорта.ПолучательБИК      = ВыборкаДляЭкспорта[Получатель + "БИКБанка"];
		СтрокаЭкспорта.ПолучательКорсчет  = ВыборкаДляЭкспорта[Получатель + "РасчСчет"];
	КонецЕсли;
	
	// ПлательщикКПП.
	Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПлательщикКПП) Тогда
		СтрокаЭкспорта.ПлательщикКПП = ВыборкаДляЭкспорта.КПППлательщика;
	КонецЕсли;
	
	// ПолучательКПП.
	Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПолучательКПП) Тогда
		СтрокаЭкспорта.ПолучательКПП = ВыборкаДляЭкспорта.КПППолучателя;
	КонецЕсли;
	
	// СтатусСоставителя, ПлательщикКПП, ПолучательКПП, ПоказательКБК, ОКАТО
	// ПоказательОснования, ПоказательПериода, ПоказательНомера, ПоказательДаты,
	// ПоказательТипа.
	Если ВыборкаДляЭкспорта.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.ПеречислениеНалога Тогда
		СтрокаЭкспорта.СтатусСоставителя = ВыборкаДляЭкспорта.СтатусСоставителя;
		Если ПустаяСтрока(СтрокаЭкспорта.СтатусСоставителя) Тогда
			СтрокаЭкспорта.СтатусСоставителя = "0";
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПлательщикКПП) Тогда
			СтрокаЭкспорта.ПлательщикКПП = ВыборкаДляЭкспорта.КПППлательщика;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПлательщикКПП) Тогда
			СтрокаЭкспорта.ПлательщикКПП = "0";
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПолучательКПП) Тогда
			СтрокаЭкспорта.ПолучательКПП = ВыборкаДляЭкспорта.КПППолучателя;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(СтрокаЭкспорта.ПолучательКПП) Тогда
			СтрокаЭкспорта.ПолучательКПП = "0";
		КонецЕсли;
		СтрокаЭкспорта.ПоказательКБК = ВыборкаДляЭкспорта.КодБК;
		СтрокаЭкспорта.ОКАТО         = ВыборкаДляЭкспорта.КодОКАТО;
		Если ПустаяСтрока(ВыборкаДляЭкспорта.ПоказательОснования) Тогда
			СтрокаЭкспорта.ПоказательОснования = "0";
		Иначе
			СтрокаЭкспорта.ПоказательОснования = ВыборкаДляЭкспорта.ПоказательОснования;
		КонецЕсли;
		Если ПустаяСтрока(ВыборкаДляЭкспорта.ПоказательПериода) ИЛИ (ВыборкаДляЭкспорта.ПоказательПериода = "  .  .    ") Тогда
			СтрокаЭкспорта.ПоказательПериода = "0";
		Иначе
			СтрокаЭкспорта.ПоказательПериода = ВыборкаДляЭкспорта.ПоказательПериода;
		КонецЕсли;
		Если ПустаяСтрока(ВыборкаДляЭкспорта.ПоказательНомера) Тогда
			СтрокаЭкспорта.ПоказательНомера = "0";
		Иначе
			СтрокаЭкспорта.ПоказательНомера = ВыборкаДляЭкспорта.ПоказательНомера;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ВыборкаДляЭкспорта.ПоказательДаты) Тогда
			СтрокаЭкспорта.ПоказательДаты = "0";
		Иначе
			СтрокаЭкспорта.ПоказательДаты = Формат(ВыборкаДляЭкспорта.ПоказательДаты,"ДЛФ=Д");
		КонецЕсли;
		ПоказательТипаПредусмотренСтандартамиОбмена = СтрокаЭкспорта.Свойство("ПоказательТипа");
		ПоказательТипаНеВыгружается = ВыборкаДляЭкспорта.Дата >= '20150101'; // Приказ Минфина №126н от 30.10.2014.
		Если ПоказательТипаПредусмотренСтандартамиОбмена Тогда
			Если ПоказательТипаНеВыгружается ИЛИ ПустаяСтрока(ВыборкаДляЭкспорта.ПоказательТипа) Тогда
				СтрокаЭкспорта.ПоказательТипа = "0";
			Иначе
				СтрокаЭкспорта.ПоказательТипа = ВыборкаДляЭкспорта.ПоказательТипа;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	КодПредусмотренСтандартамиОбмена = СтрокаЭкспорта.Свойство("Код");
	КодВыгружаетсяВОтдельномПоле = (ВыборкаДляЭкспорта.Дата >= '20140331');
	Если КодВыгружаетсяВОтдельномПоле И КодПредусмотренСтандартамиОбмена Тогда
		
		Если ВыборкаДляЭкспорта.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.ПеречислениеНалога
			И ПустаяСтрока(ВыборкаДляЭкспорта.ИдентификаторПлатежа) Тогда
			СтрокаЭкспорта.Код = "0"; // требования 107н
		Иначе
			СтрокаЭкспорта.Код = ВыборкаДляЭкспорта.ИдентификаторПлатежа; // только требования 383-П
		КонецЕсли;
		
	КонецЕсли;
	
	// Очередность.
	СтрокаЭкспорта.Очередность = "" + ВыборкаДляЭкспорта.ОчередностьПлатежа;
	
	// НазначениеПлатежа, НазначениеПлатежа1, НазначениеПлатежа2, НазначениеПлатежа3,
	// НазначениеПлатежа4, НазначениеПлатежа5, НазначениеПлатежа6.
	СтрокаЭкспорта.НазначениеПлатежа = СтрЗаменить(
		СтрЗаменить(
			СтрЗаменить(
				ВыборкаДляЭкспорта.НазначениеПлатежа,
				Символы.ПС,
				" "),
			Символы.ВК,
			""),
		Символы.ПФ,
		""
	);
	КоличествоСтрокНП = СтрЧислоСтрок(ВыборкаДляЭкспорта.НазначениеПлатежа);
	Если КоличествоСтрокНП > 6 Тогда
		КоличествоСтрокНП = 6;
	КонецЕсли;
	Для Сч = 1 По КоличествоСтрокНП Цикл
		СтрокаЭкспорта["НазначениеПлатежа" + Сч] = СтрПолучитьСтроку(ВыборкаДляЭкспорта.НазначениеПлатежа, Сч);
	КонецЦикла;
	Для Сч = (КоличествоСтрокНП + 1) По 6 Цикл
		СтрокаЭкспорта["НазначениеПлатежа" + Сч] = "";
	КонецЦикла;
	
КонецПроцедуры // ЗаполнитьЗначениеЭкспорта()

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

// Процедура выгружает платежные поручения.
//
Функция Выгрузить(РасширениеРаботыСФайламиПодключено, КлючУникальности) Экспорт
	
	ДокументыНаЭкспорт = Выгрузка.Выгрузить();
	ПотокВыгрузки = Новый ТекстовыйДокумент();
	
	Если Кодировка = "DOS" Тогда
		ПотокВыгрузки.УстановитьТипФайла(КодировкаТекста.OEM);
	Иначе
		ПотокВыгрузки.УстановитьТипФайла(КодировкаТекста.ANSI);
	КонецЕсли;
	
	// Формируем заголовок.
	ПотокВыгрузки.ДобавитьСтроку("1CClientBankExchange");
	ПотокВыгрузки.ДобавитьСтроку("ВерсияФормата=" + ВерсияФормата); // Поддерживаются версии "1.01" и "1.02"
	ПотокВыгрузки.ДобавитьСтроку("Кодировка=" + Кодировка);
	ПотокВыгрузки.ДобавитьСтроку("Отправитель=" + Метаданные.Синоним);
	ПотокВыгрузки.ДобавитьСтроку("Получатель=" + Программа);
	ПотокВыгрузки.ДобавитьСтроку("ДатаСоздания=" + Формат(ТекущаяДата(), "ДЛФ=Д"));
	ПотокВыгрузки.ДобавитьСтроку("ВремяСоздания=" + Формат(ТекущаяДата(), "ДЛФ=В"));
	ПотокВыгрузки.ДобавитьСтроку("ДатаНачала=" + Формат(НачПериода, "ДЛФ=Д"));
	ПотокВыгрузки.ДобавитьСтроку("ДатаКонца=" + Формат(КонПериода, "ДЛФ=Д"));
	ПотокВыгрузки.ДобавитьСтроку("РасчСчет=" + БанковскийСчет.НомерСчета);
	ПотокВыгрузки.ДобавитьСтроку("Документ=Платежное поручение");
	
	// Выводим отмеченные секции документов.
	Для каждого СтрокаСекции Из ДокументыНаЭкспорт Цикл
		Если НЕ(СтрокаСекции.Выгружать)Тогда
			Продолжить;
		КонецЕсли;
		Буфер = ПолучитьСекциюДокумент(СтрокаСекции, ДокументыНаЭкспорт.Колонки);
		КоличествоСрокСекции = СтрЧислоСтрок(Буфер);
		Для Сч = 1 По КоличествоСрокСекции Цикл
			ПотокВыгрузки.ДобавитьСтроку(СтрПолучитьСтроку(Буфер, Сч));
		КонецЦикла;
		СтрокаСекции.Готовность = - 2;
	КонецЦикла;
	
	ПотокВыгрузки.ДобавитьСтроку("КонецФайла");
	
	//Если РасширениеРаботыСФайламиПодключено Тогда
	//	Возврат ПотокВыгрузки;
	//Иначе
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
		Если Кодировка = "DOS" Тогда
			ПотокВыгрузки.Записать(ИмяВременногоФайла, КодировкаТекста.OEM);
		Иначе
			ПотокВыгрузки.Записать(ИмяВременногоФайла, КодировкаТекста.ANSI);
		КонецЕсли;
		Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла), КлючУникальности);
		Возврат Адрес;
	//КонецЕсли;
	
КонецФункции // Выгрузить()

// ОБЩИЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Возвращает курс валюты на дату.
//
Функция ПолучитьКурсВалюты(Валюта, ДатаКурса)
	
	Структура = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта));
	
	Возврат Структура;
	
КонецФункции // ПолучитьКурсВалюты()

// Функция формирует структуру экспорта.
//
Функция СформироватьСтруктуруЭкспорта()
	
	СтруктураЭкспорта = Новый структура;
	СтруктураЭкспорта.Вставить( "Выгружать",             ""); // "_",
	СтруктураЭкспорта.Вставить( "Готовность",            ""); // "Готовность",
	СтруктураЭкспорта.Вставить( "НомерДок",              ""); // "№ Документа",
	СтруктураЭкспорта.Вставить( "Номер",                 ""); // "Номер",
	СтруктураЭкспорта.Вставить( "Дата",                  ""); // "Дата",
	СтруктураЭкспорта.Вставить( "Операция",              ""); // "Операция",
	СтруктураЭкспорта.Вставить( "БанковскийСчет",        ""); // "Эл. Р/с организации",
	СтруктураЭкспорта.Вставить( "НомерСчетаОрганизации", ""); // "Р/с организации",
	СтруктураЭкспорта.Вставить( "Сумма",                 ""); // "Сумма",
	СтруктураЭкспорта.Вставить( "Контрагент",            ""); // "Контрагент",
	СтруктураЭкспорта.Вставить( "СчетКонтрагента",       ""); // "Р/с контрагента",
	СтруктураЭкспорта.Вставить( "НомерСчетаКонтрагента", ""); // "Эл. Р/с контрагента",
	СтруктураЭкспорта.Вставить( "КвитанцияДата",         ""); // "Дата форм. квитанции",
	СтруктураЭкспорта.Вставить( "КвитанцияВремя",        ""); // "Время форм. квитанции",
	СтруктураЭкспорта.Вставить( "КвитанцияСодержание",   ""); // "Содержание квитанции",
	СтруктураЭкспорта.Вставить( "ПлательщикСчет",        ""); // "Расчетный счет плательщика",
	СтруктураЭкспорта.Вставить( "Плательщик",            ""); // "Плательщик",
	СтруктураЭкспорта.Вставить( "ПлательщикИНН",         ""); // "ИНН плательщика",
	СтруктураЭкспорта.Вставить( "Плательщик1",           ""); // "Наименование плательщика",
	СтруктураЭкспорта.Вставить( "Плательщик2",           ""); // "Расчетный счет плательщика",
	СтруктураЭкспорта.Вставить( "Плательщик3",           ""); // "Банк плательщика",
	СтруктураЭкспорта.Вставить( "Плательщик4",           ""); // "Город банка плательщика",
	СтруктураЭкспорта.Вставить( "ПлательщикРасчСчет",    ""); // "Корсчет банка плательщика",
	СтруктураЭкспорта.Вставить( "ПлательщикБанк1",       ""); // "РЦ банка плательщика",
	СтруктураЭкспорта.Вставить( "ПлательщикБанк2",       ""); // "Город РЦ банка плательщика",
	СтруктураЭкспорта.Вставить( "ПлательщикБИК",         ""); // "БИК РЦ банка плательщика",
	СтруктураЭкспорта.Вставить( "ПлательщикКорсчет",     ""); // "Корсчет РЦ банка плат.",
	СтруктураЭкспорта.Вставить( "ПолучательСчет",        ""); // "Расчетный счет получателя",
	СтруктураЭкспорта.Вставить( "Получатель",            ""); // "Получатель",
	СтруктураЭкспорта.Вставить( "ПолучательИНН",         ""); // "ИНН получателя",
	СтруктураЭкспорта.Вставить( "Получатель1",           ""); // "Наименование получателя",
	СтруктураЭкспорта.Вставить( "Получатель2",           ""); // "Расчетный счет получателя",
	СтруктураЭкспорта.Вставить( "Получатель3",           ""); // "Банк получателя",
	СтруктураЭкспорта.Вставить( "Получатель4",           ""); // "Город банка получателя",
	СтруктураЭкспорта.Вставить( "ПолучательРасчСчет",    ""); // "Корсчет банка получателя",
	СтруктураЭкспорта.Вставить( "ПолучательБанк1",       ""); // "РЦ банка получателя",
	СтруктураЭкспорта.Вставить( "ПолучательБанк2",       ""); // "Город РЦ банка получателя",
	СтруктураЭкспорта.Вставить( "ПолучательБИК",         ""); // "БИК РЦ банка получателя",
	СтруктураЭкспорта.Вставить( "ПолучательКорсчет",     ""); // "Корсчет РЦ банка пол.",
	СтруктураЭкспорта.Вставить( "ВидПлатежа",            ""); // "Вид платежа",
	СтруктураЭкспорта.Вставить( "ВидОплаты",             ""); // "Вид оплаты",
	СтруктураЭкспорта.Вставить( "СтатусСоставителя",     ""); // "Статус составителя",
	СтруктураЭкспорта.Вставить( "ПлательщикКПП",         ""); // "КПП плательщика",
	СтруктураЭкспорта.Вставить( "ПолучательКПП",         ""); // "КПП получателя",
	СтруктураЭкспорта.Вставить( "ПоказательКБК",         ""); // "Показатель КБК",
	СтруктураЭкспорта.Вставить( "ОКАТО",                 ""); // "ОКАТО",
	СтруктураЭкспорта.Вставить( "ПоказательОснования",   ""); // "Показатель основания",
	СтруктураЭкспорта.Вставить( "ПоказательПериода",     ""); // "Показатель нал. периода",
	СтруктураЭкспорта.Вставить( "ПоказательНомера",      ""); // "Показатель номера док.",
	СтруктураЭкспорта.Вставить( "ПоказательДаты",        ""); // "Показатель даты док.",
	
	Если ВерсияФормата < "1.03" Тогда // С 01.01.2015 не используется
		СтруктураЭкспорта.Вставить("ПоказательТипа",     ""); // "Пок. типа платежа"
	КонецЕсли;
	
	СтруктураЭкспорта.Вставить( "Очередность",           ""); // "Очередность платежа",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа",     ""); // "Назначение платежа",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа1",    ""); // "Назначение платежа, стр. 1",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа2",    ""); // "Назначение платежа, стр. 2",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа3",    ""); // "Назначение платежа, стр. 3",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа4",    ""); // "Назначение платежа, стр. 4",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа5",    ""); // "Назначение платежа, стр. 5",
	СтруктураЭкспорта.Вставить( "НазначениеПлатежа6",    ""); // "Назначение платежа, стр. 6",
	СтруктураЭкспорта.Вставить( "Документ",              ""); // "Источник",
	СтруктураЭкспорта.Вставить( "СекцияДокумент",        ""); // "Выгрузка",
	СтруктураЭкспорта.Вставить( "ОписаниеОшибок",        ""); // "Замечания",
	СтруктураЭкспорта.Вставить( "ТипДокумента",          ""); // "Тип пл. документа"
	
	Если ВерсияФормата = "1.02" Тогда
		СтруктураЭкспорта.Вставить("Код", ""); // "Уникальный идентификатор платежа"
	КонецЕсли;
	
	Возврат СтруктураЭкспорта;
	
КонецФункции // СформироватьСтруктуруЭкспорта()

// Процедура добавляет строку в строку.
//
Процедура ДобавитьВСтроку(Буфер, НоваяСтрока)
	
	Если ПустаяСтрока(Буфер) Тогда
		Буфер = НоваяСтрока;
	Иначе
		Буфер = Буфер + Символы.ПС + НоваяСтрока;
	КонецЕсли;
	
КонецПроцедуры // ДобавитьВСтроку()

// Функция приводит значения.
//
Функция ПривестиЗначение(Значение)
	
	Если ТипЗнч(Значение) = Тип("Строка") Тогда
		Возврат СокрЛП(Значение);		
	ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
		Возврат Формат(Значение, "ЧРД=.; ЧРГ=' '; ЧГ=0");
	ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда
		Возврат Формат(Значение, "ДФ=dd.MM.yyyy");
	Иначе
		Возврат "";
	КонецЕсли;
	
КонецФункции // ПривестиЗначение()

// Функция получает дату из строки.
//
Функция ПолучитьДатуИзСтроки(Приемник, Источник)
	
	Буфер = Источник;
	ПозицияТочки = Найти(Буфер, ".");
	Если ПозицияТочки = 0 Тогда
		Возврат НСтр("ru = 'Неверный формат строки с датой'");
	КонецЕсли;
	ЧислоДаты = Лев(Буфер, ПозицияТочки - 1);
	Буфер = Сред(Буфер, ПозицияТочки + 1);
	ПозицияТочки = Найти(Буфер, ".");
	Если ПозицияТочки = 0 Тогда
		Возврат НСтр("ru = 'Неверный формат строки с датой'");
	КонецЕсли;
	МесяцДаты = Лев(Буфер, ПозицияТочки - 1);
	ГодДаты = Сред(Буфер, ПозицияТочки + 1);
	Если СтрДлина(ГодДаты) = 2 Тогда
		Если Число(ГодДаты) < 50 Тогда
			ГодДаты = "20" + ГодДаты;
		Иначе
			ГодДаты = "19" + ГодДаты ;
		КонецЕсли;
	КонецЕсли;
	Попытка
		Приемник = Дата(Число(ГодДаты), Число(МесяцДаты), Число(ЧислоДаты));
	Исключение
		Возврат НСтр("ru = 'Не удалось преобразовать строку в дату'");
	КонецПопытки;
	
	Возврат Приемник;
	
КонецФункции // ПолучитьДатуИзСтроки()

// Функция определяет наличие не цифр в строке.
//
Функция ЕстьНеЦифры(Знач СтрокаПроверки) Экспорт
	
	Если ТипЗнч(СтрокаПроверки) <> Тип("Строка") Тогда
		Возврат Истина;
	КонецЕсли;
	СтрокаПроверки = СокрЛП(СтрокаПроверки);
	Длина = СтрДлина(СтрокаПроверки);
	Для Сч = 1 По Длина Цикл
		Если Найти("0123456789", Сред(СтрокаПроверки, Сч, 1)) = 0 Тогда
			Возврат Истина;
		КонецЕсли; 
	КонецЦикла;
	
	Возврат Ложь;
	
КонецФункции // ЕстьНеЦифры()
Показать
64. sasha-asn 06.11.20 16:31 Сейчас в теме
65. user1491988 12.11.20 10:46 Сейчас в теме
Добрый день, Денис! Столкнулись с этой проблемой буквально вчера, возможно от вас получить помощь? т.к. все вышеприведенный текст для меня "темный лес" )))
Прикрепленные файлы:
66. kasper076 101 25.12.20 19:10 Сейчас в теме
Приогромное. Все работает.
67. introl 27.02.21 18:51 Сейчас в теме
Спасибо огромное! Много лет приходилось вручную чистить Код=. Все сработало, только в моем случае вместо "КодНазПлатежа" указала "Код".
68. Elected 20 15.03.22 09:44 Сейчас в теме
Сегодня появилась ошибка "Неверный реквизит платежного документа, строка 390 : КодДебитора=59F"... Банки новый реквизит добавили в выгрузку, а в 1С (УПП) такого реквизита нет.
73. Zlodey 47 06.07.23 08:14 Сейчас в теме
Делаем как написал ТС и все будет работать. Проверено на Комплексная автоматизация, редакция 1.1 (1.1.115.1)
Оставьте свое сообщение