Имя: Пароль:
1C
1C 7.7
v7: Подстановка цены.
,
0 въезжаю в 1с
 
08.09.11
16:37
Здрасти всем... продолжаю осваивать 1с

   Прайс= СоздатьОбъект("Справочник.Номенклатура");
   Прайс.ВыбратьЭлементы();
   Тип = СоздатьОбъект("Справочник.ТипыЦен");
   Если Тип.НайтиПоКоду(6) =1  Тогда
       ЭлементИлиГруппа=Тип.ТекущийЭлемент ();
   КонецЕсли;
   НаДат = ТекущаяДата();
   Пока Прайс.ПолучитьЭлемент() = 1 Цикл
      Если Прайс.ЭтоГруппа () = 0 Тогда
         ДБФ.Добавить();
         ДБФ.KOD =    Прайс.Код;
         ДБФ.NAME = Прайс.Наименование;
   //    ДБФ.PROIZV = Изготв.Наименование;
         ДБФ.CENA = глПолучитьЦену(Прайс, Тип, НаДат);
       ДБФ.KOL =    " ";
       ДБФ.GODN =    Прайс.СрокГодности;    
       ДБФ.Записать();
   КонецЕсли;
       КонецЦикла;

В общем надо чтоб в ДБФ.CENA = глПолучитьЦену(Прайс, Тип, НаДат); подставлялся в Тип подставлялась из справочника ТипыЦены, позиция у которой код 0006

Подскажите, заранее спасибо.
1 andrewks
 
08.09.11
16:38
код числовой, или текстовый?
2 въезжаю в 1с
 
08.09.11
16:40
Числовой.

а еще как на данном форуме делать ссылку на сообщение на которое отвечаешь?
а то искал искал .... :)
3 andrewks
 
08.09.11
16:41
(2)  скобка левая номер поста скобка правая
4 Arseny
 
08.09.11
16:41
глПолучитьЦену(Прайс, ЭлементИлиГруппа, НаДат);
5 FN
 
08.09.11
16:41
(0) ТипЦены кинуть на форму/константы/другое_место совсем никак?
а то потом кто-нибудь код поменяет и база - упс - и не работает

(2) просто номер поста в скобках
6 Arseny
 
08.09.11
16:42
Не знаю, почему такое странное названи переменной, но там именно и будет найденное значение
7 Tatitutu
 
08.09.11
16:43
Тип - не очень хорошее имя для переменной

НайтиПоКоду(6) при коде 0006 - не очень правильно

нет проверки , а если не найдет

глПолучитьЦену(Прайс.ТекущийЭлемент(), ЭлементИлиГруппа, НаДат);
8 въезжаю в 1с
 
08.09.11
16:46
(1) пересмотрел, обманул тип Текст  *sorry*

(7) ошибка
Рассчетная        = ТипЦены.Рассчитывается;
{Глобальный модуль(1656)}: Значение не представляет агрегатный объект (Рассчитывается)

Но так понимаю НайтиПоКоду(6) при типе текст неправильно обозначено
9 FN
 
08.09.11
16:51
(8) если ты напишешь НайтиПоКоду("0006") - будет работать, но ровно до тех пор, пока кто-нибудь из пользователей не поменяет код. Например на "006".

дурной тон привязываться в коде к данным, которые легко менются пользователем. Сделай константу ЦенаДляВыгрузкиВДБФ с типом Справочник.ТипыЦен

а в коде пишешь
НужнаяЦена= Константа.ЦенаДляВыгрузкиВДБФ;
...
ДБФ.CENA = глПолучитьЦену(Прайс, НужнаяЦена, НаДат);
10 въезжаю в 1с
 
08.09.11
16:51
Все получилось!!
Спс парни ;)
а то зачем то решил изучить 1С на свою голову
(5) да это сторонняя обработка :)
вряд ли изменится :)
11 въезжаю в 1с
 
08.09.11
16:53
Можно сделать поиск по наименованию
все равно данная обработка для конкретного покупателя, для которого своя цена.
12 FN
 
08.09.11
16:54
(10) если стороння, то кинь на форму реквизит ВыбТипЦены, в приоткрытии пропиши
Тип = СоздатьОбъект("Справочник.ТипыЦен");
Если Тип.НайтиПоКоду("006") =1  Тогда
ВыбТипЦены=Тип.ТекущийЭлемент();
КонецЕсли;

и в самой обработке проверку на ВыбТипЦены.Выбран()

(11) По наименованию еще хуже
13 въезжаю в 1с
 
08.09.11
17:02
(12) понял спасибо

Тут глянул в справочник номенклатуры, там есть каталог корзина, в него скидывают позиции которые не актуальны.
Как вообще с ними правильно поступать:
ставить пометку на удаления и скидывать в другой каталог?
выпиливать их из базы, хотя думаю это есть плохо для отчетов.
Как чтоб данные позиции не попадали в прайс?
мозгом понимаю что надо изменения в данную строку
Если Прайс.ЭтоГруппа () = 0 или Прайс.Родитель.Наименование.НайтиПоНаименованию("Корзина")=0 Тогда
14 FN
 
08.09.11
17:07
(13) ставить пометку на удаления и скидывать в другой каталог!
В обработках проверка на Прайс.ПометкаУдаления()=0
15 въезжаю в 1с
 
08.09.11
17:09
(14) так и думал . . .
как пользователей приучить ставить пометку? поделитесь опытом в области управления людьми )
16 FN
 
08.09.11
17:11
(15) не надо их приучать. просто инструкцию по формированию прайса, где описать как и что должно быть в базе заведено.
Пару раз получат из 1С вместо прайса набор букв - сами исправятся.
17 FN
 
08.09.11
17:13
(16)+ хотя тут возможны варианты. В любом случае за правильное хранение информации должны нести отвественность люди, которые ее вносят.
18 въезжаю в 1с
 
08.09.11
17:15
еще раз спасибо всем большое!
19 въезжаю в 1с
 
08.09.11
17:34
(14)
Если Прайс.ЭтоГруппа () = 0 ИЛИ Прайс.ПометкаУдаления() <<?>>= 1 Тогда
{Q:\IT\WISHI\TRADE\EXTFORMS\PRNFORMS\NCI_FILE_DBF.ERT(27)}: Неправильное использование арифметической или строковой операции

как то так
20 въезжаю в 1с
 
08.09.11
17:35
если =0 тоже самое :)
21 въезжаю в 1с
 
08.09.11
17:39
Если (Прайс.ЭтоГруппа () = 0) ИЛИ (Прайс.ПометкаУдаления() = 0) Тогда

но все равно попадают позиции которые помечены на удаление.
22 Arseny
 
08.09.11
17:40
Может на и надо заменить?
23 Arseny
 
08.09.11
17:43
Прошу прощения, чушь сморозил
Если Прайс.ЭтоГруппа()+Прайс.ПометкаУдаления() = 0 Тогда
24 въезжаю в 1с
 
08.09.11
17:46
(22) Вы правы.
работают оба ваши варианта
буду признателен чтоб рассказали в двух словах как тут работают И ИЛИ +
25 Mikeware
 
08.09.11
17:48
(24) В школу!!!!!!!!!!!!
26 въезжаю в 1с
 
08.09.11
17:55
(25) Изречение: Только тот имеет право критиковать, у кого в сердце есть желание помочь (с)

Я изучаю 1С с понедельника :) не успел еще все выучить :)
27 Mikeware
 
08.09.11
18:00
(26) "и" и "или", а также "+" - это материал средней школы
28 въезжаю в 1с
 
09.09.11
09:50
я так понимаю что И это надо чтоб оба условия удовлетворяли
ИЛИ чтоб одно из

а в тему + да ХЗ тока если сложить правое и левое значение :)

но это из SQL
29 FN
 
09.09.11
10:51
(28) все правильно
30 1Сергей
 
09.09.11
11:09
(19)
Если (Прайс.ЭтоГруппа () = 0) ИЛИ (Прайс.ПометкаУдаления() = 1) Тогда
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой