Имя: Пароль:
1C
1С v8
Программная установка цен
0 Aspi
 
03.07.14
09:21
Всем привет. Имеется Аптека 2.0 Управляемые формы. Необходимо программно заполнить документ "Установка цен номенклатуры" из xml. Как уже только не пробовал. Последний вариант:
1 butterbean
 
03.07.14
09:21
неплохой вариант
2 Aspi
 
03.07.14
09:22
ПутьКФайлу = Файлик[0];    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
    
    СЗ = Новый СписокЗначений;
ДокУстановкиЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
....
Если Атрибут = "GOODS" Тогда                                 // Индекс 1   Номенклатура
                Сз.Добавить(ЧтениеXML.Значение);            
            КонецЕсли;
            Если Атрибут = "PRODUCER_PRICE" Тогда                       // Индекс 2   Цена производителя
                Сз.Добавить(СтрЗАменить(ЧтениеXML.Значение,".",","));            
            КонецЕсли;
            Если Атрибут = "SUPPLIER_PRICE_VAT" Тогда                   // Индекс 3   Цена поставщика
                Сз.Добавить(СтрЗАменить(ЧтениеXML.Значение,".",","));            
            КонецЕсли;
....
СтрокаТовары = ДокУстановкиЦен.Товары.Добавить();
....НовыйВид = ДокУстановкиЦен.ВидыЦен.Добавить();
                НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена производителя");
                СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена производителя");
                СтрокаТовары.Цена =  СЗ[2].Значение;
                
                НовыйВид = ДокУстановкиЦен.ВидыЦен.Добавить();
                НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена поставщика");
                СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена поставщика");
                СтрокаТовары.Цена =  СЗ[3].Значение;
                
                НовыйВид = ДокУстановкиЦен.ВидыЦен.Добавить();
                НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная цена");
                СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная цена");
                СтрокаТовары.Цена =  СЗ[4].Значение;
3 Aspi
 
03.07.14
09:24
Enter нажал нечайно. Собственно в последнем варианте Документ создается, Виды цен заполняется( их надо три "производителя", поставщика", "розничные") А вот сами цены в первых двух столбцах пустые, третий заполняется нормально. Гугл перерыл, мисту перечитал)
4 Aspi
 
03.07.14
09:26
Собственно вопрос, как написать чтоб заполнялось все три столбца с видами цен. Логики что то мне не хватает.
5 shuhard
 
03.07.14
09:28
(4)[Имеется Аптека 2.0 Управляемые формы]
форуму это ни о чем не говорит
6 Aspi
 
03.07.14
09:28
В СписокЗначений все цены попадают, там все норм.Вопрос именно как правильно заполнить табличную часть документа Установки цен Номенклатуры
7 Aspi
 
03.07.14
09:29
(5) Почти как УТ
8 Aspi
 
03.07.14
09:29
+ УТ 11
9 Aspi
 
03.07.14
09:43
О спасибо. Сделал. Какой раз уже сижу сижу, не получается, только на мисту написал и получилось. Собственно проблема была  в создании цикла. Вот так работает:
ПутьКФайлу = Файлик[0];    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
    
    СЗ = Новый СписокЗначений;
....
Если Атрибут = "GOODS" Тогда                                 // Индекс 1   Номенклатура

                Сз.Добавить(ЧтениеXML.Значение);            
            КонецЕсли;
            Если Атрибут = "PRODUCER_PRICE" Тогда                       // Индекс 2   Цена производителя

                Сз.Добавить(СтрЗАменить(ЧтениеXML.Значение,".",","));            
            КонецЕсли;
            Если Атрибут = "SUPPLIER_PRICE_VAT" Тогда                   // Индекс 3   Цена поставщика

                Сз.Добавить(СтрЗАменить(ЧтениеXML.Значение,".",","));            
            КонецЕсли;
....

Счетчик = 1;
                Пока Счетчик <4  Цикл
                    СтрокаТовары = ДокУстановкиЦен.Товары.Добавить();
                    СтрокаТовары.Номенклатура = Номенклатура;

                    НовыйВид = ДокУстановкиЦен.ВидыЦен.Добавить();
                    Если Счетчик = 1 Тогда
                        НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена производителя");
                        СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена производителя");
                    ИначеЕсли Счетчик = 2 Тогда
                        НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена поставщика");
                        СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена поставщика");
                    ИначеЕсли Счетчик = 3 Тогда
                        НовыйВид.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная цена");
                        СтрокаТовары.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная цена");
                    КонецЕсли;
                    
                    СтрокаТовары.Цена =  СЗ[Счетчик+1].Значение;
                    Счетчик = Счетчик+1;
                КонецЦикла;