Имя: Пароль:
1C
1С v8
Конвертация данных: Можно ли выгрузить несколько типов цен в один документ?
0 breakthrough
 
23.01.13
07:39
Здравствуйте!
Делаю выгрузку цен номенклатуры их ТиС пробегая по элементам, затем выгружаю все это в таблицу значений и передаю в ПКО документа "Установка цен номенклатуры". При этом для каждого типа цен вынужден создавать отдельный документ. Можно ли как-то запихать все в один?
Типы цен - расчетные.
Код выгрузки примерно такой:

ТабЦены = СоздатьОбъект("ТаблицаЗначений");
ТабЦены.НоваяКолонка("Номенклатура");
ТабЦены.НоваяКолонка("Цена");
ТабЦены.НоваяКолонка("Валюта");
ТабЦены.НоваяКолонка("ЕдиницаИзмерения");
ТабЦены.НоваяКолонка("ТипЦен");
ТабЦены.НоваяКолонка("ПроцентСкидкиНаценки");
ТабЦены.НоваяКолонка("ИндексСтрокиТаблицыЦен");
ТабЦены.НоваяКолонка("СпособРасчетаЦены");

Сообщить("Выгрузка кр. оптовых цен");
ТипЦен=  Перечисление.ТипыРасхЦен.КрупныйОпт;

ТабТипЦен = СоздатьОбъект("ТаблицаЗначений");
ТабТипЦен.НоваяКолонка("ТипЦен");
ТабТипЦен.НоваяСтрока();
ТабТипЦен.ТипЦен = ТипЦен;

НомерПоПорядку = 1;
Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
   Если Спр.ЭтоГруппа()=1 Тогда
       Продолжить;
   КонецЕсли;
   Если  Спр.КрупныйОпт.Получить(ДатаОстатков) = 0 Тогда
       Продолжить;
   КонецЕсли;
   Если  Спр.ЦенаПриобретения.Получить(ДатаОстатков) = 0 Тогда
       Продолжить;
   КонецЕсли;

       ТабЦены.НоваяСтрока();
       ТабЦены.Номенклатура = Спр.ТекущийЭлемент();
       
       
       Если Спр.ВалютаПродажи <> Константа.БазоваяВалюта Тогда
           ВалютаТовара=Спр.ВалютаПродажи;
           Курс=КурсДляВалюты(Константа.БазоваяВалюта,ДатаОстатков);
           Цена =  Спр.КрупныйОпт.Получить(ДатаОстатков);
           ТабЦены.Цена=Пересчет(Цена,ВалютаТовара,ДатаОстатков,Константа.БазоваяВалюта,Курс);
       Иначе
           ТабЦены.Цена =  Спр.КрупныйОпт.Получить(ДатаОстатков);
         КонецЕсли;
       ТабЦены.ПроцентСкидкиНаценки =  Окр((((ТабЦены.Цена/Спр.ЦенаПриобретения.Получить(ДатаОстатков))-1)*100),2,1);
       ТабЦены.Валюта                = Константа.БазоваяВалюта;
       ТабЦены.ЕдиницаИзмерения    = Спр.БазоваяЕдиницаИзмерения;
       ТабЦены.ТипЦен                = ТипЦен;
       НомерПоПорядку = НомерПоПорядку+1;

       
   КонецЦикла;
               

       ВходящиеДанные = СоздатьОбъект("СписокЗначений");
       ВходящиеДанные.Установить("ТипыЦен",        ТабТипЦен);
       ВходящиеДанные.Установить("Товары",            ТабЦены);
   ВходящиеДанные.Установить("Комментарий",    (Строка(ТипЦен) + " выгрузка из 7-ки"));
       ВходящиеДанные.Установить("Дата",            Параметры.ДатаВводаОстатков);
       ВыгрузитьПоПравилу(,, ВходящиеДанные,, "УстановкаЦенНоменклатуры");                    
       
       ТабЦены.УдалитьСтроки();
         ТабТипЦен.УдалитьСтроки();
1 dk
 
23.01.13
08:15
а в приемнике можно в одном документе хранить несколько типов цен?
Что сейчас останавливает засунуть в ТЗ несколько типов цен?
2 breakthrough
 
23.01.13
08:20
(1) Да, в документе "Установка цен номенклатуры" в 8-ке УТ, УПП, КА можно устанавливать сразу несколько типов цен.
Мешает то, что я не знаю как это сделать.
3 dk
 
23.01.13
08:23
возьми любой документ готовый в приемнике и погляди через консоль запросов что там где хранится при нескольких ценах в одном документе
4 breakthrough
 
23.01.13
08:32
(3) Интерактивно, я знаю как это делается. Вот как программно?  Если знаешь - подскажи.
5 dk
 
23.01.13
08:35
что значит как программно? ты же в КД уже написал правило
6 breakthrough
 
23.01.13
08:44
(5) ну и что. Как это выглядит в коде? Либо нужно добавлять тип цен в таблицу ТабТипЦен, затем снова пробегать по номенклатуре и добавлять ее в ту же таблицу, либо создавать новую пото выгружать отдельным правилом с поиском по этому документу - но я не знаю как именно будет работать. пробовал и так и так - если бы знал не писал бы. Ты можешь конкретно подсказать?
7 cw014
 
23.01.13
08:47
Первая грубейшая ошибка: нет инициализации значения "ИндексСтрокиТаблицыЦен"
8 cw014
 
23.01.13
09:09
И нафига грузить через входящие данные?
9 Godofsin
 
23.01.13
09:13
(8) а как по-другому?
10 cw014
 
23.01.13
09:19
(9)

       ВыгрузитьПоПравилу(Новый Структура("ТипыЦен,Товары,Комментарий, Дата", ТабТипЦен, ТабЦены, СокрЛП(ТипЦен) + " выгрузка из 7-ки"), Параметры.ДатаВводаОстатков),,,, "УстановкаЦенНоменклатуры");
11 Godofsin
 
23.01.13
09:20
(10) "Новый Структура" - это в 7-то?
12 hhhh
 
23.01.13
09:27
(6) а сейчас как работает у тебя без типа цен? Ведь должен же быть тип цен.
13 cw014
 
23.01.13
09:30
А, да точно... Чего то затупил
14 cw014
 
23.01.13
09:39
Тогда так:

       ДанныеОбъекта = СоздатьОбъект("СписокЗначений");
       ДанныеОбъекта.Установить("ТипыЦен",        ТабТипЦен);
       ДанныеОбъекта.Установить("Товары",            ТабЦены);
       ДанныеОбъекта.Установить("Комментарий",    (Строка(ТипЦен) + " выгрузка из 7-ки"));
       ДанныеОбъекта.Установить("Дата",            Параметры.ДатаВводаОстатков);
       ВыгрузитьПоПравилу(ДанныеОбъекта,,,, "УстановкаЦенНоменклатуры");
15 breakthrough
 
23.01.13
09:59
(14) И в чем разница? В том, что вы назвали "список значений" "ДаннымиОбъекта" и передаете его как источник?
16 Godofsin
 
23.01.13
10:11
Не тривиальная задачка. Может, не стоит она усилий? По одному доку на каждый тип цен по-моему удобней, не?
17 breakthrough
 
23.01.13
10:12
(16) По одному все работает) Просто удобней потом цены пересчитывать на основании базовой в одном документе, нежели заходить по отдельности по типу цен, добавлять закуп и пото пересчитывать. А так, я уже с вами согласен.
18 Godofsin
 
23.01.13
10:12
Или переписать код на получение всех цен на позиции, при загрузке обрабатывать... как то так... хз, короче
19 breakthrough
 
23.01.13
10:13
(7) К чему же ведет эта грубейшая ошибка? Мне о ней пока что ни разу ничего не напоминало.
20 cw014
 
23.01.13
10:16
(19) Он указывает, в какой строке на форме должна находиться текущая строка таблицы товаров
21 ЧашкаЧая
 
23.01.13
10:19
(19)К коду в (0) дописать чтобы в ТабТипЦен писались все нужные типы цен, в ТабЦены писать цену для каждой номенклатуры в для каждого типа цен (как уже сказали выше заполнять ИндексСтрокиТаблицыЦен). ИндексСтрокиТаблицыЦен - это связка между табличными частями типов цен и номенклатуры.
22 breakthrough
 
23.01.13
10:22
(21) Спасибо, теперь стало понятнее)