Имя: Пароль:
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) ИНН+КПП тогда
чтобы не было мучительно больно когда дубли (обособленныес другим КПП или просто дубль) по ИНН, это надо учитывать
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан