Имя: Пароль:
1C
1С v8
Программное заполнение Документа Установка Цен Номенклатуры
0 illiona
 
naïve
26.05.17
09:48
Добрый день. Помогите разобраться. Создаю программно установку цен.
Как каждому товару установить несколько цен

ДокУЦ = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокУЦ.Дата = ТекущаяДата();
    ДокУЦ.Ответственный = Пользователи.ТекущийПользователь();
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Базовая цена поставщика");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Дилерская цена прихода");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая 1");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая 2");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая 3");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Цена спец.предложения");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;
    ВидЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Цена спец.предложения 2");
    ТЧВидЦены = ДокУЦ.ТипыЦен.Добавить();
    ТЧВидЦены.ТипЦен = ВидЦены;

Читаю данные для даполнения из таблицы с формы
    Для каждого СтрД Из ТаблицаДанные1 Цикл
        НоваяСтрока = ДокУЦ.Товары.Добавить();
   СпрНом = Справочники.Номенклатура.НайтиПоНаименованию(СтрД.Номенклатура);
   НоваяСтрока.Номенклатура = СпрНом;
//а цен у каждого товара должно быть несколько
    КонецЦикла;
1 Ц_У
 
26.05.17
09:51
Ctrl+V заклинило где-то вначале?
2 Гипервизор
 
26.05.17
10:15
(0) Достаточно посмотреть данный документ в конфигураторе для осознания того факта, что тип цен также является реквизитом ТЧ Товары.
3 Михаил Козлов
 
26.05.17
10:42
И обратите внимание на реквизит ТЧ "Товары" - ИндексСтрокиТаблицыЦен: для всех строк ТЧ с разными типами цен и одинаковыми остальными значениями этот реквизит одинаковый.
4 illiona
 
naïve
26.05.17
11:38
да увидела что у Товары тоже есть реквизит ТипЦен. Не пойму как из связать
5 LienXo
 
26.05.17
11:40
(4) стрТовары.ТипЦен = Справочники.ТипЦен.НайтиПоНаименованию("Розничные")
6 illiona
 
naïve
26.05.17
11:45
Для каждого СтрД Из ТаблицаДанные1 Цикл
НоваяСтрока = ДокУЦ.Товары.Добавить();
СпрНом = Справочники.Номенклатура.НайтиПоНаименованию(СтрД.Номенклатура);
НоваяСтрока.Номенклатура = СпрНом;

Для каждого Стрк из ДокУЦ.ТипыЦен Цикл
Если СокрЛП(Стрк.ТипЦен.Наименование) = "Базовая цена поставщика" тогда
НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(Стрк.ТипЦен.Наименование);
НоваяСтрока.Цена = СтрД.БазоваяЦенаПостав;
ИначеЕСЛИ СокрЛП(Стрк.ТипЦен.Наименование) = "Дилерская цена прихода" тогда
                    НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(Стрк.ТипЦен.Наименование);
НоваяСтрока.Цена= СтрД.ДилерскаяЦенаПрихода;

КонецЕсли;    
КонецЦикла;
            
сначало ставит в базовую, потом при добавлении затирает в базовой и ставит в дилерскую
7 Михаил Козлов
 
26.05.17
11:53
(6) Вам нужно заполнить цены по 2-м типам?
Тогда:
1. Заполнить ТЧ ТипыЦен документа (2 строки)
2. Для каждого товара добавлять в ТЧ Товары 2 строки.
3. Правильно формировать реквизит ИндексСтрокиТаблицыЦен.
8 illiona
 
naïve
26.05.17
12:00
а как сформировать ИндексСтрокиТаблицы?
Таблицу с типами сформировала
Дальше не совсем понятно(
9 h-sp
 
26.05.17
12:00
(6) вот это выкинь

НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(Стрк.ТипЦен.Наименование);

напиши

НоваяСтрока.ТипЦен = Стрк.ТипЦен;
10 h-sp
 
26.05.17
12:01
(7) не нужно ИндексСтрокиТаблицыЦен. Оно при записи документа само проставится как нужно.
11 LienXo
 
26.05.17
12:07
Для каждого Стрк из ДокУЦ.ТипыЦен Цикл
НоваяСтрока = ДокУЦ.Товары.Добавить();
СпрНом = Справочники.Номенклатура.НайтиПоНаименованию(СтрД.Номенклатура);
НоваяСтрока.Номенклатура = СпрНом;
НоваяСтрока.ТипЦены = Стрк.ТипЦены;

Если СокрЛП(Стрк.ТипЦен.Наименование) = "Базовая цена поставщика" тогда
НоваяСтрока.Цена = СтрД.БазоваяЦенаПостав;
Иначе
...
КонецЕсли;
КонецЦикла;
12 illiona
 
naïve
26.05.17
12:23
Спасибо ВСЕМ. Получилось)
13 Михаил Козлов
 
26.05.17
12:49
(10) В конфигурации КА 1.1 формирование ИндексСтрокиТаблицыЦен происходит в форме документа (ПередЗаписью), а не в модуле.
14 h-sp
 
26.05.17
13:31
(13) ну или в приоткрытии
15 Ёпрст
 
гуру
26.05.17
13:33
(11) Вот этот ад адский выкинь:

СпрНом = Справочники.Номенклатура.НайтиПоНаименованию(СтрД.Номенклатура);
16 Ёпрст
 
гуру
26.05.17
13:33
+15
НоваяСтрока.Номенклатура = СтрД.Номенклатура;
17 darius357
 
26.05.17
14:34
ну как всегда побакланили, и нифига толку
18 Гипервизор
 
26.05.17
14:43
(17) месье не читатель? (12)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший