7.7 Присвоение номера документа при загрузке из файла

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем skurser, 9 ноя 2016.

  1. TopicStarter Overlay
    skurser
    Offline

    skurser

    Регистрация:
    26 окт 2010
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Есть обработка, которой загружаем накладные в базу, предварительно выгруженные в файл из идентичных конфигураций. Сейчас присваивается порядковый номер из базы в которую загружаем документы. Подскажите что поправить в коде обработки загрузки, чтобы в случае, если в документе из файла указан определённый "Получатель" то номер загружался такой как указан в файле, если другие "Получатель" то присваивать номер порядковый в базе.

    Код обработки:
    Код:
    Функция ЗаполнитьСписокЗначений(Стр)
        Сп = СоздатьОбъект("СписокЗначений");
        Пока 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 Тогда
                    ДокВН.Товар = СпрНом.ТекущийЭлемент();
                Иначе
                    ДокВН.Товар = "";
                КонецЕсли;   
               
                ДокВН.Количество         = Количество;
                ДокВН.ЦенаРозничная     = ЦенаРозничная;
                ДокВН.СуммаРозничная     = СуммаРозничная;
                ДокВН.ЦенаОптовая         = ЦенаОптовая;
                ДокВН.СуммаОптовая         = СуммаОптовая;
                ДокВН.Вес                 = Вес;
               
            КонецЕсли;   
        КонецЦикла;
        ДокВН.Записать();
        ДокВН.Провести();
        Если Ответ="Нет" Тогда
            Сообщить("Загрузка отменена пользователем: "+ИмяПользователя());
            Возврат;
        Иначе
            Предупреждение("Загрузка завершена! Загружено: "+СчДок+" документов.");
        КонецЕсли;
       
    КонецПроцедуры
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.541
    Симпатии:
    407
    Баллы:
    104
    вот твой кусок кода
    Код:
                    ДокВН.Новый();
                    ДокВН.УстановитьНовыйНомер("Цск");
                    ДокВН.ДатаДок = ДатаДок;
                    ДокВН.МестоХранения = МестоХранения;
                    ДокВН.Получатель = Получатель;
    
    тут и добавляй условие
  3. TopicStarter Overlay
    skurser
    Offline

    skurser

    Регистрация:
    26 окт 2010
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Подскажите как
  4. TopicStarter Overlay
    skurser
    Offline

    skurser

    Регистрация:
    26 окт 2010
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Делаю так:

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

    не работает
  5. TopicStarter Overlay
    skurser
    Offline

    skurser

    Регистрация:
    26 окт 2010
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Разобрался, надо так
    Если СокрЛП(СпРекв.ПолучитьЗначение(6)) = "Магазин" Тогда

Поделиться этой страницей