Есть обработка, которой загружаем накладные в базу, предварительно выгруженные в файл из идентичных конфигураций, подскажите что поправить в коде обработки загрузки, чтобы номер загружаемого документа был не указанный в файле, а присваивался следующий по порядку в текущей базе.
Ниже код
Код |
---|
Функция ЗаполнитьСписокЗначений(Стр) Сп = СоздатьОбъект("СписокЗначений"); Пока 1=1 Цикл ПозЗпт = Найти(Стр,","); Если ПозЗпт>0 Тогда Сп.ДобавитьЗначение(Лев(Стр,ПозЗпт-1)); Стр = Сред(Стр,ПозЗпт+1); Иначе Сп.ДобавитьЗначение(Стр); Прервать; КонецЕсли; КонецЦикла; Возврат Сп; КонецФункции //******************************************* Процедура ВыбратьФайл() Перем Каталог; ИмяФайла = СокрЛП(ФайлЗагрузки); Каталог = "C:\"; Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", "Текстовые (*.txt) |*.txt|Все файлы (*.*) |*.*")=1 Тогда ФайлЗагрузки=Каталог+ИмяФайла; КонецЕсли; КонецПроцедуры //******************************************* Процедура ОткрытьФайл() ИмяФайла = СокрЛП(ФайлЗагрузки); Текст=СоздатьОбъект("Текст"); Текст.КодоваяСтраница(0) Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда Текст.Открыть(ИмяФайла); Текст.Показать("Файл",ИмяФайла); Иначе Предупреждение("Указанный файл не существует"); КонецЕсли; КонецПроцедуры //******************************************* Процедура Загрузить() ДокВН = СоздатьОбъект("Документ.РасходнаяНакладнаяВнутр"); СпрМХ = СоздатьОбъект("Справочник.МестаХранения"); СпрНом = СоздатьОбъект("Справочник.Номенклатура"); СпРекв = СоздатьОбъект("СписокЗначений"); Текст = СоздатьОбъект("Текст"); Текст.КодоваяСтраница(0) Если ФС.СуществуетФайл(СокрЛП(ФайлЗагрузки)) = 1 Тогда Текст.Открыть(СокрЛП(ФайлЗагрузки)); Иначе Предупреждение("Указанный файл не существует"); КонецЕсли; СчДок = 0; Сч = 0; Стр = ""; Для Сч=1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(Сч); Стр = СтрЗаменить(Стр,",","$"); Стр = СтрЗаменить(Стр,"|",","); СпРекв = ЗаполнитьСписокЗначений(Стр); Если (СпРекв.РазмерСписка()=5) И (Лев(СпРекв.ПолучитьЗначение(1),1)="#") Тогда Ответ = Вопрос("Файл: "+ФайлЗагрузки+" включает документы: "+СпРекв.ПолучитьЗначение(2)+" за период с: "+СпРекв.ПолучитьЗначение(3)+"-"+СпРекв.ПолучитьЗначение(4)+" по месту отгрузки: "+СпРекв.ПолучитьЗначение(5)+". Загрузить?","Да+Нет"); Если Ответ="Нет" Тогда Прервать; КонецЕсли; ИначеЕсли (СпРекв.РазмерСписка()=7) И (Лев(СпРекв.ПолучитьЗначение(1),1)="*") Тогда Если Сч>2 Тогда // т.е. если текущий док-т не первый - записываем и проводим предшествующий документ ДокВН.Записать(); ДокВН.Провести(); СчДок = СчДок + 1; КонецЕсли; НомерДок = СпРекв.ПолучитьЗначение(2) ДатаДок = Дата(СпРекв.ПолучитьЗначение(3)); Если СпрМХ.НайтиПоНаименованию(СпРекв.ПолучитьЗначение(4),0,1)=1 Тогда МестоХранения = СпрМХ.ТекущийЭлемент(); Иначе МестоХранения = ""; КонецЕсли; Если СпрМХ.НайтиПоНаименованию(СпРекв.ПолучитьЗначение(6),0,1)=1 Тогда Получатель = СпрМХ.ТекущийЭлемент(); Иначе Получатель = ""; КонецЕсли; Если ДокВН.НайтиПоНомеру(НомерДок,ДатаДок)=1 Тогда ДокВН.СделатьНеПроведенным(); ДокВН.НомерДок = НомерДок; ДокВН.ДатаДок = ДатаДок; ДокВН.МестоХранения = МестоХранения; ДокВН.Получатель = Получатель; ДокВН.УдалитьСтроки(); Иначе ДокВН.Новый(); ДокВН.НомерДок = НомерДок; ДокВН.ДатаДок = ДатаДок; ДокВН.МестоХранения = МестоХранения; ДокВН.Получатель = Получатель; КонецЕсли; ИначеЕсли СпРекв.РазмерСписка()=8 Тогда КодТовара = СпРекв.ПолучитьЗначение(1) НаимТовара = СпРекв.ПолучитьЗначение(2) Количество = СпРекв.ПолучитьЗначение(3) ЦенаРозничная = СпРекв.ПолучитьЗначение(4) СуммаРозничная = СпРекв.ПолучитьЗначение(5) ЦенаОптовая = СпРекв.ПолучитьЗначение(6) СуммаОптовая = СпРекв.ПолучитьЗначение(7) Вес = СпРекв.ПолучитьЗначение(8) ДокВН.НоваяСтрока(); Если СпрНом.НайтиПоКоду(КодТовара,0)=1 Тогда ДокВН.Товар = СпрНом.ТекущийЭлемент(); ИначеЕсли СпрНом.НайтиПоКоду(НаимТовара,0)=1 Тогда ДокВН.Товар = СпрНом.ТекущийЭлемент(); Иначе ДокВН.Товар = ""; КонецЕсли; ДокВН.Количество = Количество; ДокВН.ЦенаРозничная = ЦенаРозничная; ДокВН.СуммаРозничная = СуммаРозничная; ДокВН.ЦенаОптовая = ЦенаОптовая; ДокВН.СуммаОптовая = СуммаОптовая; ДокВН.Вес = Вес; КонецЕсли; КонецЦикла; ДокВН.Записать(); ДокВН.Провести(); Если Ответ="Нет" Тогда Сообщить("Загрузка отменена пользователем: "+ИмяПользователя()); Возврат; Иначе Предупреждение("Загрузка завершена! Загружено: "+СчДок+" документов."); КонецЕсли; КонецПроцедуры |