Имя: Пароль:
1C
1С v8
Предопределенные значения при обмене Торговля-Бухгалтерия
0 impulse9
 
08.11.12
13:56
Добрый день!

Из сильно переписанной Ут 10.2 надо выгружать в БП 2.0 несколько документов по товародвижению.

Наваял план обмена в КД, все передается нормально, но возник вопрос - как в плане обмена предопределить счета учета (ведь в УТ их нет).

Например, документ "Отчет о розничных продажах", в БП в табличной части Товары есть элементы Счет учета, Счет доходов, Счет расходов. Туда нужно подставлять значения по условию (продан товар или дисконтная карта).

Подскажите, в каком месте мне прописать это условие?
1 yuch
 
08.11.12
14:02
В поле ПриВыгрузке пишем.
Если Что-то там Тогда
Значение = "НеобходимыйСчет" или "КодСчета"
Иначе
Значение = "НеобходимыйСчет" или "КодСчета"
КонецЕсли
2 impulse9
 
08.11.12
14:05
Подставил, не проходит. Мне кажется, где-то еще надо преобразовывать Текст типа "41.02" в Счет из Плана Счетов приемника. Вот только где? )
3 yuch
 
08.11.12
14:23
Есть два варианта.
В правилах обмена ПланаСчетов поковыряйся.
Либо же в ПриЗагрузке документа обрабатывай передаваемую строку.
4 Serdolik55
 
08.11.12
15:53
Если счета известны, то самое простое в обработчике "ПослеЗагрузки" написать:

Для Каждого Стр Из Объект.Товары Цикл
 Стр.СчетУчета = ПланыСчетов.Хозрасчетный.НаименованиеСчета;
КонецЦикла;
5 impulse9
 
09.11.12
04:14
yuch, Serdolik55, спасибо за ответы!
6 cw014
 
09.11.12
07:59
Я бы сделал через:

Значение = "ТоварыНаСкладах";

Только текст должен соответствовать идентификатору предопределенного элемента плана счетов
7 impulse9
 
09.11.12
08:26
Сделал так:

При выгрузке написал:

Значение = "";

После загрузки:

Для Каждого Стр Из Объект.Товары Цикл
 Стр.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.02");
 Стр.СчетУчетаНДСПоРеализации = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.03");
 Стр.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.2");
 Стр.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.2");
КонецЦикла;

Все заработало, спасибо за помощь.

Возник еще один вопрос, с удалением ненужных данных при загрузке.
В том же документе "отчет о розничных продажах" есть табличная часть "Виды оплат", и в БП надо выгружать все данные (карты, кредиты, подарочные сертификаты), кроме Наличных.

Написал после загрузки:

Для Каждого Стр Из Объект.Оплата Цикл
   Если Лев(Стр.ВидОплаты,8)="Наличные" Тогда
       Стр.Удалить();
   Иначе
       Стр.СчетУчетаРасчетов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62");
   КонецЕсли;
КонецЦикла;

но загрузка ругается на Удалить(), так как надо подставить индекс. А где его взять? )
8 impulse9
 
09.11.12
08:43
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1561)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
   ИмяПКО                 =  ОтчетОРозничныхПродажах
   ТипОбъекта             =  Отчет о розничных продажах
   Объект                 =  Отчет о розничных продажах g0000003 от 05.01.2010 18:46:18
   Обработчик             =  ПослеЗагрузкиОбъекта
   ОписаниеОшибки         =  Метод объекта не обнаружен (Удалить)
   ПозицияМодуля          =  (11)
   КодСообщения           =  21
9 impulse9
 
09.11.12
08:46
Разобрался, может кому полезно будет.

Если делать:

Для Каждого Стр Из Объект.Оплата Цикл
       Стр.Удалить();
КонецЦикла;

то работать не будет так как Стр - это ссылка. Надо делать:

Для Каждого Стр Из Объект.Оплата Цикл
       Объект.Оплата.Удалить();
КонецЦикла;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс