Имя: Пароль:
1C
1С v8
Обработка для создания счетов 8.3 БП
0 MixanMM
 
17.04.22
12:12
Добрый день, подскажите пожалуйста, может кто то уже реализовывал - обработка, которая загружает из файла и создает новые документы "Счет покупателю" по каждому контрагенту ?
1 Кац
 
17.04.22
12:20
Скорей всего да
2 Лирик
 
17.04.22
12:20
(0) Реализовывали и не раз.
3 MixanMM
 
17.04.22
12:34
(2) Может кто то поделится обработкой?
4 2S
 
17.04.22
12:37
(3) ну конечно, повсеместно используется только ваш шаблон данных.
5 Лирик
 
17.04.22
12:43
(4) Вы не понимаете, это должна быть очень продвинутая обработка. Для начала она должна определить тип загружаемого файла, потом с помощью искусственного интеллекта определить что за данные были переданы, и если этих данных не хватит или она 9обработка) не сможет определить что то, то тогда она должна позвонить заказчику и уточнить. Для этого в ней должен быть реализован функционал IP телефонии. Ну и телепат модуль, для кучи.
6 Aleksey
 
17.04.22
12:45
В типовой загрузка уже реализовано. Осталось подобрать файл нужного формата
7 MixanMM
 
17.04.22
13:48
(6) Нужный формат данных я могу сформировать сам - там данные из SQL.
(5) Если вы реализовывали - можете поделиться наработкой?, под нужный формат файла данных - я сделаю для 1с.
8 MixanMM
 
17.04.22
13:49
(6) Можете подсказать, про реализацию в типовой загрузке - где искать?
9 breezee
 
17.04.22
15:01
(8) загрузка данных из табличного документа
10 Aleksey
 
18.04.22
04:59
11 MixanMM
 
18.04.22
09:08
(10) Немного не то -мне нужно что бы не много номенклатур загружалось в счёт, а одна номенклатура и её кол-во, в несколько счетов нескольким клиентам, вот это имел ввиду, т.е программа сформирует файл для 1С, а 1с уже на основании обработки этого файла будет создавать документы, типа так:
НовДок=Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
НовДок.Дата= ТекущаяДата();
НовДок.ТипЦен= Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");
НовДок.Контрагент= Справочники.Контрагенты.НайтиПоКоду(ИдКлиента);
НовДок.Организация= Справочники.Организации.НайтиПоКоду("000000001");
НовДок.ОрганизацияПолучатель = НовДок.Организация;
НовДок.УчитыватьНДС       = Истина;
НовДок.СуммаВключаетНДС   = Истина;
НовДок.Комментарий     = "Счёт создан при импорте.";
НовДок.Записать();
12 MixanMM
 
21.04.22
12:17
Добрый день, подскажите пожалуйста, написал процедур по загрузке данных в счёт из файла, она отрабатывает, но почему то не создает в счёт несколько позиций товара, а вносит только одну
<CODE>
Процедура Команда2НаСервере()
    //ОсновнаяОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
    ОсновнаяОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
    АртикулТекст ="AFA100L";
    СписокЗначений = Новый СписокЗначений;
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл("C:\Users\Mishin\Documents\new 1.xml");
    
    Построитель = Новый ПостроительDOM;
    Документ = Построитель.Прочитать(ЧтениеXML);
     Для Каждого Элемент0 Из Документ.ЭлементДокумента.ДочерниеУзлы Цикл
        Если Элемент0.ИмяУзла = "Клиент" Тогда
            Клиент = Элемент0;
            Название = Клиент.Атрибуты.ПолучитьИменованныйЭлемент("Название");
            Если Название <> Неопределено Тогда
                Сообщить("== " + Название.Значение + " ==");
            КонецЕсли;
            
            Для Каждого Элемент1 Из Клиент.ДочерниеУзлы Цикл
                Если Элемент1.ИмяУзла = "СтрокаСостава" Тогда
                    СтрокаСостава = Элемент1;
                   Для Каждого Элемент2 Из СтрокаСостава.ДочерниеУзлы Цикл
                        Если Элемент2.ИмяУзла = "Количество" Тогда
                            Количество = Элемент2;
                            литров = Количество.Атрибуты.ПолучитьИменованныйЭлемент("литров");
                            
                            Если литров <> Неопределено Тогда
                                СписокЗначений.Добавить(литров.Значение);
                                Сообщить(" литров" + литров.Значение);
                                Цена = Количество.Атрибуты.ПолучитьИменованныйЭлемент("Цена");
                                
                            Если Цена <> Неопределено Тогда
                                СписокЗначений.Добавить(Цена.Значение);
                                Сообщить("Цена: " + Цена.Значение);
                            КонецЕсли;     
                            КонецЕсли;
                        КонецЕсли;
                    КонецЦикла;                    
                   КонецЕсли;                
               КонецЦикла;
              
               НовыйДокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
               НовыйДокумент.Дата = ТекущаяДата();
               НовыйДокумент.Организация = ОсновнаяОрганизация;
               НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Название.Значение);
               НоваяСтрока=НовыйДокумент.Товары.Добавить();
              
               НоваяСтрока.Номенклатура = НайтиНоменклатуруПоАртикулу(АртикулТекст);
               НоваяСтрока.Количество = СписокЗначений[0].Значение;  
               НоваяСтрока.Цена = СписокЗначений[1].Значение;
               НоваяСтрока.Сумма = НоваяСтрока.Цена*НоваяСтрока.Количество;  
               НоваяСтрока.СтавкаНДС = 20;
               НовыйДокумент.СуммаВключаетНДС   = Истина;
               НовыйДокумент.Комментарий     = "Счёт создан при импорте.";
              
               НовыйДокумент.Записать();
               СписокЗначений.Очистить();
               Сообщить("Счет Создан");
        КонецЕсли;
        
     КонецЦикла;
    ЧтениеXML.Закрыть();
КонецПроцедуры
</CODE>
13 MixanMM
 
21.04.22
12:18
Сам файл вот с такой структурой :
<CODE>
<?xml version="1.0" encoding="UTF-8"?>
<СписокКлиентов>  
    <Клиент Название= "УБРИР КБ ПАО">
        <СтрокаСостава>
            <Количество литров="10"  Цена ="23" />
            <Количество литров="20"  Цена ="24" />
        </СтрокаСостава>
    </Клиент>
    <Клиент Название= "ГКУ ЯМАЛСПАС">
        <СтрокаСостава>
            <Количество литров="30"  Цена ="23" />
            <Количество литров="40"  Цена ="24" />
        </СтрокаСостава>
    </Клиент>
</СписокКлиентов>
</CODE>
14 Garykom
 
гуру
21.04.22
12:21
(11) ыыыы
15 Garykom
 
гуру
21.04.22
12:21
В связи с текущей ситуаций в ИТ прогнозирую всплеск тем аля "86 год"
16 Garykom
 
гуру
21.04.22
12:24
(15)+ Или "96" уже не помню
Это когда толпа бывших менагеров/таксистов ломанется в 1С, со странными вопросами и нереальными хотелками
17 MixanMM
 
21.04.22
12:24
(15) Извиняюсь, разобрался. Давно на 1С не писал прост
18 Garykom
 
гуру
21.04.22
12:25
(0) Реализовывал и неоднократно.
Ничего сложного для прога нет, если конечно в файле есть все необходимые данные.
19 MixanMM
 
21.04.22
12:25
(16) Это верное)
20 MixanMM
 
21.04.22
12:26
(18) Кстати, можете поделиться опытом - как проставить "Банковский счет" при создании документа "Счёт" ?
21 Garykom
 
гуру
21.04.22
12:27
(13) 1. "<Клиент Название= "УБРИР КБ ПАО">" -  заводишь доп реквизит или доп сведение (имя не забыть задать нормальное для запросов) в справочник контрагенты или лучше договоры, куда и пишешь по сути "коды для загрузки" "УБРИР КБ ПАО"
2. Номенклатуру лучше в настройки обработки или еще куда, короче не по коду искать а выбирать с сохранением
22 Garykom
 
гуру
21.04.22
12:27
(20) ДокументСчет.СтруктурнаяЕдиница = Объект.БанковскийСчет;
23 Garykom
 
гуру
21.04.22
12:30
(11) НовДок.Заполнить(Неопределено); желательно вставить посередине в нужном месте
24 MixanMM
 
21.04.22
12:31
(21) Принял, спасибо. Но там момент есть - файл xml формирует другая программа, в ней я сделаю файл для 1с с выгрузкой по ИНН Контрагента, не по наименованию
(23) Спасибо, учту
25 Garykom
 
гуру
21.04.22
12:34
(24) ИНН+КПП тогда
чтобы не было мучительно больно когда дубли (обособленныес другим КПП или просто дубль) по ИНН, это надо учитывать