Имя: Пароль:
1C
1C 7.7
v7: КД 2.0 не могу сконвертировать из ТИС в БП 3.0 Субконто1 Документа ПоступлениеПрочее
0 tgu82
 
22.07.26
21:52
СТолкнулся с проблемой там где ее не ожидал.
ПоступлениеПрочее конвертироуется в ПоступлениеТоваровУслуг с табличной частью Услуги.
Счет затрат 44.1.1 без проблем конвертируется в 44.01. А то Субконто1 никак. Причем если счет 10.6 и субконто1 это номенклатура (ну вот так у нас), то не только конвертируется но и отрабатывает процедура которая переносит из Услуги в Товары и все прекрасно уже давно. Но вот когда вид Субконто1 в ТИС ЗначенияСубконто (по сути Строка) но не получается передать ее в ПоступлениеТоваровУслуг.
Справочники.СтатьиЗАтрат.НайтиПоНаименованию(Субконто1). В XML-файле есть ТАрнспортные услуги с типом Строка. А дальше все - торможу. У АЛиса спрашивал долго. Потом спросил у Ясеня ) Без толку
1 tgu82
 
22.07.26
22:04
Сложный вопрос или простой ответ который я не вижу ?
2 RoRu
 
22.07.26
22:20
(1) не очень понятно, что у вас не получается
а вид субконто1 в ТИС какой?
просто обработкой вы можете субконто 1 в БП3 записать ?
3 zenik
 
22.07.26
22:28
Я бы сделал так:
ПКО = СтатьиЗатратПоНаименованию
ПКО для него - Наименование с поиском и
Значение = Источник;

При выгрузке субконто1 в зависимости от типа значения через ИмяПКО = "СтатьиЗатратПоНаименованию" менять правила.
4 tgu82
 
22.07.26
22:33
(2) То то и оно вид Субконто1 либо Номенклатура либо ЗначениеСубконто - можно сказать что строка
5 tgu82
 
22.07.26
22:37
Субконто1 это же в таблично части.
Ну почему если вид Субконо1 Номенклатура то без проблем оно есть в тч товары ПоступлениеТоварыУслуги.
Но если строка то в файле выгрузки есть это значение. А вот до 8-ки как-то не добирается
6 tgu82
 
22.07.26
22:57
В ПоступлениеПрочее ПКО и там есть ПослеЗагрузки
СчетаУчета = БухгалтерскийУчетПереопределяемый.ПолучитьСчетаРасчетовСКонтрагентом(Объект.Организация, Объект.Контрагент, Объект.ДоговорКонтрагента);

Если Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда
    Объект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовСКомитентом;
Иначе
    Объект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетов;
КонецЕсли;

Объект.СчетУчетаРасчетовПоАвансам     = СчетаУчета.СчетАвансов;
Объект.СчетУчетаРасчетовПоТаре        = СчетаУчета.СчетУчетаТары;

//+АдминистраторБД, 2023-10-10, ДОБАВЛЕНО НЕТИПОВОЕ
//    Если есть в ТЧ Услуги материалы с 10 счётом необходимо их перенести в ТЧ Товары
Если Объект.Услуги.Количество() <> 0 Тогда
    Счет10 = ПланыСчетов.Хозрасчетный.Материалы;
    Счет44 = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
    ТаблицаУслуг = Объект.Услуги.Выгрузить();
    ТаблицаУслуг.Колонки.Добавить("НуженПереносСтроки");
    Сообщить("СЧЕТ "+Счет44);
    ЕстьНеобходимостьВРазбивкеТЧУслуги = Ложь;
    
    Для Каждого СтрокаУслуг Из ТаблицаУслуг Цикл
      Если ЗначениеЗаполнено(СтрокаУслуг.СчетЗатрат) Тогда
        Если СтрокаУслуг.СчетЗатрат.ПринадлежитЭлементу(Счет44) Тогда
            //СтрокаУслуг.Субконто1=Справочники.СтатьиЗатрат.НайтиПоНаименованию(СтрокаУслуг.Субконто1);
            Сообщить(""+" субконто 44 "+СтрокуУслуг.Субконто1);
        ИначеЕсли СтрокаУслуг.СчетЗатрат.ПринадлежитЭлементу(Счет10) Тогда
                СтрокаУслуг.НуженПереносСтроки = Истина;
                ЕстьНеобходимостьВРазбивкеТЧУслуги = Истина;
        Иначе
                СтрокаУслуг.НуженПереносСтроки = Ложь;
        КонецЕсли;
        Иначе    
            СтрокаУслуг.НуженПереносСтроки = Ложь;
      КонецЕсли;
    КонецЦикла;
    
    Если ЕстьНеобходимостьВРазбивкеТЧУслуги Тогда
        СтруктураОтбора = Новый Структура;
        СтруктураОтбора.Вставить("НуженПереносСтроки", Истина);
        
        ТаблицаТоваров = ТаблицаУслуг.Скопировать(СтруктураОтбора);
        
        СтруктураОтбора.Вставить("НуженПереносСтроки", Ложь);
        
        ТаблицаУслугКонечная = ТаблицаУслуг.Скопировать(СтруктураОтбора);
        
        Если ТаблицаУслугКонечная.Количество() > 0 Тогда
            Объект.Услуги.Загрузить(ТаблицаУслугКонечная);
        Иначе
            Объект.Услуги.Очистить();    // После разделения не осталось ни одной услуги
        КонецЕсли;
        
        Если ТаблицаТоваров.Количество() > 0 Тогда
            Объект.Товары.Очистить();
            
            Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл
                НоваяСтрокаТоваров = Объект.Товары.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяСтрокаТоваров, СтрокаТаблицыТоваров);
                НоваяСтрокаТоваров.Коэффициент = 1;
                Если Не ЗначениеЗаполнено(НоваяСтрокаТоваров.Номенклатура) Тогда
                    Если ТипЗнч(НоваяСтрокаТоваров.Номенклатура) = ТипЗнч(НоваяСтрокаТоваров.Субконто1) Тогда
                        Если ЗначениеЗаполнено(НоваяСтрокаТоваров.Субконто1) Тогда
                            НоваяСтрокаТоваров.Номенклатура = НоваяСтрокаТоваров.Субконто1;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
                НоваяСтрокаТоваров.СчетУчета = СтрокаТаблицыТоваров.СчетЗатрат;
            КонецЦикла;
        КонецЕсли;
        
    КонецЕсли;
    
КонецЕсли;
//-АдминистраторБД, 2023-10-10, ДОБАВЛЕНО НЕТИПОВОЕ    

Для Каждого СтрокаТоваров Из Объект.Товары Цикл
    СтрокаТоваров.Количество = СтрокаТоваров.Количество * СтрокаТоваров.Коэффициент;
    Если СтрокаТоваров.Коэффициент<> 0 Тогда
        СтрокаТоваров.Цена       = СтрокаТоваров.Цена / СтрокаТоваров.Коэффициент;
    КонецЕсли;
КонецЦикла;

Объект.СуммаДокумента = УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(Объект);

Объект.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;

Если Объект.Ответственный.Пустая() Тогда
    Объект.Ответственный = Пользователи.ТекущийПользователь();
КонецЕсли;
7 zenik
 
22.07.26
22:57
(5) потому, что, есть правила конвертации Номенклатуры и КД берет их, даже если они не указаны для конвертации.
А правил для конвертации статьи - нет и что с ним делать при получении - КД не знает.
8 tgu82
 
22.07.26
22:58
(7) Я это понимаю - но как его сделать?
9 tgu82
 
22.07.26
23:02
(7) Сделали ПКО СтатьиЗатрат.
Но без толку
10 tgu82
 
22.07.26
23:04
СсылкаНаОбъект = Справочники.СтатьиЗатрат.НайтиПоНаименованию(ПараметрыОбъекта);
Сообщить("Поиск статьи затрат по наименованию: " + ПараметрыОбъекта);
Сообщить("Найдено: " + СсылкаНаОбъект);

Это в ПоляПоиска
AdBlock убивает бесплатный контент. 1Сергей