Процедура глЗагрузитьДокумент(Конт) Экспорт Если (Конт.Вид() = "ПоступлениеТоваров") ИЛИ (Конт.Вид() = "ПеремещениеТоваров") ИЛИ (Конт.Вид() = "ИнвентОписьТоваров") ИЛИ (Конт.Вид() = "ТТН") тогда Иначе Предупреждение("Для данного документа загрузка не предусмотрена"); Возврат; КонецЕсли; Табл = СоздатьОбъект("ТаблицаЗначений"); Табл.НоваяКолонка("ТМЦ"); Табл.НоваяКолонка("Кол","Число"); Табл.НоваяКолонка("ЦенаУч","Число"); КаталогТСД = ВосстановитьЗначение("КаталогЗагрузкиИзТСД"); Если ФС.ВыбратьКаталог(КаталогТСД,"Выберите каталог ") = 0 Тогда Возврат; КонецЕсли; СохранитьЗначение("КаталогЗагрузкиИзТСД",КаталогТСД); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Документ"); ТЗ.НоваяКолонка("Заголовок"); ТЗ.НоваяКолонка("ВидДок"); Разделитель = "@"; Если ФС.СуществуетФайл(КаталогТСД+ "\doc.dbf") = 1 тогда ДБФ1 = СоздатьОбъект("Xbase"); ДБФ1.ОткрытьФайл(КаталогТСД+ "\doc.dbf"); ДБФ1.Первая(); Пока ДБФ1.ВКонце() = 0 Цикл ТЗ.НоваяСтрока(); ТЗ.Документ = СокрЛП(строка(ДБФ1.IDDOC)); ТЗ.Заголовок = СокрЛП(строка(ДБФ1.TITLE)); ТЗ.ВидДок = СокрЛП(строка(ДБФ1.CVIDDOC)); ДБФ1.Следующая(); КонецЦикла; ИначеЕсли ФС.СуществуетФайл(КаталогТСД+ "\doc.csv") = 1 тогда ТЗ.НоваяКолонка("КА"); ТЗ.НоваяКолонка("Склад"); // ТЗ.НоваяКолонка("Пользователь"); СпрКА = СоздатьОбъект("Справочник.Контрагенты"); СпрМХ = СоздатьОбъект("Справочник.МестаХранения"); ТекстШапка = СоздатьОбъект("Текст"); ТекстШапка.КодоваяСтраница(0); ТекстШапка.Открыть(КаталогТСД+ "\doc.csv"); Для й=2 по ТекстШапка.КоличествоСтрок() Цикл ТекстСтр = ТекстШапка.ПолучитьСтроку(й); ТЗ.НоваяСтрока(); ТЗ.Документ = ПолучитьПараметр(ТекстСтр,Разделитель,1); ТЗ.ВидДок = ПолучитьПараметр(ТекстСтр,Разделитель,1); КодСклада = Число(СтрЗаменить(ПолучитьПараметр(ТекстСтр,Разделитель,1),"""","")); Если СпрМХ.НайтиПоКоду(КодСклада) = 1 тогда ТЗ.Склад = СпрМХ.ТекущийЭлемент(); КонецЕсли; КодКА = Число(СтрЗаменить(ПолучитьПараметр(ТекстСтр,Разделитель,2),"""","")); Если СпрКА.НайтиПоКоду(КодКА) = 1 тогда ТЗ.КА = СпрКА.ТекущийЭлемент(); КонецЕсли; ТЗ.Заголовок = ПолучитьПараметр(ТекстСтр,Разделитель,4); КонецЦикла; КонецЕсли; ТЗ.ВидимостьКолонки("ВидДок",0); НомСтр = ""; Если ТЗ.ВыбратьСтроку(НомСтр,"Выберите документ для загрузки") = 1 тогда ТЗ.ПолучитьСтрокуПоНомеру(НомСтр); ВыбДок = СокрЛП(ТЗ.Документ)+"#"+СокрЛП(ТЗ.ВидДок); Попытка Конт.Контрагент = ТЗ.КА; Исключение КонецПопытки; Попытка Конт.Склад = ТЗ.Склад; Исключение КонецПопытки; Иначе Возврат; КонецЕсли; Состояние("Идет обработка данных..."); Спр = СоздатьОбъект("Справочник.Товары"); Если ФС.СуществуетФайл(КаталогТСД+ "\pos.dbf") = 1 тогда ДБФ = СоздатьОбъект("XBase"); ДБФ.ОткрытьФайл(КаталогТСД + "\pos.dbf"); ДБФ.Первая(); Пока ДБФ.ВКонце() = 0 Цикл Если СокрЛП(строка(ДБФ.IDDOC))+"#"+СокрЛП(строка(ДБФ.CHR_QUAN)) <> ВыбДок Тогда ДБФ.Следующая(); Продолжить; КонецЕсли; НашКод = Число(СтрЗаменить(СтрЗаменить(ДБФ.Articul,"*",""),"""","")); Если Спр.НайтиПоКоду(НашКод,0) = 0 тогда Спр.Новый(); Спр.Код = НашКод; Спр.Наименование = СтрЗаменить(ДБФ.Name,"""",""); Спр.ШтрихКод = НашКод; Спр.Записать(); Сообщить("Записан " + СокрЛП(Спр)); КонецЕсли; Табл.НоваяСтрока(); Табл.ТМЦ = Спр.ТекущийЭлемент(); Табл.Кол = СтрЗаменить(ДБФ.QUAN,"""",""); Табл.ЦенаУч = СтрЗаменить(ДБФ.PRICE,"""",""); ДБФ.Следующая(); КонецЦикла; ИначеЕсли ФС.СуществуетФайл(КаталогТСД+ "\pos.csv") = 1 тогда ТекстТЧ = СоздатьОбъект("Текст"); ТекстТЧ.КодоваяСтраница(0); ТекстТЧ.Открыть(КаталогТСД+ "\pos.csv"); Для й=2 по ТекстТЧ.КоличествоСтрок() Цикл ТекстСтр = ТекстТЧ.ПолучитьСтроку(й); IDDOC = ПолучитьПараметр(ТекстСтр,Разделитель,1); Articul = ПолучитьПараметр(ТекстСтр,Разделитель,1); QUAN = СтрЗаменить(ПолучитьПараметр(ТекстСтр,Разделитель,1),"""",""); CHR_QUAN = ПолучитьПараметр(ТекстСтр,Разделитель,1); Если СокрЛП(строка(IDDOC))+"#"+СокрЛП(строка(CHR_QUAN)) <> ВыбДок Тогда Продолжить; КонецЕсли; НашКод = Число(СтрЗаменить(СтрЗаменить(Articul,"*",""),"""","")); PRICE = СтрЗаменить(ПолучитьПараметр(ТекстСтр,Разделитель,1),"""",""); Если Спр.НайтиПоКоду(НашКод,0) = 0 тогда Name = СтрЗаменить(ПолучитьПараметр(ТекстСтр,Разделитель,2),"""",""); Спр.Новый(); Спр.Код = НашКод; Спр.Наименование = Name; Спр.ШтрихКод = НашКод; Спр.Записать(); Сообщить("Записан " + СокрЛП(Спр)); КонецЕсли; Табл.НоваяСтрока(); Табл.ТМЦ = Спр.ТекущийЭлемент(); Табл.Кол = QUAN; Табл.ЦенаУч = PRICE; КонецЦикла; КонецЕсли; Табл.Свернуть("ТМЦ","Кол,ЦенаУч"); Табл.НоваяКолонка("Обработано","Число"); Если Конт.Вид() = "ПоступлениеТоваров" Тогда Конт.УдалитьСтроки(); Конт.ЗагрузитьТабличнуюЧасть(Табл); Конт.ВыбратьСтроки(); Пока Конт.ПолучитьСтроку() = 1 Цикл глПересчетКол(Конт,"ЦенаУч"); КонецЦикла; ИначеЕсли (Конт.Вид() = "ПеремещениеТоваров") ИЛИ (Конт.Вид() = "ТТН") Тогда Конт.УдалитьСтроки(); Табл.ВыбратьСтроки(); Пока Табл.ПолучитьСтроку() = 1 Цикл глПодготовкаВыбораТоваров(Конт,Табл.ТМЦ,,Табл.Кол); КонецЦикла; Конт.ВыбратьСтроки(); Пока Конт.ПолучитьСтроку() = 1 Цикл ТемпЦена = ВыбратьПодходящуюЦену(Конт.ТМЦ,Конт.Валюта,Конт.Склад,Конт.ТипПрейскуранта,Конт.ДатаДок,Конт,Конт.ЦенаУч,Конт.ИсхНакл); Конт.ЦенаТТН = ТемпЦена; глПересчетКол(Конт,"ЦенаТТН",1); КонецЦикла; ИначеЕсли Конт.Вид() = "ИнвентОписьТоваров" Тогда Конт.ВыбратьСтроки(); Пока Конт.ПолучитьСтроку() = 1 Цикл стр = 0; Если Табл.НайтиЗначение(Конт.ТМЦ,Стр,"ТМЦ") = 1 Тогда Табл.ПолучитьСтрокуПоНомеру(Стр); Конт.КолФ = Табл.Кол; Конт.СумФ = Табл.Кол * Конт.ЦенаУч; Табл.Обработано= 1; КонецЕсли; КонецЦикла; Табл.ВыбратьСтроки(); Пока Табл.ПолучитьСтроку() = 1 Цикл Если Табл.Обработано = 0 тогда Конт.НоваяСтрока(); Конт.ТМЦ = Табл.ТМЦ; Конт.КолФ = Табл.Кол; Конт.ЦенаУч = Табл.ТМЦ.УчетнЦена.Получить(Конт.ДатаДок); Конт.СумФ = (Конт.КолФ * Конт.ЦенаУч); КонецЕсли; КонецЦикла; Конт.ВыбратьСтроки(); Пока Конт.ПолучитьСтроку() = 1 Цикл Конт.ОтклКол = (Конт.КолФ)-Конт.КолБИ; Конт.ОтклСум = (Конт.СумФ)-Конт.СумБИ; КонецЦикла; КонецЕсли; КонецПроцедуры