УТ11.2: внешняя обработка выгрузки данных в SalesWorks

13.05.19

Учетные задачи - Оптовая торговля

Внешняя обработка для экспорта данных из УТ11.2 в систему SalesWorks®Enterprise.

Скачать файлы

Наименование Файл Версия Размер
Обработка
.epf 37,58Kb
14
.epf 37,58Kb 14 Скачать
Отчет- валидация данных
.erf 9,02Kb
8
.erf 9,02Kb 8 Скачать
ТЗ
.docx 448,83Kb
5
.docx 448,83Kb 5 Скачать

Обработка предназначена для экспорта данных в систему SalesWorks®Enterprise. 

Формат обмена и нюансы описаны в прилагаемом описании.

Обработка работает как в интерактивном режиме, так и в режиме регламентного задания (запуск по расписанию).

Для автоматического запуска необходимо добавить обработку в раздел "Дополнительные отчеты и обработки".

Также прилагается отчет для валидации данных (требуется по ТЗ).

Тестировалось на версии 11.2.3.101.

SalesWorks УТ11

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90161    105    39    

190

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134916    722    291    

388

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22442    19    1    

22

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68412    178    138    

111

ЕГАИС++. Опт, производство, импорт

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 руб.

15.12.2015    165949    679    362    

385

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34167    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46281    196    64    

157
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CnupT 69 17.02.18 17:46 Сейчас в теме
Внимание, это скорее шаблон, а не готовое решение.
Код изобилует запросами вида:
        |	Номенклатура.ТоварХенкель.Код КАК LocalCode,
	|	Номенклатура.КодДляОбмена КАК Code,
	|	Номенклатура.ТоварХенкель.Наименование КАК ShortName,
	|	Номенклатура.ТоварХенкель.НаименованиеПолное КАК Name,
	|	Номенклатура.Упаковка КАК Pack_Qty,
	|	Номенклатура.ЭтоМикс КАК IsMix,
	|	2 КАК Status,
	|	&ТекДата КАК DTLM
	|ИЗ
	|	ВТ_ТоварыХенкель КАК Номенклатура";
Показать


Не рекомендую данную публикацию, без глобальной доработки напильником она запустится только на конфигурации автора.
Мог бы - потребовал см назад :(
2. rozer 306 17.02.18 19:51 Сейчас в теме
(1) Странно ожидать что это готовое решение - см. фразу "Формат обмена и нюансы описаны в прилагаемом описании".
Дело в том что этот продукт внедряется ТОЛЬКО индивидуально т.е. это индивидуальные требования дистрибутора и ТЗ соответственно. В данном конкретном этом случае клиент был дистрибутор компании Данон. Люди которые уже качали данную публикацию использовали ее как "пример для допила под свое ТЗ". Допиливать конфу не надо - выгружаемая инфо по товару "маркируется" доп.реквизитами.
3. CnupT 69 18.02.18 08:21 Сейчас в теме
Заплатить см за возможность скачать "нюансы" и узнать, что эта обработка тебе не подходит.
Это называется мошенничество.
4. rozer 306 18.02.18 08:56 Сейчас в теме
(3) тут нельзя в рамках публикации такой сделать бесплатным тз. Я узнавал специально у поддержки. Если человек интересовался обработкой - тз высылал на почту и что вам мешало это сделать
5. lenafV 25.09.18 08:30 Сейчас в теме
Добрый день! можете отправить ТЗ на почту ip_frolova_1c@mail.ru или сказать данная обработка писалась под Standard DMS – ghjLite v2.0 (4 экселевских таблицы)?
Прикрепленные файлы:
ТЗ общее.docx
6. rozer 306 25.09.18 09:59 Сейчас в теме
(5)
ip_frolova_1c@mail.ru


ушло на почту
7. rozer 306 25.09.18 10:01 Сейчас в теме
(5) и да там dbf еще а у вас эксель ? брр )
8. lenafV 25.09.18 11:13 Сейчас в теме
Спасибо! такую выгрузку мы писали и она у нас есть=) сейчас сказали еще в экселе написать - подумали может у вас есть)
9. tinka44 23.04.20 12:00 Сейчас в теме
Подскажите - А Отчет- валидация данных для УТ 10 (точнее КА 1,1) имеется у вас?
10. user930087 23.04.20 12:19 Сейчас в теме
(9) насчет валидации надо смотреть все равно вашу выгрузку и нюансы ее, ибо например каждый по-своему формирует номера документов выгружаемых в SW
11. tinka44 23.04.20 12:31 Сейчас в теме
Прикрепил ТЗ для FRISO CAMPINO - выгрузка валидации. Посмотрите с вашей выгрузкой сильно отличается - если доработаете по ТЗ под CAMPINO - С удовольствием приобрету (89101924313)
Прикрепленные файлы:
Методика выгрузки данных в отчеты XML.docx
Files.zip
XML.zip
12. user930087 23.04.20 12:57 Сейчас в теме
(11) я писал валидацию под кампину, но как писал выше надо смотреть как проходит у вас выгрузка в SW. Валидация документов проходит по номеру, для этого надо знать грузятся у нас номера как есть или же к ним что-то добавляется.
13. tinka44 23.04.20 13:49 Сейчас в теме
14. user930087 23.04.20 14:18 Сейчас в теме
(13) я посмотрю сегодня обработку выгрузки для валидации, я делал файлы в эксель, если там используются дополнительные реквизиты какие-то, например код продукции SW, то надо будет уточнить у вас откуда он берется в вашей базе. Доработка под вас в любом случае не займет очень много времени. У вас логин и пароль для доступа к фтп есть?
15. user930087 23.04.20 14:19 Сейчас в теме
(13) и так же список видов документов, которые грузятся от вас будет необходим
16. tinka44 23.04.20 15:10 Сейчас в теме
Напишите вашу почту - я скину всю информацию - в том числе Эксель файлы с кодами продукции
17. user930087 23.04.20 15:13 Сейчас в теме
18. tinka44 23.04.20 15:14 Сейчас в теме
Поступления, реализации, оприходования, списания, корр.реализаций (БД-Комплексная автоматизация 1,1)
19. user930087 27.04.20 09:47 Сейчас в теме
(18) не отвечаете на письма
20. FReIM 8 05.08.20 15:37 Сейчас в теме
Добрый день.
Спасибо за обработку обмена с SalesWorks Enterprise!
Единственно что немного не понятно, почему механизм Импорта данных закомментирован?
С ним были какие-то сложности?
21. rozer 306 05.08.20 17:21 Сейчас в теме
(20) есть версия с загрузкой заказов но сюда не выкладываю т.к написана для УТ11.4: Агент Плюс Мобильная Торговля.

оставлю здесь область загрузки



#Область ДанныеИмпорта

Процедура ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,ТекстКомментария,ЭтоОшибка=Ложь) Экспорт
	ЛогТекст.ДобавитьСтроку(Строка(ТекущаяДатаСеанса())+ " - "+ТекстКомментария);
КонецПроцедуры

Функция ПреобразоватьВДанные1С(Знач Знч,Знач ТипДанныхСтр,Знач соответствиеКэшСкладов=Неопределено)
    Если ТипДанныхСтр="Число" Тогда
	   Возврат Число(Знч);
	   
	ИначеЕсли ТипДанныхСтр="Дата" Тогда
	   Возврат ?(ЗначениеЗаполнено(Знч),Дата(Знч),Дата('00010101'));
	   
	ИначеЕсли ТипДанныхСтр="DTLM" Тогда
	   Возврат ?(ЗначениеЗаполнено(Знч),Дата(СтрЗаменить(СтрЗаменить(Знч, " ",""),":","")),Дата('00010101'));   
	   
	ИначеЕсли ТипДанныхСтр="Булево" Тогда
	   Возврат Булево(Знч);
	   
    ИначеЕсли ТипДанныхСтр="Строка" Тогда
	   Возврат СокрЛП(Строка(Знч));
	   
	ИначеЕсли ТипДанныхСтр="Агенты" Тогда
		Если НЕ ЗначениеЗаполнено(Знч) Тогда
		   Возврат Неопределено;
	    КонецЕсли;
		Возврат ПланыОбмена.апМобильноеПриложениеТорговыйПредставитель.НайтиПоКоду(СокрЛП(Знч));
		
	ИначеЕсли ТипДанныхСтр="Номенклатура" Тогда
		Если НЕ ЗначениеЗаполнено(Знч) Тогда
		   Возврат Неопределено;
	    КонецЕсли;
		Возврат Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Знч));
	
	ИначеЕсли ТипДанныхСтр="Партнеры" Тогда
		Если НЕ ЗначениеЗаполнено(Знч) Тогда
		   Возврат Неопределено;
	    КонецЕсли;
	    СтрокаЗнч=СокрЛП(Строка(Знч));
		Если ЗначениеЗаполнено(СтрокаЗнч) Тогда
			НашлиПартнера=Справочники.Партнеры.НайтиПоРеквизиту("rozКодКонтрагентаТочкиДоставкиКИС",СокрЛП(Знч));
			Если ЗначениеЗаполнено(НашлиПартнера) Тогда
			   Возврат НашлиПартнера;
			КонецЕсли; 
			НашлиПартнера=Справочники.Партнеры.НайтиПоКоду(СокрЛП(Знч));
			Если ЗначениеЗаполнено(НашлиПартнера) Тогда
			   Возврат НашлиПартнера;
			КонецЕсли;
		КонецЕсли; 
	ИначеЕсли ТипДанныхСтр="Контрагенты" Тогда
		Если НЕ ЗначениеЗаполнено(Знч) Тогда
		   Возврат Неопределено;
	    КонецЕсли;
	    СтрокаЗнч=СокрЛП(Строка(Знч));
		Если ЗначениеЗаполнено(СтрокаЗнч) Тогда
			НашлиКонтрагента=Справочники.Контрагенты.НайтиПоРеквизиту("rozКодКонтрагентаКИС",СокрЛП(Знч));
			Если ЗначениеЗаполнено(НашлиКонтрагента) Тогда
			   Возврат НашлиКонтрагента;
			КонецЕсли; 
			НашлиКонтрагента=Справочники.Контрагенты.НайтиПоКоду(СокрЛП(Знч));
			Если ЗначениеЗаполнено(НашлиКонтрагента) Тогда
			   Возврат НашлиКонтрагента;
			КонецЕсли;
		КонецЕсли; 
	ИначеЕсли ТипДанныхСтр="Склады" Тогда
		Если НЕ ЗначениеЗаполнено(Знч) Тогда
		   Возврат Неопределено;
	    КонецЕсли;
	    СтрокаЗнч=СокрЛП(Строка(Знч));
		Если ЗначениеЗаполнено(СтрокаЗнч) Тогда
			Возврат соответствиеКэшСкладов.Получить(СокрЛП(Знч));
		КонецЕсли; 
	КонецЕсли; 
	
    Возврат Неопределено;
КонецФункции

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

Процедура СоздатьЗаказы(XB_ЗаказыШапка,XB_ЗаказыСтроки,СпособЗагрузки,ЛогТекст)
	Перем ДоляПрогресса;
	Перем Прогресс;
	
	XB_ЗаказыШапка.Первая();
	ВсегоЗаписей_XB_ЗаказыШапка=XB_ЗаказыШапка.КоличествоЗаписей();
	ДоляПрогресса=?(ВсегоЗаписей_XB_ЗаказыШапка>0,Окр(100/ВсегоЗаписей_XB_ЗаказыШапка,0),0);
	Прогресс=0;
	
	ДеревоЗаказов = Новый ДеревоЗначений;
	ДеревоЗаказов.Колонки.Добавить("Order_No"); 				//Идентификатор документа
	ДеревоЗаказов.Колонки.Добавить("OL_Code");                  //Код ТТ 
	ДеревоЗаказов.Колонки.Добавить("Контрагент");               //Контрагент
	ДеревоЗаказов.Колонки.Добавить("Order_Date");               //Время и дата создания документа
	ДеревоЗаказов.Колонки.Добавить("Exec_Date");                //Дата, на которую должен быть выполнен (отгружен) заказ
	ДеревоЗаказов.Колонки.Добавить("DOUBLED");                  //Специальный атрибут повторного экспорта документа
	ДеревоЗаказов.Колонки.Добавить("COMMENT");                  //Произвольный комментарий к заявке
	ДеревоЗаказов.Колонки.Добавить("DTLM");                     //Дата и время модификации записи в SalesWorks. 
	ДеревоЗаказов.Колонки.Добавить("Pay_Date");                 //Дата оплаты
	ДеревоЗаказов.Колонки.Добавить("MERCH_CODE");               //Внешний код торгового представителя из учетной системы
	ДеревоЗаказов.Колонки.Добавить("WAREH_CODE");               //Код склада
	ДеревоЗаказов.Колонки.Добавить("LOCALCODE");                //Код локальной продукции
	ДеревоЗаказов.Колонки.Добавить("Qty");                      //Количество товара
	
	МассивНомеровУспешноЗагруженныхЗаказов=Новый Массив();
	
	Попытка
		
		//шапки заказов
		НомДокаИзФайла=0;
		Пока НЕ XB_ЗаказыШапка.ВКонце() Цикл
			НомДокаИзФайла=НомДокаИзФайла+1;
			
			НомерЗаказа		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("Order_No"),"Число");
			Если НЕ ЗначениеЗаполнено(НомерЗаказа) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Пустой номер заказа. Пропуск строки "+СокрЛП(XB_ЗаказыШапка.НомерЗаписи())+" файла OLORDERH",Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			
			ПредставлениеДокумента="№ "+СокрЛП(НомерЗаказа)+" от "+XB_ЗаказыШапка.ПолучитьЗначениеПоля("Order_Date");
			
			ТочкаЗаказа		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("OL_Code"),"Партнеры");
			Если НЕ ЗначениеЗаполнено(ТочкаЗаказа) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Не найден партнер по коду """+XB_ЗаказыШапка.ПолучитьЗначениеПоля("OL_Code")+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			Если ЗначениеЗаполнено(ТочкаЗаказа) И ТочкаЗаказа.ПометкаУдаления Тогда
			    ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Партнер помечен на удаление """+XB_ЗаказыШапка.ПолучитьЗначениеПоля("OL_Code")+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли; 
			
			Контрагент = ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("PAYF_CODE"),"Контрагенты");
			Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Не найден контрагент по коду """+XB_ЗаказыШапка.ПолучитьЗначениеПоля("PAYF_CODE")+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			Если ЗначениеЗаполнено(Контрагент) И Контрагент.ПометкаУдаления Тогда
			    ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Контрагент помечен на удаление """+XB_ЗаказыШапка.ПолучитьЗначениеПоля("PAYF_CODE")+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			
			АгентЗаказа		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("MERCH_CODE"),"Агенты");
			Если НЕ ЗначениеЗаполнено(АгентЗаказа) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Не найден агент по коду """+XB_ЗаказыШапка.ПолучитьЗначениеПоля("MERCH_CODE")+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			
			НашлиЗаказВ1с=Документы.ЗаказКлиента.НайтиПоРеквизиту("rozКодSWE",НомерЗаказа);
			Если ЗначениеЗаполнено(НашлиЗаказВ1с) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Заказ уже был загружен в КИС """+СокрЛП(НашлиЗаказВ1с)+""". Пропуск документа "+ПредставлениеДокумента,Истина);
				МассивНомеровУспешноЗагруженныхЗаказов.Добавить(НомерЗаказа);
				XB_ЗаказыШапка.Следующая();
				Продолжить;
			КонецЕсли;
			
			
			СтрДеревоЗаказов=ДеревоЗаказов.Строки.Добавить();
			СтрДеревоЗаказов.Order_No		= НомерЗаказа;
			СтрДеревоЗаказов.OL_Code        = ТочкаЗаказа;
			СтрДеревоЗаказов.Контрагент     = Контрагент;
			СтрДеревоЗаказов.MERCH_CODE		= АгентЗаказа;
			СтрДеревоЗаказов.Order_Date		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("Order_Date"),"Дата");
			СтрДеревоЗаказов.Exec_Date		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("Exec_Date"),"Дата");
			СтрДеревоЗаказов.DOUBLED		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("DOUBLED"),"Булево");
			СтрДеревоЗаказов.COMMENT		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("COMMENT"),"Строка");
			СтрДеревоЗаказов.DTLM			= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("DTLM"),"DTLM");
			СтрДеревоЗаказов.Pay_Date		= ПреобразоватьВДанные1С(XB_ЗаказыШапка.ПолучитьЗначениеПоля("Pay_Date"),"Дата");
			СтрДеревоЗаказов.WAREH_CODE     = ЭтотОбъект.ОсновнойСклад;
			XB_ЗаказыШапка.Следующая();
		КонецЦикла;
		
		XB_ЗаказыСтроки.Первая();
		ВсегоЗаписей_XB_ЗаказыСтроки=XB_ЗаказыСтроки.КоличествоЗаписей();
		
		//строки заказов
		НомДокаИзФайла=0;
		Пока НЕ XB_ЗаказыСтроки.ВКонце() Цикл
			НомДокаИзФайла=НомДокаИзФайла+1;
			ПредставлениеДокумента="№ "+СокрЛП(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("Order_No"));
			
			НомерЗаказа		= ПреобразоватьВДанные1С(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("Order_No"),"Число");
			НашлиСтрокуДерева=ДеревоЗаказов.Строки.Найти(НомерЗаказа,"Order_No");
			Если НашлиСтрокуДерева<>Неопределено Тогда
				ТоварКИС	= ПреобразоватьВДанные1С(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("LOCALCODE"),"Номенклатура");
				Если НЕ ЗначениеЗаполнено(ТоварКИС) Тогда
					ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Не найден товар по коду """+СокрЛП(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("LOCALCODE"))+""". Пропуск строки документа "+ПредставлениеДокумента,Истина);
					XB_ЗаказыСтроки.Следующая();
					Продолжить;
				КонецЕсли;
				КолВо=ПреобразоватьВДанные1С(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("Qty"),"Число");
				Если НЕ КолВо>0 Тогда
					ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Нулевое количество для товара """+СокрЛП(XB_ЗаказыСтроки.ПолучитьЗначениеПоля("LOCALCODE"))+""". Пропуск строки документа "+ПредставлениеДокумента,Истина);
					XB_ЗаказыСтроки.Следующая();
					Продолжить;
				КонецЕсли; 
				СтрДеревоЗаказов=НашлиСтрокуДерева.Строки.Добавить();
				СтрДеревоЗаказов.LOCALCODE	= ТоварКИС;
				СтрДеревоЗаказов.Qty		= КолВо;
			КонецЕсли; 
			XB_ЗаказыСтроки.Следующая();
		КонецЦикла;
		
		
		//загрузка заказов из деревазначений
		ЗаказовКЗагрузке=ДеревоЗаказов.Строки.Количество();
		ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Создание заказов ("+ЗаказовКЗагрузке+")");
		
		ЗагруженоЗаказов=0;
		Для каждого СтрШапка Из ДеревоЗаказов.Строки Цикл
			
			ЗагруженоЗаказов=ЗагруженоЗаказов+1;
			
			ОбъектДок = Документы.ЗаказКлиента.СоздатьДокумент();
			ОбъектДок.Дата=ТекущаяДатаСеанса();
			ОбъектДок.Заполнить(Неопределено);
			ОбъектДок.rozКодSWE 	= СтрШапка.Order_No;
			ОбъектДок.Комментарий 	= СтрШапка.COMMENT;
			ОбъектДок.Менеджер   	= СтрШапка.MERCH_CODE.Пользователь;
			ОбъектДок.Партнер    	= СтрШапка.OL_Code;
			ОбъектДок.Контрагент 	= СтрШапка.Контрагент;
						
			ОбъектДок.Склад 	  = СтрШапка.WAREH_CODE;
			ОбъектДок.Валюта 	  = Константы.ВалютаУправленческогоУчета.Получить();
			
			ОбъектДок.вртТранзитнаяДоставка = ЗначениеЗаполнено(ОбъектДок.Партнер.вртСкладКроссДок);
			ОбъектДок.вртСкладКроссДок = ОбъектДок.Партнер.вртСкладКроссДок;
			Если ЗначениеЗаполнено(ОбъектДок.Партнер) И ОбъектДок.Партнер.вртТипПартнераКлиента  = Перечисления.вртТипПартнераКлиента.ТочкаДоставки Тогда
				ОбъектДок.СпособДоставки = Перечисления.СпособыДоставки.ДоКлиента;
				струкАдресДоставки = rozСервер.АдресДоставкиПартнераИзКонтактнойИнформации(ОбъектДок.Партнер);
				ОбъектДок.АдресДоставки 				= струкАдресДоставки.АдресДоставки;
				ОбъектДок.АдресДоставкиЗначенияПолей 	= струкАдресДоставки.АдресДоставкиЗначенияПолей;
				Если ЗначениеЗаполнено(ОбъектДок.Партнер.вртПеревозчикПартнер) Тогда
					ОбъектДок.СпособДоставки = Перечисления.СпособыДоставки.СиламиПеревозчикаПоАдресу;
					ОбъектДок.ПеревозчикПартнер = ОбъектДок.Партнер.вртПеревозчикПартнер;
					струкАдресДоставки = rozСервер.АдресДоставкиПартнераИзКонтактнойИнформации(ОбъектДок.Партнер.вртПеревозчикПартнер);	
					ОбъектДок.АдресДоставкиПеревозчика 				= струкАдресДоставки.АдресДоставки;
					ОбъектДок.АдресДоставкиПеревозчикаЗначенияПолей = струкАдресДоставки.АдресДоставкиЗначенияПолей;
				КонецЕсли;
			КонецЕсли;
			
			СтатусЗаказа = Перечисления.СтатусыЗаказовКлиентов.НеСогласован;
			
			ОбъектДок.Приоритет			   = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(Справочники.Приоритеты.ПустаяСсылка());                  		
			ОбъектДок.Статус 			   = СтатусЗаказа;	
			ОбъектДок.ЖелаемаяДатаОтгрузки = СтрШапка.Exec_Date;
			ОбъектДок.ДатаОтгрузки 		   = СтрШапка.Exec_Date;
			
			Если Не ЗначениеЗаполнено(ОбъектДок.ХозяйственнаяОперация) Тогда
				ОбъектДок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту;
			КонецЕсли;
			
			ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(ОбъектДок);
			
			Для каждого СтрТЧ Из СтрШапка.Строки Цикл
				ТекНоменклатура=СтрТЧ.LOCALCODE;
				НоваяСтрока=ОбъектДок.Товары.Найти(ТекНоменклатура,"Номенклатура");
				Если НЕ НоваяСтрока=Неопределено Тогда
					НоваяСтрока.Количество	= НоваяСтрока.Количество+СтрТЧ.Qty;
				Иначе
					НоваяСтрока = ОбъектДок.Товары.Добавить();
					НоваяСтрока.Номенклатура = ТекНоменклатура;
					НоваяСтрока.Количество 	 = СтрТЧ.Qty; 
				КонецЕсли;
				
				ТекЕдиница = ТекНоменклатура.ЕдиницаИзмерения;				
				ТекВидЦены = ЭтотОбъект.ВидЦеныПрайс;     	
				ТекСклад   = ОбъектДок.Склад;
				ТекХарактеристика=Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
				ПроцентРучнойСкидки	= 0;
				Количество=НоваяСтрока.Количество;
				Цена=0;
				
				ИспХарактеристики = Константы.ИспользоватьХарактеристикиНоменклатуры.Получить();
				
				ПоляСтруктуры = "Номенклатура, Характеристика, Упаковка, Склад, ВидЦены, Цена, КоличествоУпаковок, ПроцентРучнойСкидки, СрокПоставки, ДатаОтгрузки";
				
				ДопПоля = "Количество, Сумма, СтавкаНДС, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки," + 
				"ПроцентАвтоматическойСкидки, СтатусУказанияСерий, ПричинаОтмены, Содержание";					
				
				ВспомогательныеПоля = "ХарактеристикиИспользуются, Отменено, ТипНоменклатуры, ВариантОформленияПродажи, СуммаОтменено, СуммаНДСОтменено," +
				"СуммаСНДСОтменено, СуммаАвтоматическойСкидкиОтменено, СуммаРучнойСкидкиОтменено";
				
				ИтоговыеПоляСтруктуры = ПоляСтруктуры + "," + ВспомогательныеПоля + "," + ДопПоля;				
				
				СтруктураЗаполнения = Новый Структура(ИтоговыеПоляСтруктуры, ТекНоменклатура, ТекХарактеристика, ТекЕдиница, ТекСклад, ТекВидЦены, Цена, 
				Количество, ПроцентРучнойСкидки, ОбъектДок.Соглашение.СрокПоставки, ОбъектДок.ДатаОтгрузки, ИспХарактеристики, Ложь);					
				
				СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ОбъектДок);
				
				СтруктураДействий = Новый Структура;				
				СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу",    ТекХарактеристика);
				СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекЕдиница);
				СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
				
				СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Новый Структура("НалогообложениеНДС, Дата, ПоДатеОтгрузки", ОбъектДок.НалогообложениеНДС, ОбъектДок.Дата, Истина));				
				СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
				СтруктураДействий.Вставить("ЗаполнитьСодержание",ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(
								Новый Структура("ХозяйственнаяОперация", ОбъектДок.ХозяйственнаяОперация), Ложь));
				СтруктураЗависимыхРеквизитов = Новый Структура("Отменено", "Сумма, СуммаНДС, СуммаСНДС, СуммаАвтоматическойСкидки, СуммаРучнойСкидки");
				СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", СтруктураЗависимыхРеквизитов);
				
				СтруктураДействий.Вставить("ПересчитатьСуммуНДС",  СтруктураПересчетаСуммы);
				СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);				
				СтруктураДействий.Вставить("ПересчитатьСумму");
				СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));				
				СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
				
				СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
				
				Если ЗначениеЗаполнено(ОбъектДок.Соглашение) Тогда
					СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(ОбъектДок));
				Иначе
					СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныВСтрокеТЧ(ОбъектДок));
				КонецЕсли;
				
				КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
				
				ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтруктураЗаполнения, СтруктураДействий, КэшированныеЗначения);
				
				ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураЗаполнения, ПоляСтруктуры + "," + ДопПоля);
				
				РезервированиеЗаказа=Истина;
				НоваяСтрока.ВариантОбеспечения = ?(РезервированиеЗаказа, Перечисления.ВариантыОбеспечения.Отгрузить, Перечисления.ВариантыОбеспечения.Требуется);
				
			КонецЦикла; //строки дока
			
			ОбъектДок.ЗаполнитьЭтапыГрафикаОплаты();
			
			//расчет скидок ++
			СтруктураПараметры = Новый Структура;
			СтруктураПараметры.Вставить("ПрименятьКОбъекту",                Истина);
			СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет",      Ложь);
			СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Ложь);
			СтруктураПараметры.Вставить("УправляемыеСкидки", Неопределено);
			СкидкиНаценкиСервер.РассчитатьПоЗаказуКлиента(ОбъектДок, СтруктураПараметры);
			//расчет скидок --
			
			ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Попытка записи в КИС из документа "+"№ "+СокрЛП(СтрШапка.Order_No)+" от "+СокрЛП(СтрШапка.Order_Date));
			ОбъектДок.Записать();
			Если ЗначениеЗаполнено(ОбъектДок.Ссылка) Тогда
				ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Создан документ в КИС "+СокрЛП(ОбъектДок)+". Загружен из документа "+"№ "+СокрЛП(СтрШапка.Order_No)+" от "+СокрЛП(СтрШапка.Order_Date));
				МассивНомеровУспешноЗагруженныхЗаказов.Добавить(СтрШапка.Order_No);
			КонецЕсли; 
		КонецЦикла; //шапки дока
		
	Исключение
		
		СтрИсключения="Ошибка при загрузке заказов - "+СокрЛП(ОписаниеОшибки());
		ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,СтрИсключения,Истина);
		УдалитьУспешноЗагруженныеЗаказыИзДБФ(XB_ЗаказыШапка,МассивНомеровУспешноЗагруженныхЗаказов);
		УдалитьУспешноЗагруженныеЗаказыИзДБФ(XB_ЗаказыСтроки,МассивНомеровУспешноЗагруженныхЗаказов);
		ВызватьИсключение СтрИсключения;
		
	КонецПопытки; 
	
	УдалитьУспешноЗагруженныеЗаказыИзДБФ(XB_ЗаказыШапка,МассивНомеровУспешноЗагруженныхЗаказов);
	УдалитьУспешноЗагруженныеЗаказыИзДБФ(XB_ЗаказыСтроки,МассивНомеровУспешноЗагруженныхЗаказов);
	
КонецПроцедуры

Процедура УдалитьУспешноЗагруженныеЗаказыИзДБФ(ДБФ_файл,МассивНомеровУспешноЗагруженныхЗаказов)
	Для каждого СчЭл Из МассивНомеровУспешноЗагруженныхЗаказов Цикл
		ДБФ_файл.Первая();
		Пока НЕ ДБФ_файл.ВКонце() Цикл
			Если ПреобразоватьВДанные1С(ДБФ_файл.ПолучитьЗначениеПоля("Order_No"),"Число")=СчЭл Тогда
			    ДБФ_файл.Удалить();
			КонецЕсли; 
			ДБФ_файл.Следующая();
		КонецЦикла; 
	КонецЦикла;
	
	ДБФ_файл.Сжать();
    ДБФ_файл.ЗакрытьФайл();
КонецПроцедуры
 
Процедура ЗагрузитьДанные(струкНастроек,СпособЗагрузки="Интерактивно") Экспорт
	
	Если НЕ ПроверитьЗаполнение() Тогда
		ОповеститьОбОшибке("Ошибки проверки заполнения");
		Возврат;
	КонецЕсли;
	
	//Importexportyyyymm
	ПутьКЛогу=ДополнитьСлешВПуть(ЭтотОбъект.КаталогЛогов)+"Import"+Формат(ТекущаяДатаСеанса(),"ДФ=yyyyММ")+".txt";
	ЛогТекст = Новый ТекстовыйДокумент;
	ФИ=Новый Файл(ПутьКЛогу);
	Если ФИ.Существует() Тогда 
		ЛогТекст.Прочитать(ПутьКЛогу);
	КонецЕсли;
	ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Начало загрузки: "+ СпособЗагрузки);
	Значение =Ложь;
	ИмпортЭкспорт=Ложь;
	ДирБлок(ИмпортЭкспорт,Значение);
	Попытка
		Если Значение = Истина Тогда 
			
			Если ЭтотОбъект.ИспользоватьФТП Тогда
				ФТП_ВсеОК=ПолучитьСФТП(ЛогТекст);
				Если НЕ ФТП_ВсеОК Тогда
					ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Конец загрузки");	
					ЛогТекст.Записать(ПутьКЛогу,"windows-1251");
					ЗакрытиеДирБлока(ИмпортЭкспорт);
					Возврат;
				КонецЕсли;
			КонецЕсли;
			
			ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Открытие файла для чтения: OLORDERH.DBF и OLORDERD.DBF");
			XB_ЗаказыШапка=ОткрытьФайлИмпорта("OLORDERH.DBF",ЛогТекст);
			XB_ЗаказыСтроки=ОткрытьФайлИмпорта("OLORDERD.DBF",ЛогТекст);
			Если НЕ XB_ЗаказыШапка=Неопределено И НЕ XB_ЗаказыСтроки=Неопределено Тогда
				СоздатьЗаказы(XB_ЗаказыШапка,XB_ЗаказыСтроки,СпособЗагрузки,ЛогТекст);
			Иначе
				Если XB_ЗаказыШапка<>Неопределено Тогда
					XB_ЗаказыШапка.ЗакрытьФайл();
				Иначе
					ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Файл OLORDERH.DBF ошибка открытия!",Истина);
				КонецЕсли;
				Если XB_ЗаказыСтроки<>Неопределено Тогда
					XB_ЗаказыСтроки.ЗакрытьФайл();
				Иначе
					ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Файл OLORDERD.DBF ошибка открытия!",Истина);
				КонецЕсли;
			КонецЕсли;
		Иначе
			ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Данные используются другим пользователем!",Истина);
			ЛогТекст.Записать(ПутьКЛогу,"windows-1251");
			Возврат;
		КонецЕсли;
	Исключение
		//Если возникнут проблемы лог все равно записывать
		ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Произошла ошибка: "+ОписаниеОшибки(),Истина);
		ЛогТекст.Записать(ПутьКЛогу,"windows-1251");
		ЗакрытиеДирБлока(ИмпортЭкспорт);
		Возврат;
	КонецПопытки;
	ЗакрытиеДирБлока(ИмпортЭкспорт);
	ВывестиВПротоколЗагрузки(СпособЗагрузки,ЛогТекст,"Конец загрузки: "+ СпособЗагрузки);	
	ЛогТекст.Записать(ПутьКЛогу,"windows-1251");
КонецПроцедуры

Функция ВернутьДеньДатыФайла(СтрИмяФайла)
    СтрДаты=Сред(СокрЛП(СтрИмяФайла),9,14);
	дГОД=Сред(СтрДаты,1,4);
	дМЕС=Сред(СтрДаты,5,2);
	дДЕНЬ=Сред(СтрДаты,7,2);
	дЧАС=Сред(СтрДаты,9,2);
	дМИН=Сред(СтрДаты,11,2);
	дСЕК=Сред(СтрДаты,13,2);
	Возврат Дата(дГОД,дМЕС,дДЕНЬ);
КонецФункции 

Функция ВернутьПолнуюДатуФайла(СтрИмяФайла)
    СтрДаты=Сред(СокрЛП(СтрИмяФайла),9,14);
	дГОД=Сред(СтрДаты,1,4);
	дМЕС=Сред(СтрДаты,5,2);
	дДЕНЬ=Сред(СтрДаты,7,2);
	дЧАС=Сред(СтрДаты,9,2);
	дМИН=Сред(СтрДаты,11,2);
	дСЕК=Сред(СтрДаты,13,2);
	Возврат Дата(дГОД,дМЕС,дДЕНЬ,дЧАС,дМИН,дСЕК);
КонецФункции 
 
Функция ПолученФайлОтFTP(Сервер,НайденФайлИмя,НайденФайлПолноеИмя,ТекстОшибки,ЛогТекст)
	Попытка
		масНайденныхФайловFTP=Сервер.НайтиФайлы(ДополнитьСлешВПутьФТП(ФТПКаталогИмпорта),"*.zip");
		Если масНайденныхФайловFTP.Количество()=0 Тогда
			ТекстОшибки="Нет данных от SWE.";
			Возврат Ложь;
		КонецЕсли; 
		ТЗФайлов=Новый ТаблицаЗначений();
		ТЗФайлов.Колонки.Добавить("ИмяФайла",ОбщегоНазначенияБПКлиентСервер.ПолучитьОписаниеТиповСтроки(100));
		ТЗФайлов.Колонки.Добавить("ПолноеИмяФайла",ОбщегоНазначенияБПКлиентСервер.ПолучитьОписаниеТиповСтроки(200));
		ТЗФайлов.Колонки.Добавить("ДатаДеньФайла",ОбщегоНазначенияУТ.ПолучитьОписаниеТиповДаты(ЧастиДаты.Дата));
		ТЗФайлов.Колонки.Добавить("ПолнаяДатаФайла",ОбщегоНазначенияУТ.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя));
		Для Каждого Эл Из масНайденныхФайловFTP Цикл
			НоваяСтрТЗФайлов					= ТЗФайлов.Добавить();
			НоваяСтрТЗФайлов.ИмяФайла			= Эл.Имя;	
			НоваяСтрТЗФайлов.ПолноеИмяФайла		= Эл.ПолноеИмя;
			НоваяСтрТЗФайлов.ДатаДеньФайла		= ВернутьДеньДатыФайла(Эл.Имя);
			НоваяСтрТЗФайлов.ПолнаяДатаФайла	= ВернутьПолнуюДатуФайла(Эл.Имя);
		КонецЦикла; 
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ
		|	ТЗФайлов.ДатаДеньФайла,
		|	ТЗФайлов.ПолнаяДатаФайла,
		|	ТЗФайлов.ИмяФайла,
		|	ТЗФайлов.ПолноеИмяФайла
		|ПОМЕСТИТЬ ВТФайлов
		|ИЗ
		|	&ТЗФайлов КАК ТЗФайлов
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТФайлов.ДатаДеньФайла,
		|	МАКСИМУМ(ВТФайлов.ПолнаяДатаФайла) КАК ПолнаяДатаФайла
		|ПОМЕСТИТЬ ВТМаксДата
		|ИЗ
		|	ВТФайлов КАК ВТФайлов
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТФайлов.ДатаДеньФайла
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТФайлов.ПолнаяДатаФайла КАК ПолнаяДатаФайла,
		|	ВТФайлов.ИмяФайла,
		|	ВТФайлов.ПолноеИмяФайла
		|ИЗ
		|	ВТФайлов КАК ВТФайлов
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМаксДата КАК ВТМаксДата
		|		ПО ВТФайлов.ПолнаяДатаФайла = ВТМаксДата.ПолнаяДатаФайла
		|
		|УПОРЯДОЧИТЬ ПО
		|	ПолнаяДатаФайла
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|УНИЧТОЖИТЬ ВТМаксДата
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|УНИЧТОЖИТЬ ВТФайлов";
		
		Запрос.УстановитьПараметр("ТЗФайлов",ТЗФайлов);
		ТЗОставляемыеФайлы = Запрос.Выполнить().Выгрузить();
		Если ТЗОставляемыеФайлы.Количество()=0 Тогда
			ТекстОшибки="нет данных от SWE.";
			Возврат Ложь;
		КонецЕсли; 
		
		Для Каждого Эл Из масНайденныхФайловFTP Цикл
			Если ТЗОставляемыеФайлы.Найти(Эл.Имя,"ИмяФайла")=Неопределено Тогда
				Попытка
					Сервер.Удалить(Эл.ПолноеИмя);
				Исключение
					ТекстОповещения=Строка(ТекущаяДатаСеанса())+ " - Ошибка удаления на FTP SWE """+СокрЛП(Эл.ПолноеИмя)+""" при корректировке состава файлов в дате: "+СокрЛП(ОписаниеОшибки());
					ЛогТекст.ДобавитьСтроку(ТекстОповещения);
					ОповеститьОбОшибке(ТекстОповещения);
				КонецПопытки;
			КонецЕсли; 
		КонецЦикла;
		
		НайденФайлИмя=СокрЛП(ТЗОставляемыеФайлы[0].ИмяФайла);
		НайденФайлПолноеИмя=СокрЛП(ТЗОставляемыеФайлы[0].ПолноеИмяФайла);
		Если ЗначениеЗаполнено(НайденФайлИмя) И ЗначениеЗаполнено(НайденФайлПолноеИмя) Тогда
			Возврат Истина;
		КонецЕсли; 
		
	Исключение
		ВызватьИсключение "Ошибка при корректировке состава файлов FTP - "+СокрЛП(ОписаниеОшибки());
	КонецПопытки;
	
	ТекстОшибки="нет данных от SWE.";
	Возврат Ложь;
	
КонецФункции 

Функция ПолучитьСФТП(ЛогТекст)
	
	Попытка
		Сервер = Новый FTPСоединение(ЭтотОбъект.ФТПСервер, Неопределено, ЭтотОбъект.ПользовательФТП, ЭтотОбъект.ПарольФТП, Неопределено, ЭтотОбъект.ПассивныйРежим, Неопределено);
	Исключение
		ТекстОшибки=Строка(ТекущаяДатаСеанса())+ " - Произошла ошибка при подключении к FTP SWE: "+СокрЛП(ОписаниеОшибки());
		ЛогТекст.ДобавитьСтроку(ТекстОшибки);
		ОповеститьОбОшибке(ТекстОшибки);
		Возврат Ложь;
	КонецПопытки;
	
	Попытка
		
		ФайлДляЗагрузки=Неопределено;
		ТолькоИмяФайлаДанныхZipFTP=Неопределено;
		ТекстОшибки="";
		Если НЕ ПолученФайлОтFTP(Сервер,ТолькоИмяФайлаДанныхZipFTP,ФайлДляЗагрузки,ТекстОшибки,ЛогТекст) Тогда
			ТекстОшибки=Строка(ТекущаяДатаСеанса())+ " - "+ТекстОшибки;
			ЛогТекст.ДобавитьСтроку(ТекстОшибки);
			ОповеститьОбОшибке(ТекстОшибки);
			Возврат Ложь;
		КонецЕсли; 
		
		СтрФайлZip=ДополнитьСлешВПуть(ЭтотОбъект.КаталогИмпорта)+""+ТолькоИмяФайлаДанныхZipFTP;
		
		//получение файла и распаковка
		Сервер.Получить(ФайлДляЗагрузки,СтрФайлZip);
		ТекстВЛог=Строка(ТекущаяДатаСеанса())+ " - Произведено получения данных c FTP SWE """+ТолькоИмяФайлаДанныхZipFTP+"""";
		ЛогТекст.ДобавитьСтроку(ТекстВЛог);
		АрхивИмяФайла=Новый ЧтениеZipФайла(СтрФайлZip);
		АрхивИмяФайла.ИзвлечьВсе(ДополнитьСлешВПуть(ЭтотОбъект.КаталогИмпорта),РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
		
		//история загрузки
		Попытка
			ПутьКПапкеСАрхивами=ДополнитьСлешВПуть(ЭтотОбъект.КаталогИмпорта)+"Done";
			ПапкаArhiv = Новый Файл(ПутьКПапкеСАрхивами);
			Если НЕ ПапкаArhiv.Существует() Тогда
				СоздатьКаталог(ПутьКПапкеСАрхивами); 
			КонецЕсли;
			ПереместитьФайл(СтрФайлZip, ПутьКПапкеСАрхивами+"\"+ТолькоИмяФайлаДанныхZipFTP);
		Исключение
			ТекстОшибки=Строка(ТекущаяДатаСеанса())+ " - Произошла ошибка при перемещения в историю загрузки SWE """+ТолькоИмяФайлаДанныхZipFTP+""" c FTP: "+СокрЛП(ОписаниеОшибки());
			ЛогТекст.ДобавитьСтроку(ТекстОшибки);
			ОповеститьОбОшибке(ТекстОшибки);
		КонецПопытки;
		
		//удаление с FTP
		Попытка
			Сервер.Удалить(ФайлДляЗагрузки);
		Исключение
			ТекстОшибки=Строка(ТекущаяДатаСеанса())+ " - Произошла ошибка удаления файла на FTP SWE """+ФайлДляЗагрузки+""" : "+СокрЛП(ОписаниеОшибки());
			ЛогТекст.ДобавитьСтроку(ТекстОшибки);
			ОповеститьОбОшибке(ТекстОшибки);
		КонецПопытки;
		
	Исключение
		ТекстОшибки=Строка(ТекущаяДатаСеанса())+ " - Произошла ошибка при получении и распаковки данных SWE """+ТолькоИмяФайлаДанныхZipFTP+""" c FTP: "+СокрЛП(ОписаниеОшибки());
		ЛогТекст.ДобавитьСтроку(ТекстОшибки);
		ОповеститьОбОшибке(ТекстОшибки);
		Возврат Ложь;
	КонецПопытки; 
	
	Возврат Истина;
	
КонецФункции

#КонецОбласти 

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

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

Показать
22. FReIM 8 18.08.20 13:34 Сейчас в теме
(21)
Спасибо.
Так же не понял какой должен быть тип значения плана видов характеристик в отборе продукции.
23. rozer 306 18.08.20 14:49 Сейчас в теме
(22) допзначение, справочник
24. FReIM 8 19.08.20 16:46 Сейчас в теме
25. svetaturbo 26.08.21 15:45 Сейчас в теме
Добрый день! Подскажите, пожалуйста, есть ли в выгрузке файл о долгах торговых точках outletDebs.xml ?
26. rozer 306 26.08.21 17:24 Сейчас в теме
(25) добрый, это c dbf форматом а не на xml. В dbf есть долги вроде.
Оставьте свое сообщение