Имя: Пароль:
1C
1С v8
Конвертация данных
0 rutony
 
12.10.12
15:39
Есть УТ 11 и Бухгалтерия 2.0.

Нужно при конвертации сделать так что бы вся номенклатура свернулась в конкретные 2 номенклатуры с 10% и 18% ставками НДС.
Эти 2 номенклатуры уже присутствуют в бухгалтерии.

Как так настроить правила? Вообще это можно сделать?
1 salvator
 
12.10.12
15:43
Может попробовать делать поиск только по реквизиту ставки ндс?
2 rutony
 
12.10.12
15:51
(1) Не подходит, тк. в бухгалтерии есть куча номенклатуры с этими ставками, а нужны только 2 конкретные
3 Абыр
 
12.10.12
15:54
Создайте новое ПКО для номенклатуры.
Источник - номенклатура УТ
Получатель - номенклатура БП.
В правиле всего одно ПКС, где источник пустой, а получатель - код или любой другой реквизит, по которому вы можете однозначно определить одну из 2х номенклатур в получателе.
В обработчике ПередВыгрузкой этого ПКС в зависимости от ставки НДС источника устанавливаете нужное значение свойства.
4 rutony
 
12.10.12
16:21
(3) Спс

Сделал ПКО и ПКС, оключил в ПКО синхронизацию по УИДу.
В обработчике написал:
Если Источник.СтавкаНДС = Перечисления.СтавкаНДС.Ставка10 Тогда
   Значение = "Ном10";
ИначеЕсли Источник.СтавкаНДС = Перечисления.СтавкаНДС.Ставка18 Тогда    
   Значение = "Ном18";
Иначе
   Отказ = Истина;
КонецЕсли;

Все перенеслось как нужно, но создалась пустая номенклатура... Почему?

зы. Сделал 2 базы самопилки из документа, номенклатуры и ставки ндс, что бы не тестить на рабочих базах, а то долго...
5 rutony
 
12.10.12
16:22
(4) Обработчик, Наименование, поставил поиск по нему
6 Alex S D
 
12.10.12
16:29
КлючВыгружаемыхДанных = наименование;
7 rutony
 
12.10.12
17:05
(6) Поставил в ПКО ПередВыгрузкой:
КлючВыгружаемыхДанных = "Наименование";

В итоге вся номенклатура во 2й базе слилась в "Ном10".
8 Alex S D
 
12.10.12
17:07
(7) а если так КлючВыгружаемыхДанных = Значение

хотя может там не в ключе дело..
9 acsent
 
12.10.12
17:08
(8) это не обязательно, а пустая оттого что есть без ставки
10 Alex S D
 
12.10.12
17:11
(9) Отказ = Истина; есть же..
11 rutony
 
12.10.12
17:16
(9)
Иначе
   Отказ = Истина;
КонецЕсли;

Это отсекает такие...

Плюс таких точно нет, всего сделал 5 номенклатур, у которых заполнены ставки
12 rutony
 
12.10.12
17:23
Вроде получилось:
Убрал КлючВыгружаемыхДанных
В ПКО номенклатуры поставил галку не создавать в приемнике объект если не найден
13 m-serg74
 
12.10.12
17:24
(12) значит теперь не все выгружается
14 m-serg74
 
12.10.12
17:28
сделай

Иначе
   Сообщить(Источник);
   Отказ = Истина;
КонецЕсли;

и посмотришь что там иначе пытается выгружаться
15 m-serg74
 
12.10.12
17:33
Отказ = Источник.ЭтоГруппа();

а еще вот это добавь
16 Mikhail Volkov
 
12.10.12
17:54
ПКО После загрузки:

Объект.Товары.Свернуть("Номенклатура,ЕдиницаИзмерения,Коэффициент,СтавкаНДС,Цена", "Количество,Сумма,СуммаНДС");

Для Каждого СтрокаТЧ Из Объект.Товары Цикл
   
   Если СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
       СтрокаТЧ.Номенклатура = Справочники.Номенклатура.ТоварБезНДС;
   ИначеЕсли СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
       СтрокаТЧ.Номенклатура = Справочники.Номенклатура.ТоварНДС10;
   Иначе
       СтрокаТЧ.Номенклатура = Справочники.Номенклатура.ТоварНДС18;
   КонецЕсли;
   
   Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
       СтрокаТЧ.ЕдиницаИзмерения = СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков;
   КонецЕсли;
   
   СтрокаТЧ.Цена = 1;
   СтрокаТЧ.Коэффициент = 1;
   СтрокаТЧ.Количество = СтрокаТЧ.Сумма;
   
   Если Не ЗначениеЗаполнено(СтрокаТЧ.Склад) Тогда
       СтрокаТЧ.Склад = Объект.Склад;
   КонецЕсли;

КонецЦикла;
17 Mikhail Volkov
 
12.10.12
17:55
+ Это для обмена УТ - УПП (без номенклатуры)
18 acsent
 
12.10.12
17:56
(11) отказ в выгрузке наименования, а тк по нему поиск, это равносильно что онопустое
19 acsent
 
12.10.12
17:57
Значение = "Ном18";
Иначе
   Значение = "Неизвестная ставка";
КонецЕсли;