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

13.05.19

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка
.epf 37,58Kb
15
15 Скачать (2 SM) Купить за 2 150 руб.
Отчет- валидация данных
.erf 9,02Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.
ТЗ
.docx 448,83Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

SalesWorks УТ11

См. также

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    23104    159    48    

117

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    19643    18    SQV0    49    

37

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

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

8970 руб.

15.12.2015    170063    938    364    

400

SALE! 10%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    140118    782    295    

409

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

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

84000 руб.

19.08.2020    24351    23    1    

25

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71489    180    148    

120

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

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

28500 руб.

21.04.2017    95385    126    40    

214

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194130    148    242    

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


Не рекомендую данную публикацию, без глобальной доработки напильником она запустится только на конфигурации автора.
Мог бы - потребовал см назад :(
2. rozer 310 17.02.18 19:51 Сейчас в теме
(1) Странно ожидать что это готовое решение - см. фразу "Формат обмена и нюансы описаны в прилагаемом описании".
Дело в том что этот продукт внедряется ТОЛЬКО индивидуально т.е. это индивидуальные требования дистрибутора и ТЗ соответственно. В данном конкретном этом случае клиент был дистрибутор компании Данон. Люди которые уже качали данную публикацию использовали ее как "пример для допила под свое ТЗ". Допиливать конфу не надо - выгружаемая инфо по товару "маркируется" доп.реквизитами.
3. CnupT 70 18.02.18 08:21 Сейчас в теме
Заплатить см за возможность скачать "нюансы" и узнать, что эта обработка тебе не подходит.
Это называется мошенничество.
4. rozer 310 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 310 25.09.18 09:59 Сейчас в теме
(5)
ip_frolova_1c@mail.ru


ушло на почту
7. rozer 310 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 9 05.08.20 15:37 Сейчас в теме
Добрый день.
Спасибо за обработку обмена с SalesWorks Enterprise!
Единственно что немного не понятно, почему механизм Импорта данных закомментирован?
С ним были какие-то сложности?
21. rozer 310 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 9 18.08.20 13:34 Сейчас в теме
(21)
Спасибо.
Так же не понял какой должен быть тип значения плана видов характеристик в отборе продукции.
23. rozer 310 18.08.20 14:49 Сейчас в теме
(22) допзначение, справочник
24. FReIM 9 19.08.20 16:46 Сейчас в теме
25. svetaturbo 26.08.21 15:45 Сейчас в теме
Добрый день! Подскажите, пожалуйста, есть ли в выгрузке файл о долгах торговых точках outletDebs.xml ?
26. rozer 310 26.08.21 17:24 Сейчас в теме
(25) добрый, это c dbf форматом а не на xml. В dbf есть долги вроде.
Оставьте свое сообщение