Имя: Пароль:
1C
1С v8
Несколько типов цен в одном документе Установка цен.
,
0 RasuLL
 
02.01.13
15:31
Пытаюсь в документ добавить два типа цен

ДокУстановкаЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
       ДокУстановкаЦен.Дата = Дата;
       ДокУстановкаЦен.ТипыЦен.Очистить();
       ВыборкаТипЦен = ДокУстановкаЦен.ТипыЦен.Добавить();
       ВыборкаТипЦен2 = ДокУстановкаЦен.ТипыЦен.Добавить();
       ТипЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");
       ТипЦены2 = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000002");
       ВыборкаТипЦен.ТипЦен = ТипЦены;    
       ВыборкаТипЦен2.ТипЦен = ТипЦены2;
тчТовары = ДокУстановкаЦен["Товары"];
       СтрокаТаблицаТовары = тчТовары.Добавить();
       СтрокаТаблицаТовары["Номенклатура"] = НовыйЭлемент.Ссылка;
       СтрокаТаблицаТовары["Валюта"]       = ВалютаДок;
       СтрокаТаблицаТовары["ЕдиницаИзмерения"] = НовыйЭлемент.ЕдиницаХраненияОстатков;
       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены;
       СтрокаТаблицаТовары["Цена"]         = ЦенаПервая;
       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены2;
       СтрокаТаблицаТовары["Цена"]         = ЦенаВторая;

выбирает только второй тип цен...в чем ошибка?
1 IamAlexy
 
02.01.13
15:32
вот   в этом:


       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены;
       СтрокаТаблицаТовары["Цена"]         = ЦенаПервая;
       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены2;
       СтрокаТаблицаТовары["Цена"]         = ЦенаВторая;
2 RasuLL
 
02.01.13
15:33
(1) а как правильней?
3 IamAlexy
 
02.01.13
15:34
(2) правильнее не так..
ибо так ты сначала в реквизит пишешь типцены1 а затем туда же поверх типцены2


что за конфа то?
как правило установка цен все же только по одному типу цен устанавливает и по одной валюте...
4 RasuLL
 
02.01.13
15:36
(3) УТ 10,3. Хочу установить закупочную и продажную цену в один документ. А как выбрать отдельно?
5 Сияющий Асинхраль
 
02.01.13
15:38
Рабочий текст:

           
           ДокЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
           ДокЦен.Дата = РабочаяДата;
           ДокЦен.НеПроводитьНулевыеЗначения = Ложь;
           ДокЦен.Ответственный = Ответственный;
           
           Для Каждого Строка Из тзТиповЦен Цикл
               СтрокаТЦ = ДокЦен.ТипыЦен.Добавить();
               СтрокаТЦ.ТипЦен = Строка.ТипЦены;
               
           КонецЦикла;
           
           Тмп = 0;
           ПустаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
           
           Для Счетчик = 0 По ВсегоСтрокДляЦикла Цикл
               
               СтрокаТаблицыТиповЦен = тзОсн[Счетчик];
               
               Если СтрокаТаблицыТиповЦен.ЭтоЭлемент = 0 Тогда
                   Продолжить;
               КонецЕсли;
               
               Для Каждого Строка Из тзТиповЦен Цикл
                   
                   НоваяСтрока = ДокЦен.Товары.Добавить();
                   НоваяСтрока.ИндексСтрокиТаблицыЦен     = Тмп;
                   НоваяСтрока.Номенклатура               = СтрокаТаблицыТиповЦен.спрНоменклатура;
                   НоваяСтрока.ХарактеристикаНоменклатуры = ПустаяХарактеристика;
                   НоваяСтрока.ТипЦен                     = Строка.ТипЦены;
                   НоваяСтрока.Цена                       = СтрокаТаблицыТиповЦен["Цена_" + Строка.НомерКолонкиВЛистеЗагрузки];
                   НоваяСтрока.Валюта                     = глЗначениеПеременной("ВалютаУправленческогоУчета");;
                   НоваяСтрока.ЕдиницаИзмерения           = СтрокаТаблицыТиповЦен.спрНоменклатура.ЕдиницаХраненияОстатков;
                   НоваяСтрока.ПроцентСкидкиНаценки       = 0;
                   
               КонецЦикла;
               
               Тмп = Тмп + 1;
               
           КонецЦикла;
           
           ДокЦен.Записать(РежимЗаписиДокумента.Проведение);
           
       КонецЕсли;
6 RasuLL
 
02.01.13
15:41
(5) тут тоже 1 тип цены, а как чтоб несколько?
7 Сияющий Асинхраль
 
02.01.13
15:45
(6) Тут произвольное количество типов цен. Обрати внимание:

Для Каждого Строка Из тзТиповЦен Цикл
   СтрокаТЦ = ДокЦен.ТипыЦен.Добавить();
   СтрокаТЦ.ТипЦен = Строка.ТипЦены;
               
КонецЦикла;

Это кусок загрузки произвольного количества типов цен из экселя...
8 Сияющий Асинхраль
 
02.01.13
15:48
+(7) Сам документ установки цен - своеобразный документ, в каждой строке ТЗ хранится одна цена, а отображается в форме не табличная часть, а таблица значений, которая строится по табличной части...
9 Сияющий Асинхраль
 
02.01.13
15:57
+(8) Соответственно, чтобы добавить две цены, надо добавить две строки документа с одной номенклатурой и разными ценами
Строки эти различаются значением индекса:

НоваяСтрока.ИндексСтрокиТаблицыЦен     = Тмп;

а ты добавляешь одну строку, и в этой одной строке перезаписываешь тип цены и цену, см. (1)
10 RasuLL
 
02.01.13
15:57
(8) Спасибо! Добавила вторую строку ТЧ.
тчТовары = ДокУстановкаЦен["Товары"];
       СтрокаТаблицаТовары = тчТовары.Добавить();
       СтрокаТаблицаТовары["Номенклатура"] = НовыйЭлемент.Ссылка;
       СтрокаТаблицаТовары["Валюта"]       = ВалютаДок;
       СтрокаТаблицаТовары["ЕдиницаИзмерения"] = НовыйЭлемент.ЕдиницаХраненияОстатков;
       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены;
       СтрокаТаблицаТовары["Цена"]         = ЦенаПервая;
       //Запишем товар и цену во вторую тч
       тчТовары2 = ДокУстановкаЦен["Товары"];
       СтрокаТаблицаТовары = тчТовары2.Добавить();
       СтрокаТаблицаТовары["Номенклатура"] = НовыйЭлемент.Ссылка;
       СтрокаТаблицаТовары["Валюта"]       = ВалютаДок;
       СтрокаТаблицаТовары["ЕдиницаИзмерения"] = НовыйЭлемент.ЕдиницаХраненияОстатков;
       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены2;
       СтрокаТаблицаТовары["Цена"]         = ЦенаВторая;