Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Присвоение номера документа при загрузке

v7: Присвоение номера документа при загрузке
Я
   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 Тогда
                ДокВН.Товар = СпрНом.ТекущийЭлемент();
            Иначе
                ДокВН.Товар = "";
            КонецЕсли;   
           
            ДокВН.Количество         = Количество;
            ДокВН.ЦенаРозничная     = ЦенаРозничная;
            ДокВН.СуммаРозничная     = СуммаРозничная;
            ДокВН.ЦенаОптовая         = ЦенаОптовая;
            ДокВН.СуммаОптовая         = СуммаОптовая;
            ДокВН.Вес                 = Вес;
           
        КонецЕсли;   
    КонецЦикла;
    ДокВН.Записать();
    ДокВН.Провести();
    Если Ответ="Нет" Тогда
        Сообщить("Загрузка отменена пользователем: "+ИмяПользователя());
        Возврат;
    Иначе
        Предупреждение("Загрузка завершена! Загружено: "+СчДок+" документов.");
    КонецЕсли;
   
КонецПроцедуры
 
 
   VladZ
 
1 - 10.11.16 - 07:18
Номер, который передается в файле:  НомерДок = и далее по тексту

Новый номер генерируется в строке ДокВН.УстановитьНовыйНомер("Цск");

Вот и пропиши нужную логику
   Zbim
 
2 - 10.11.16 - 07:30
Подскажите как
   Это_mike
 
3 - 10.11.16 - 07:31
(2) лучший вариант - "позвать программиста"©
   Zbim
 
4 - 10.11.16 - 07:46
Не всегда лучший
   Zbim
 
5 - 10.11.16 - 07:48
Я понимаю как записать логически, но не знаю как это записать на языке 1С.

Если получатель "Магазин", то присвоить номер из файла
иначе
присвоить порядковый номер
   Slypower
 
6 - 10.11.16 - 10:40
Если Получатель="Магазин" Тогда
 Док.НомерДок=НомерИзФайла;
иначе
 Док.НомерДок.УстановитьНовыйНомер();
КонецЕсли
   Ёпрст
 
7 - 10.11.16 - 10:42
(6) да уж..
   Zbim
 
8 - 10.11.16 - 11:28
Уменя это выглядит так:

ДокВН.Новый();
ДокВН.ДатаДок = ДатаДок;
ДокВН.Получатель = Получатель;
Если Получатель="Магазин" Тогда
    ДокВН.НомерДок = НомерДок;
иначе
    ДокВН.УстановитьНовыйНомер("ЦСК");
КонецЕсли;        
ДокВН.МестоХранения = МестоХранения;
ДокВН.Получатель = Получатель;

Но не работает, номер присваивает порядковый из базы
   Ёпрст
 
9 - 10.11.16 - 11:44
(8) Ясен пень. Получатель - это ссылка на элемент справочника, а не строка
   Ёпрст
 
10 - 10.11.16 - 11:45
поэтому, вот тут у тебя бред(не Пит)
>>>Если Получатель="Магазин" Тогда
 
 Рекламное место пустует
   Zbim
 
11 - 10.11.16 - 11:56
И? Развивайте мысль дальше, чтобы был бред не Пит, то ....
   Ёпрст
 
12 - 10.11.16 - 11:58
(11) думать за вас - только за деньги.
   Slypower
 
13 - 10.11.16 - 12:30
(10) Если он из моего наброска и написал Если Получатель="Магазин", то тогда да, логики нет)))) Тут нужно хотя бы понимать разницу написания в "" и без них. А я всего лишь логику написал на языке 1С, а не решение вопроса
   Это_mike
 
14 - 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) ну ты же знаешь, что дураков учить - только портить
   Zbim
 
18 - 10.11.16 - 13:02
Всем спасибо, разобрался:
Если СокрЛП(СпРекв.ПолучитьЗначение(6)) = "Магазин" Тогда
   VladZ
 
19 - 10.11.16 - 13:07
(18) Ага...  А завтра какой-нибудь пользователь решит, что в наименовании "Магазин" не хватает, например, номера.  И твоя стройная система завалится.
   Ёпрст
 
20 - 10.11.16 - 13:20
(18) Храни свой магазин, или в константе или реквизитом на форме обработки с типом справочник.нужный вид.
Далее просто сравнивай с ним.
Наслаждайся, кушай печенки

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует