ТиС для Украины. Как получить список цен?
23.11.2009
21:37
#11
всё правильно, но за один день можно несколько раз изменить значения проведение разных доков
24.11.2009
14:32
#12
"Чета не получается
Делаю так
Процедура глVBAЦеныПериод(кодтовара) Экспорт
Excel=СоздатьОбъект("Excel.Application");
РабочаяКнига=Excel.Workbooks("Прайс лист.xls");
Лист=РабочаяКнига.Sheets("baza");
СпрНом=СоздатьОбъект("Справочник.Номенклатура");
Цены=СоздатьОбъект("Справочник.Цены");
Пер=СоздатьОбъект("Периодический");
СпрТЦ= СоздатьОбъект("Справочник.КатегорииЦен");
СпрТЦ.НайтиПоНаименованию("Розничная");
СпрНом.НайтиПоКоду(кодтовара);
Цены.ИспользоватьВладельца(СпрНом.ТекущийЭлемент());
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", "Розничная",1,);
Пока Цены.ПолучитьЭлемент()=1 Цикл
Пер.ИспользоватьОбъект("Цена",Цены.ТекущийЭлемент());
Пер.ВыбратьЗначения(,);
строкан=20;
Пока Пер.ПолучитьЗначение()=1 Цикл
Лист.Cells(строкан,1).value = Пер.Значение;
Лист.Cells(строкан,2).value = Пер.ДатаЗнач;
строкан=строкан+1;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ошибок нет, но таблица пустая ((
"
Делаю так
Процедура глVBAЦеныПериод(кодтовара) Экспорт
Excel=СоздатьОбъект("Excel.Application");
РабочаяКнига=Excel.Workbooks("Прайс лист.xls");
Лист=РабочаяКнига.Sheets("baza");
СпрНом=СоздатьОбъект("Справочник.Номенклатура");
Цены=СоздатьОбъект("Справочник.Цены");
Пер=СоздатьОбъект("Периодический");
СпрТЦ= СоздатьОбъект("Справочник.КатегорииЦен");
СпрТЦ.НайтиПоНаименованию("Розничная");
СпрНом.НайтиПоКоду(кодтовара);
Цены.ИспользоватьВладельца(СпрНом.ТекущийЭлемент());
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", "Розничная",1,);
Пока Цены.ПолучитьЭлемент()=1 Цикл
Пер.ИспользоватьОбъект("Цена",Цены.ТекущийЭлемент());
Пер.ВыбратьЗначения(,);
строкан=20;
Пока Пер.ПолучитьЗначение()=1 Цикл
Лист.Cells(строкан,1).value = Пер.Значение;
Лист.Cells(строкан,2).value = Пер.ДатаЗнач;
строкан=строкан+1;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ошибок нет, но таблица пустая ((
"
24.11.2009
15:45
#14
"> Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", "Розничная",1,);
это проблемная строка. С чего вы взяли, что туда можено написать "Розничная" строкой и оно заработает? Ссылку на элемент надо указывать"
это проблемная строка. С чего вы взяли, что туда можено написать "Розничная" строкой и оно заработает? Ссылку на элемент надо указывать"
24.11.2009
15:45
#15
Ага, точно. Ну пусть туда несколько значений и вывалится, раз они все таки были.
24.11.2009
16:12
#16
"Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", Константа.ЦенаРеализации,1,);
{Глобальный модуль(466)}: Неверное имя реквизита!
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", СпрТЦ,1,);
{Глобальный модуль(466)}: Неверное имя реквизита!
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", СпрТЦ.ТекущийЭлемент(),1,);
{Глобальный модуль(466)}: Неверное имя реквизита!
"
{Глобальный модуль(466)}: Неверное имя реквизита!
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", СпрТЦ,1,);
{Глобальный модуль(466)}: Неверное имя реквизита!
Цены.ВыбратьЭлементыПоРеквизиту("КатегорииЦен", СпрТЦ.ТекущийЭлемент(),1,);
{Глобальный модуль(466)}: Неверное имя реквизита!
"
24.11.2009
16:50
#17
"У меня нет "ТиС для Украины". Я написал пример относительно "ТиС для России". Не думаю, что они фундаментально отличаются. В моей ТиС есть реквизит "ТипЦен", а не "КатегорииЦен" в справочнике "Цены" и это видно в моей строке:
Цены.ВыбратьЭлементыПоРеквизиту("ТипЦен",Константа.РозничныйТипЦен,1,0);
Кроме того, для получения именно розничного типа цен я использую Константа.РозничныйТипЦен, в моей ТиС она есть и в ней хранится ссылка на элемент справочника "ТипыЦен", если у вас сделано как то иначе, надо смотреть и видоизменять предложенный алгоритм. Но основа в нем заложена корректная. Там, собственно, есть все. Просто надо внимательно посмотреть и разобраться в том зачем нужна каждая строчка"
Цены.ВыбратьЭлементыПоРеквизиту("ТипЦен",Константа.РозничныйТипЦен,1,0);
Кроме того, для получения именно розничного типа цен я использую Константа.РозничныйТипЦен, в моей ТиС она есть и в ней хранится ссылка на элемент справочника "ТипыЦен", если у вас сделано как то иначе, надо смотреть и видоизменять предложенный алгоритм. Но основа в нем заложена корректная. Там, собственно, есть все. Просто надо внимательно посмотреть и разобраться в том зачем нужна каждая строчка"
24.11.2009
17:15
#18
теперь я понял
заработало!
Просто у меня справочник "категории цен" а в справочнике "цены" у него идентефикатор "категория цены"
заработало!
Просто у меня справочник "категории цен" а в справочнике "цены" у него идентефикатор "категория цены"
26.11.2009
11:05
#19
Вопрос в догонку
А как можно из выборки справочника номенклатура получить элементы в которых дата значения пер.реквизита цены меньше текущей даты например более чем на год?
А как можно из выборки справочника номенклатура получить элементы в которых дата значения пер.реквизита цены меньше текущей даты например более чем на год?
26.11.2009
12:30
#20
"ТекДата=ТекущаяДата();
ПограничнаяДата=ДобавитьМесяц(ТекДата,-12);
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Цены=СоздатьОбъект("Справочник.Цены");
История=СоздатьОбъект("Периодический");
Если Номенклатура.НайтиПоКоду(КодТовара)=1 Тогда
Цены.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Цены.ВыбратьЭлементыПоРеквизиту("ТипЦен",Константа.РозничныйТипЦен,1,0);
Пока Цены.ПолучитьЭлемент()=1 Цикл
История.ИспользоватьОбъект("Цена",Цены.ТекущийЭлемент());
История.ОбратныйПорядок(1);
История.ВыбратьЗначения(,ТекДата);
Если История.ПолучитьЗначение()=1 Тогда
Если История.ДатаЗнач<ПограничнаяДата Тогда
//в Номенклатура.ТекущийЭлемент() позиция на нужный элемент
...
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;"
ПограничнаяДата=ДобавитьМесяц(ТекДата,-12);
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Цены=СоздатьОбъект("Справочник.Цены");
История=СоздатьОбъект("Периодический");
Если Номенклатура.НайтиПоКоду(КодТовара)=1 Тогда
Цены.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Цены.ВыбратьЭлементыПоРеквизиту("ТипЦен",Константа.РозничныйТипЦен,1,0);
Пока Цены.ПолучитьЭлемент()=1 Цикл
История.ИспользоватьОбъект("Цена",Цены.ТекущийЭлемент());
История.ОбратныйПорядок(1);
История.ВыбратьЗначения(,ТекДата);
Если История.ПолучитьЗначение()=1 Тогда
Если История.ДатаЗнач<ПограничнаяДата Тогда
//в Номенклатура.ТекущийЭлемент() позиция на нужный элемент
...
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;"
Читают тему
(гостей: 1)