Имя: Пароль:
1C
1C 7.7
v7: Первая в жизни обработка. Помогите чайнику
,
0 klem55
 
08.12.13
02:08
Прошу помочь разобраться с обработкой. Опыта программирования в 1С нет, но тут жизнь заставила взяться. Исходные данные - 1С 7.7 ТиС ред 8.7  Необходимо поменять оптовые цены в номенклатуре. Для простоты задачи - сделать их равными 700. Бьюсь уже 3 дня. Видимо - чего-то не понимаю. Много чего перепробовал - все без толку. Обработка никаких ошибок не выдает, все отрабатывает нормально, а цена не меняется. При этом, если менять не оптовую цену , а , например, учетную - все срабатывает как надо!

Где тут грабли - помогите разобраться, пожалуйста



Процедура Сформировать()

// Номенклатура
   спрНоменклатура = СоздатьОбъект( "Справочник.Номенклатура");    
   спрНоменклатура.НайтиПоНаименованию( "Некое наименование товара",0);

   спрНоменклатура.ИспользоватьДату(РабочаяДата()) ;
   спрНоменклатура.ОптоваяЦена = 700;
   спрНоменклатура.Записать();

КонецПроцедуры
1 КонецЦикла
 
08.12.13
02:14
А как там в 8.7? Не отдельный ли справочник цен?
2 ИсчадиеADO
 
08.12.13
02:23
+(1) по идее отдельный справочник должен быть "Цены", подчиненный справочнику номенклатура. Тогда нужно еще написать что-то типа такого

СоздатьОбъект("Справочник.Цены");
СпрЦены.ИспользоватьВладельца(СпрНоменклатура.ТекущийЭлемент()); СпрЦены.ВыбратьЭлементы();
МояЦена = 0; МояДата = '2013.12.08';
Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
  Если СокрЛП(СпрЦены.ТипЦены.Наименование) = "Оптовая" Тогда
     Цена = СпрЦены.Цена.Получить(МояДата);
     прервать;
  КонеЕсли;
КонецЦикла;
3 Мимохожий Однако
 
08.12.13
09:16
Используй дату вчерашнего дня.
4 zak555
 
08.12.13
09:18
(2) ковнокод
5 Песец
 
08.12.13
09:23
(0) Посмотри в конфигураторе тип реквизита "ОптоваяЦена".
6 wertyu
 
08.12.13
09:27
(0) за три дня можно было врукопашную уже все цены поменять
8 2S
 
08.12.13
11:47
ужас нах
9 Эльниньо
 
08.12.13
13:10
(6) Он учится.
10 Хуан
 
08.12.13
13:35
ИспользоватьДату(<?>,);
Синтаксис:
ИспользоватьДату(<Дата>,<УстСразу>)
Назначение:
Установить дату выборки периодических реквизитов справочника.
Возвращает:
Текущее значение используемой даты (на момент до исполнения метода).
Параметры:
<Дата> - значение типа дата.
<УстСразу> - необязательный параметр. Число: если 1, то дата, переданная в качестве параметра, будет установлена уже в текущей выборке; если 0 - то дата, переданная в качестве параметра, будет установлена при следующем открытии выборки. Значение по  умолчанию - 0. .
Замечание:
Если к объекту применен метод ИспользоватьДату, то нельзя применять к этому же объекту метод Получить.
Метод нельзя использовать через две точки.

Для установки цены нужно использовать метод Установить

Установить(<?>,);
Синтаксис:
Установить(<Дата>,<Значение>)
Назначение:
Установить значение периодического реквизита справочника на заданную дату.
Параметры:
<Дата> - выражение со значением требуемой даты;
<Значение> - выражение, содержащее устанавливаемое значение периодического реквизита справочника.
Замечание:
Метод  можно использовать только для периодических реквизитов справочника и если для справочника еще не применялся метод ИспользоватьДату. Метод  можно использовать только для объектов-справочников, созданных функцией СоздатьОбъект.

Процедура Сформировать()

// Номенклатура

   спрНоменклатура = СоздатьОбъект( "Справочник.Номенклатура");    
   спрНоменклатура.НайтиПоНаименованию( "Некое наименование товара",0);

   спрНоменклатура.ОптоваяЦена.Установить(РабочаяДата(), 700);
   спрНоменклатура.Записать();

КонецПроцедуры
11 klem55
 
09.12.13
02:14
(2)
Спасибо! Разобрался.
Действительно - подчиненный справочник.
Программист всегда исправляет последнюю ошибку.