Имя: Пароль:
1C
1С v8
Программное создание серий номенклатуры в ут 11
,
0 Timur2019
 
16.09.19
11:45
Всем привет. Такой вопрос : необходимо программно создавать документ ПриобретениеТовровУслуг содержащий серии номенклатуры.
Использую такой код :

         Док = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент() ;    
         Док.ХозяйственнаяОперация =  Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика ;
     Док.Партнер =  Справочники.Партнеры.НайтиПоКоду("00-00000001") ;
     Док.Дата = ТекущаяДата();    
     Док.Валюта = Справочники.Валюты.НайтиПоКоду("643") ;        
     Док.НалогообложениеНДС =  Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС ;
     Док.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.МожетПроисходитьБезЗаказовИНакладных ;
     Док.ЗакупкаПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС ;
     Док.Склад = Справочники.Склады.НайтиПоНаименованию("Склад Машиностроительный");
    
    
    
     Для Каждого СтруктураСтрока из  МассивСтрокТЧ Цикл    
        
        НоваяСтрокаТЧ =  Док.Товары.Добавить() ;    
        НоваяСтрокаТЧ.Номенклатура =     СтруктураСтрока.Номенклатура ;
        НоваяСтрокаТЧ.Количество = СтруктураСтрока.ВесНетто ;
        НоваяСтрокаТЧ.КоличествоУпаковок = СтруктураСтрока.ВесНетто ;
        НоваяСтрокаТЧ.Цена = 1 ;
        НоваяСтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ;
        НоваяСтрокаТЧ.Сумма =  НоваяСтрокаТЧ.Цена*НоваяСтрокаТЧ.Количество ;
        НоваяСтрокаТЧ.СуммаСНДС = НоваяСтрокаТЧ.Сумма ;            
        
        //------------------        
        СерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
        СерияОбъект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар");            
        СерияОбъект.Наименование = СтруктураСтрока.Серия ;    
        СерияОбъект.Номер =  СтруктураСтрока.Серия ;
        СерияОбъект.НомерКиЗГИСМ = "" ;        
        СерияОбъект.ГоденДо =   Дата(0001,01,01,00,00,00) ;
        СерияОбъект.ДатаПроизводства =  Дата(0001,01,01,00,00,00) ;
        
        СерияОбъект.EPCGTIN = ""  ;
        СерияОбъект.RFIDEPC = ""  ;
        СерияОбъект.RFIDUser = "" ;
        СерияОбъект.RFIDTID = ""  ;
                    
        СерияОбъект.Записать();        
        //------------------        
        
        НоваяСтрокаТЧ.Серия = СерияОбъект.Ссылка ;    // записываем серию в табличную часть Товары                    
        //------------------
        //
        ////Добавление новой строки в ТЧ серии  !!!
        //***
        НоваяСтрокаТЧСерии = Док.Серии.Добавить();
        НоваяСтрокаТЧСерии.Номенклатура = СтруктураСтрока.Номенклатура ;
        НоваяСтрокаТЧСерии.Серия = СерияОбъект.Ссылка ;
        НоваяСтрокаТЧСерии.Склад = Справочники.Склады.НайтиПоНаименованию("Склад Машиностроительный");
        НоваяСтрокаТЧСерии.Количество = СтруктураСтрока.ВесНетто ;
        //***
                
            
     КонецЦикла ;
    
     Док.Записать(РежимЗаписиДокумента.Запись);    

         В результате все создается , даже элемент серии номенклатуры  , но не идет запись Табличную часть Серии этого документа. выделено * в коде
         Почему не понимаю. Очень нужна помощь.
1 bolero
 
16.09.19
11:55
у ПТиУ есть отдельная ТЧ Серии, а колонка серия в ТЧ Товары более не используется

и механизм этот "надежный как швейцарские часы", из пользовательского режима можно лупануть на склад товара больше, чем указано в документе, просто допустив ошибку в указании серий

если серий указал меньше - подсвечивает красным, а если сколько нужно или БОЛЬШЕ чем нужно - светит зеленым
2 bolero
 
16.09.19
11:56
(1) по крайней мере в моем сетапе не используется, там куча пронумерованных волшебными цифрами схем хранения серий, еще не раскопал до конца
3 Timur2019
 
16.09.19
12:00
"у ПТиУ есть отдельная ТЧ Серии" - ну да , она невидимая, в нее я и пытаюсь писать... и не пишется - мне для начала просто понять почему не пишется ?
4 Timur2019
 
16.09.19
12:02
//***
        НоваяСтрокаТЧСерии = Док.Серии.Добавить();
        НоваяСтрокаТЧСерии.Номенклатура = СтруктураСтрока.Номенклатура ;
        НоваяСтрокаТЧСерии.Серия = СерияОбъект.Ссылка ;
        НоваяСтрокаТЧСерии.Склад = Справочники.Склады.НайтиПоНаименованию("Склад Машиностроительный");
        НоваяСтрокаТЧСерии.Количество = СтруктураСтрока.ВесНетто ;
        //***
        
        В отладчике видно что все реквизиты заполнены.... и после записи документа пустота...
5 Timur2019
 
16.09.19
12:08
UP
6 StanLee
 
16.09.19
12:24
а что делается перед записью в документе, а в подписках на события?
7 Timur2019
 
16.09.19
12:25
Так это делается  в типовой : ничего неожиданного :)

НоваяСтрокаСерии = ДокументОбъект.Серии.Добавить();
НоваяСтрокаСерии.Номенклатура   = НайденнаяСтрокаПродукция.Номенклатура;
НоваяСтрокаСерии.Характеристика = НайденнаяСтрокаПродукция.Характеристика;
НоваяСтрокаСерии.Серия          = НайденнаяСтрокаПродукция.Серия;
НоваяСтрокаСерии.Количество     = НайденнаяСтрокаПродукция.КоличествоПодобрано;
НоваяСтрокаСерии.Склад          = Склад;
8 Timur2019
 
16.09.19
12:27
(6)  Конфа неизмененная код типовой поидее все должно быть стандартно или нет ? :)
9 Timur2019
 
16.09.19
12:33
И ошибок никаких не выдает ....
10 Timur2019
 
16.09.19
13:07
(6) Да , спасибо. Зашел отладчиком перед записью документа - все строки на месте.
После записи - пустота - где то выполняется код который вытирает ТЧ !!!  :)
11 Вафель
 
16.09.19
13:08
(1) используется, если себестоимость по сериям
12 Вафель
 
16.09.19
13:09
в тч товары что ставишь в поле "статус серии"
13 Timur2019
 
16.09.19
13:26
(12) Щас
14 Timur2019
 
16.09.19
13:33
Реквизит ТЧ СтатусУказанияСерий - число поставил 1 для эксперимента - результат тот же
15 Timur2019
 
16.09.19
14:00
12) Посмотрел как в других документах : СтатусУказанияСерий  = 4 везде. Поставил. Результат тот же.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.