|
v7: Присвоение номера документа при загрузке | ☑ | ||
---|---|---|---|---|
0
Zbim
10.11.16
✎
06:55
|
Есть обработка, которой загружаем накладные в базу, предварительно выгруженные в файл из идентичных конфигураций. Сейчас присваивается порядковый номер из базы в которую загружаем документы. Подскажите что поправить в коде обработки загрузки, чтобы в случае, если в документе из файла указан определённый "Получатель" то номер загружался такой как указан в файле, если другие "Получатель" то присваивать номер порядковый в базе.
Код обработки: Функция ЗаполнитьСписокЗначений(Стр) Сп = СоздатьОбъект("СписокЗначений"); Пока 1=1 Цикл ПозЗпт = Найти(Стр,","); Если ПозЗпт>0 Тогда Сп.ДобавитьЗначение(Лев(Стр,ПозЗпт-1)); Стр = Сред(Стр,ПозЗпт+1); Иначе Сп.ДобавитьЗначение(Стр); Прервать; КонецЕсли; КонецЦикла; Возврат Сп; КонецФункции //******************************************* Процедура ВыбратьФайл() Перем Каталог; ИмяФайла = СокрЛП(ФайлЗагрузки); Каталог = "C:\"; Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог, "Выберите файл", "Текстовые (*.txt) |*.txt|Все файлы (*.*) |*.*")=1 Тогда ФайлЗагрузки=Каталог+ИмяФайла; КонецЕсли; КонецПроцедуры //******************************************* Процедура ОткрытьФайл() ИмяФайла = СокрЛП(ФайлЗагрузки); Текст=СоздатьОбъект("Текст"); Текст.КодоваяСтраница<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=0" target="_blank" title="Комментарий 0" class="comment-ref">(0)</a> Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда Текст.Открыть(ИмяФайла); Текст.Показать("Файл",ИмяФайла); Иначе Предупреждение("Указанный файл не существует"); КонецЕсли; КонецПроцедуры //******************************************* Процедура Загрузить() ДокВН = СоздатьОбъект("Документ.РасходнаяНакладнаяВнутр"); СпрМХ = СоздатьОбъект("Справочник.МестаХранения"); СпрНом = СоздатьОбъект("Справочник.Номенклатура"); СпРекв = СоздатьОбъект("СписокЗначений"); Текст = СоздатьОбъект("Текст"); Текст.КодоваяСтраница<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=0" target="_blank" title="Комментарий 0" class="comment-ref">(0)</a> Если ФС.СуществуетФайл(СокрЛП(ФайлЗагрузки)) = 1 Тогда Текст.Открыть(СокрЛП(ФайлЗагрузки)); Иначе Предупреждение("Указанный файл не существует"); КонецЕсли; СчДок = 0; Сч = 0; Стр = ""; Для Сч=1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(Сч); Стр = СтрЗаменить(Стр,",","$"); Стр = СтрЗаменить(Стр,"|",","); СпРекв = ЗаполнитьСписокЗначений(Стр); Если (СпРекв.РазмерСписка()=5) И (Лев(СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=1" target="_blank" title="Комментарий 1" class="comment-ref">(1)</a>,1)="#") Тогда Ответ = Вопрос("Файл: "+ФайлЗагрузки+" включает документы: "+СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=2" target="_blank" title="Комментарий 2" class="comment-ref">(2)</a>+" за период с: "+СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=3" target="_blank" title="Комментарий 3" class="comment-ref">(3)</a>+"-"+СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=4" target="_blank" title="Комментарий 4" class="comment-ref">(4)</a>+" по месту отгрузки: "+СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=5" target="_blank" title="Комментарий 5" class="comment-ref">(5)</a>+". Загрузить?","Да+Нет"); Если Ответ="Нет" Тогда Прервать; КонецЕсли; ИначеЕсли (СпРекв.РазмерСписка()=7) И (Лев(СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=1" target="_blank" title="Комментарий 1" class="comment-ref">(1)</a>,1)="*") Тогда Если Сч>2 Тогда // т.е. если текущий док-т не первый - записываем и проводим предшествующий документ ДокВН.Записать(); ДокВН.Провести(); СчДок = СчДок + 1; КонецЕсли; НомерДок = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=2" target="_blank" title="Комментарий 2" class="comment-ref">(2)</a> ДатаДок = Дата(СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=3" target="_blank" title="Комментарий 3" class="comment-ref">(3)</a>); Если СпрМХ.НайтиПоНаименованию(СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=4" target="_blank" title="Комментарий 4" class="comment-ref">(4)</a>,0,1)=1 Тогда МестоХранения = СпрМХ.ТекущийЭлемент(); Иначе МестоХранения = ""; КонецЕсли; Если СпрМХ.НайтиПоНаименованию(СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=6" target="_blank" title="Комментарий 6" class="comment-ref">(6)</a>,0,1)=1 Тогда Получатель = СпрМХ.ТекущийЭлемент(); Иначе Получатель = ""; КонецЕсли; ДокВН.Новый(); ДокВН.УстановитьНовыйНомер("Цск"); ДокВН.ДатаДок = ДатаДок; ДокВН.МестоХранения = МестоХранения; ДокВН.Получатель = Получатель; ИначеЕсли СпРекв.РазмерСписка()=8 Тогда КодТовара = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=1" target="_blank" title="Комментарий 1" class="comment-ref">(1)</a> НаимТовара = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=2" target="_blank" title="Комментарий 2" class="comment-ref">(2)</a> Количество = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=3" target="_blank" title="Комментарий 3" class="comment-ref">(3)</a> ЦенаРозничная = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=4" target="_blank" title="Комментарий 4" class="comment-ref">(4)</a> СуммаРозничная = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=5" target="_blank" title="Комментарий 5" class="comment-ref">(5)</a> ЦенаОптовая = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=6" target="_blank" title="Комментарий 6" class="comment-ref">(6)</a> СуммаОптовая = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=7" target="_blank" title="Комментарий 7" class="comment-ref">(7)</a> Вес = СпРекв.ПолучитьЗначение<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=161038&c=8" target="_blank" title="Комментарий 8" class="comment-ref">(8)</a> ДокВН.НоваяСтрока(); Если СпрНом.НайтиПоКоду(КодТовара,0)=1 Тогда ДокВН.Товар = СпрНом.ТекущийЭлемент(); ИначеЕсли СпрНом.НайтиПоКоду(НаимТовара,0)=1 Тогда ДокВН.Товар = СпрНом.ТекущийЭлемент(); Иначе ДокВН.Товар = ""; КонецЕсли; ДокВН.Количество = Количество; ДокВН.ЦенаРозничная = ЦенаРозничная; ДокВН.СуммаРозничная = СуммаРозничная; ДокВН.ЦенаОптовая = ЦенаОптовая; ДокВН.СуммаОптовая = СуммаОптовая; ДокВН.Вес = Вес; КонецЕсли; КонецЦикла; ДокВН.Записать(); ДокВН.Провести(); Если Ответ="Нет" Тогда Сообщить("Загрузка отменена пользователем: "+ИмяПользователя()); Возврат; Иначе Предупреждение("Загрузка завершена! Загружено: "+СчДок+" документов."); КонецЕсли; КонецПроцедуры |
|||
1
VladZ
10.11.16
✎
07:18
|
Номер, который передается в файле: НомерДок = и далее по тексту
Новый номер генерируется в строке ДокВН.УстановитьНовыйНомер("Цск"); Вот и пропиши нужную логику |
|||
2
Zbim
10.11.16
✎
07:30
|
Подскажите как
|
|||
3
Это_mike
10.11.16
✎
07:31
|
(2) лучший вариант - "позвать программиста"©
|
|||
4
Zbim
10.11.16
✎
07:46
|
Не всегда лучший
|
|||
5
Zbim
10.11.16
✎
07:48
|
Я понимаю как записать логически, но не знаю как это записать на языке 1С.
Если получатель "Магазин", то присвоить номер из файла иначе присвоить порядковый номер |
|||
6
Slypower
10.11.16
✎
10:40
|
Если Получатель="Магазин" Тогда
Док.НомерДок=НомерИзФайла; иначе Док.НомерДок.УстановитьНовыйНомер(); КонецЕсли |
|||
7
Ёпрст
10.11.16
✎
10:42
|
(6) да уж..
|
|||
8
Zbim
10.11.16
✎
11:28
|
Уменя это выглядит так:
ДокВН.Новый(); ДокВН.ДатаДок = ДатаДок; ДокВН.Получатель = Получатель; Если Получатель="Магазин" Тогда ДокВН.НомерДок = НомерДок; иначе ДокВН.УстановитьНовыйНомер("ЦСК"); КонецЕсли; ДокВН.МестоХранения = МестоХранения; ДокВН.Получатель = Получатель; Но не работает, номер присваивает порядковый из базы |
|||
9
Ёпрст
10.11.16
✎
11:44
|
(8) Ясен пень. Получатель - это ссылка на элемент справочника, а не строка
|
|||
10
Ёпрст
10.11.16
✎
11:45
|
поэтому, вот тут у тебя бред(не Пит)
>>>Если Получатель="Магазин" Тогда |
|||
11
Zbim
10.11.16
✎
11:56
|
И? Развивайте мысль дальше, чтобы был бред не Пит, то ....
|
|||
12
Ёпрст
10.11.16
✎
11:58
|
(11) думать за вас - только за деньги.
|
|||
13
Slypower
10.11.16
✎
12:30
|
(10) Если он из моего наброска и написал Если Получатель="Магазин", то тогда да, логики нет)))) Тут нужно хотя бы понимать разницу написания в "" и без них. А я всего лишь логику написал на языке 1С, а не решение вопроса
|
|||
14
Это_mike
10.11.16
✎
12:38
|
(11) см (3)
|
|||
15
Злопчинский
10.11.16
✎
12:42
|
(5) дятловое решение. потому что один считает что "магазин", а другой ищет "гамазин"
|
|||
16
Злопчинский
10.11.16
✎
12:43
|
(12) много думать - за много денег?
|
|||
17
Ёпрст
10.11.16
✎
12:44
|
(16) ну ты же знаешь, что дураков учить - только портить
|
|||
18
Zbim
10.11.16
✎
13:02
|
Всем спасибо, разобрался:
Если СокрЛП(СпРекв.ПолучитьЗначение(6)) = "Магазин" Тогда |
|||
19
VladZ
10.11.16
✎
13:07
|
(18) Ага... А завтра какой-нибудь пользователь решит, что в наименовании "Магазин" не хватает, например, номера. И твоя стройная система завалится.
|
|||
20
Ёпрст
10.11.16
✎
13:20
|
(18) Храни свой магазин, или в константе или реквизитом на форме обработки с типом справочник.нужный вид.
Далее просто сравнивай с ним. Наслаждайся, кушай печенки |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |