Имя: Пароль:
1C
 
1с 7.7 регистр сведений или аналог
0 Coldboy
 
20.03.15
11:37
Здравствуйте. Задача такова, для элемента справочника склад, нужно сделать свои цены. В итоге, чтобы в документах, где есть склад, при выборе номенклатуры выходила цена для данного склада. Как это в 7.7 организуется ? Регистр сведений я что-то не нашел или его аналог.
1 PuhUfa
 
20.03.15
11:38
Справочник
2 VladZ
 
20.03.15
12:10
(0) Посмотри, как организовано хранение данных по ценам в ТИС. И сделай так же, но "привяжись" к складу.
3 VladZ
 
20.03.15
12:13
Не знаю, что у тебя за конфа. Для ТИС я бы делал так: в справочник "Склады" добавил реквизит "Тип цен". Основной механизм ценообразование не трогал.  Доработал нужные документы: добавил алгоритм получения цены по типу цены, указанного у склада.

Можно "замутить" сложный алгоритм: если у контрагента указан тип цены - ставим его. Не указан - по цене склада.
4 Heckfy
 
20.03.15
12:14
(0) Кури объект Периодический.
5 Бертыш
 
20.03.15
12:15
Я регистр сведений делал на регистре накопления
6 Бертыш
 
20.03.15
12:21
Там только надо учитывать ограничения регистров на 7.7 —
Регистр может быть только подчинённый регистратору и дата движений может быть только датой регистратора.
7 Злопчинский
 
20.03.15
12:32
Приизмегениисклада
Сделать процедуру
Адресоваться в аналогичную глобальную
В ней в докуент в реквизит типцен подставлять типцен из карточки склада и запускать типовую процедуру пересчета табчасти документа


Все
8 Coldboy
 
20.03.15
12:33
Конфа самописная
9 Злопчинский
 
20.03.15
12:33
А вообще похоже на прострел ноги когда она чесалась
Непонятно что автору надо решить
Пока автор написал как он хочет решить
А что именно хз
Возможно пытается гвоздь в рельсу забивать
10 Злопчинский
 
20.03.15
12:34
(8)  сообщество не возражает
11 Coldboy
 
20.03.15
12:34
(9) я написал, что нужно решить, чтобы при выборе номенклатуры в документе с выбранным складом, его цена на нее проставлялась и все.
13 Coldboy
 
20.03.15
12:35
и где хранить и установить эти цены, и как их оперативно забирать.
14 Spyke
 
20.03.15
12:38
(13) Ответ в (3)
15 silent person
 
20.03.15
12:38
(13) справочник "Цены" подчиненный справочнику "Номенклатура". С реквизитами "Склад" и периодицеским реквизитом "Цена"
16 Spyke
 
20.03.15
12:39
+14 Хранить как сейчас в справочнике, конечно еслу у тебя цена не реквизи спр номенклатура. А то знаю таких деятелей
Которые и цену и штрихкод хранят как реквизит, а потом добавляют цена1,цена2 и т.д.
17 Coldboy
 
20.03.15
12:41
Значит, нужно создать справочник цены правильно? Там реквизиты Номенклатура, цена, типы цены или просто цена даже пойдет, история не так важна.

Далее сделать привязка складов по типу цен верно?
18 VladZ
 
20.03.15
12:44
(13) ТИС смотрел?

Есть справочник "ЦеныНоменклатуры" (названия мог наврать, под рукой нету конфы). Подчинен номенклатуре. Здесь есть периодический реквизит Цена.

Для контрагентов сделано так: в карточке договора указан тип цены, который  должен "работать" для контрагента.

Я предлагаю сделать по аналогии. В карточку склада добавить тип цен. И допилить документы, в которых тебе нужно получать цены для склада.
19 VladZ
 
20.03.15
12:45
+18 В глобальнике есть функции получения цен.
Там что-то типа "ВернутьЦену" или "ПолучитьЦену".
20 Новый участник
 
20.03.15
12:45
(3), (7) Хорошо придумано.
(15) Много периодики раздумают и замедляют базу.
21 Coldboy
 
20.03.15
12:47
(7) немного не понял.
22 Coldboy
 
20.03.15
12:49
(7) зачем при изменение, если выбирают склад сначала, а потом будут номенклатуру добавлять.

Пока вариант (17) пока так пробую
23 VladZ
 
20.03.15
13:07
(17) Скопируй весь функционал с ТиСа. Прям один в один.
24 VladZ
 
20.03.15
13:08
+23 Можно будет готовые функции из ТиС использовать.

А если наваяешь свою структуру - под нее нужно писать свои функции. Смысл?
25 Lazy Stranger
 
20.03.15
13:14
(24) функция там всего одна - глВернутьЦену()
(0) можно сделать по аналогии со старинными конфами раруса/астора: оборотный регистр накопления с измерениями по которым нужно хранить цену, функция поиска цены ищет последнее движение регистра с фильтром по этим измерениям
26 Lazy Stranger
 
20.03.15
13:17
хотя можно не париться и просто тип цены к складу привязать, так же как в ТиС они к контрагентам (точнее договорам) привязаны
27 Coldboy
 
20.03.15
13:27
Да нет справочника тип цен, там 4 справочника. Самописная конфа. все нужно самому писать. Простой вариант, что я предложил же будет работать?
28 Spyke
 
20.03.15
13:31
(27) Поиск будет долгий, если пользоваться штатными средствами
29 VladZ
 
20.03.15
13:37
(17) Делай справочник "Цены", который будет подчинен номенклатуре. Реквизиты: Тип цены и цена. В идеале, цена - периодический реквизит. Не хочешь - не делай. (но все равно потом придешь к периодике).
30 Spyke
 
20.03.15
13:40
(27) Слушай (29) дело говорит, технология годами проверена , полет нормальный
31 Lazy Stranger
 
20.03.15
13:43
(29) +1, можно, конечно, вместо ТипаЦен в справочнике Цены реквизит "склад" сделать, но как только появятся 2 склада с одинаковыми ценами станет понятно, что лучше всё же для типов цен отдельный справочник сделать
32 Coldboy
 
20.03.15
13:45
(31) уже 10 складов, так что придется тип цен делать, и 3 типа цен уже.
(29) а заполнять, переодический справочник как? есть норма инструкция по работе с ним?
33 Spyke
 
20.03.15
13:46
(32) УстановитьРеквизитСправочника()
34 Spyke
 
20.03.15
13:47
УстановитьРеквизитСправочника(<?>,,,,,,);
Синтаксис:
УстановитьРеквизитСправочника(<ЭлементСправочника>,<НазваниеРеквизита>,<Значение>,<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>)
Назначение:
Записать значение периодического реквизита справочника с привязкой к проведению документа.
Параметры:
<ЭлементСправочника> - элемент справочника, в который будет запись;
<НазваниеРеквизита> - название периодического реквизита справочника;
<Значение> - новое значение периодического реквизита;
<ДатаУстановки> - дата установки нового значения периодического реквизита. Дата установки имеет смысл только для не оперативных документов.
<ИмяТипа> - необязательный параметр. Строковое выражение - название  типа данных (или Вид субконто);
<Длина> - необязательный параметр. Число - длина числового или строкового значения;
<Точность> - необязательный параметр. Число знаков после десятичной точки.
Замечание:
Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения периодического реквизита справочника, имеющего неопределенный тип.
Замечание:
Метод доступен только в Модуле документа в предопределенной процедуре ОбработкаПроведения.
35 Coldboy
 
20.03.15
13:55
(34) а если еще по определнному типу цен ?
36 Coldboy
 
20.03.15
14:29
а реально сделать поиск в справочнике по нескольким реквизитам в 7.7?
тип такого
СпрСотр.НайтиПоРеквизиту("Рек1,Рек2","Знач1,Знач2");
Как это вообще делается?
37 Spyke
 
20.03.15
14:38
(36) Запросом
38 Spyke
 
20.03.15
14:42
(35) сначало нужно записать или найти элемент справочника а
потом уже
УстановитьРеквизитСправочника
А справочник уже имеет реквизит типцен
39 Coldboy
 
20.03.15
14:52
(37) можно пример запроса?
40 Spyke
 
20.03.15
14:54
(39)     ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Номенклатура    = Справочник.Номенклатура.ТекущийЭлемент;      
        |Группировка Номенклатура Без Групп;";
    ТекстЗапроса = ТекстЗапроса + "Условие (Номенклатура.ВидНоменклатуры в Вид);";
41 Coldboy
 
20.03.15
14:59
(40) извините, я 7.7 запросы не так понимаю, а где мой вариант, отбор по 2 позициям.
Мой справочник Цены, есть реквизиты ТипЦен, и номенклатура.
по ним сделать и срез, и получить цену.
42 Spyke
 
20.03.15
15:05
(41) СпрСотр.НайтиПоРеквизиту("Рек1,Рек2","Знач1,Знач2");
|Сотр    = Справочник.Сотрудники.ТекущийЭлемент;      
         |Группировка Сотр Без Групп;";
    ТекстЗапроса = ТекстЗапроса + "Условие (Сотр.Рек1 в ВыбРек1);";
ТекстЗапроса = ТекстЗапроса + "Условие (Сотр.Рек2 в ВыбРек2);";
43 Spyke
 
20.03.15
15:13
+42 Выбрек1 = Знач1
    ВыбРек2 = Знач2
44 Coldboy
 
20.03.15
15:15
(43) а как условие установить в запрос по параметру?
45 Spyke
 
20.03.15
15:17
Условие (Сотр.Рек1 в ВыбРек1)
А выбрек1 и будет параметр отбора
46 Coldboy
 
20.03.15
15:18
(45) как все просто
47 Spyke
 
20.03.15
15:23
(46) Раньше с 7/7 не работал?
48 Злопчинский
 
20.03.15
15:25
49 Злопчинский
 
20.03.15
15:27
50 Злопчинский
 
20.03.15
15:27
можно еще быстрее - если вбабахать параметризированный запрос (типа так называется?)
51 Spyke
 
20.03.15
15:33
(46) Но все же для хранения цен лучшая реалиция в ТиС как в (27)
52 Coldboy
 
20.03.15
15:49
(51) нет не работал. не спорю лучшая, но мне не нужен сильно сложный механизм в моих то сроках. А как мне, если вам не сложно, данные этого запрос получить и обойти ?

Пока Запрос.Выполнить(ТекстЗапроса)=1 Цикл
а дальше?
КонецЦикла;
53 Coldboy
 
20.03.15
16:01
Номенклатура1 = Наименование;
    ТипЦен1 = Точка.ТипЦен;
        Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ПолучитьЦену)
    |Элемент = Справочник.Цены.ТекущийЭлемент;
    |Группировка Элемент без упорядочивания без групп;
    |Условие(Элемент.Номенклатура = Номенклатура1);
    |Условие(Элемент.ТипЦен = ТипЦен1);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Элемент
        Сообщить(Элемент);
    КонецЦикла;
54 Coldboy
 
20.03.15
16:01
Вот что накидал, не получается элемент увидеть.
55 Coldboy
 
20.03.15
16:02
ругается ошибки дает.
56 Spyke
 
20.03.15
16:03
Пока Запрос.Группировка(1) = 1 Цикл
замени
Пока  Запрос.Группировка() = 1 Цикл
57 Spyke
 
20.03.15
16:04
Номенклатура1 = Наименование
наименование - это ссылка на элемент спр номенклатура?
58 Lazy Stranger
 
20.03.15
16:05
скопировать из ТиС 2 справочника и 2 функции глобального модуля можно было минут за 10, а тема уже почти весь день обсуждается :)
59 Coldboy
 
20.03.15
16:06
(57) тип ссылки.
60 Coldboy
 
20.03.15
16:07
Пока Запрос.Группировка() = 1 Цикл
        // Заполнение полей Элемент

        Сообщить(Элемент.Цена);
    КонецЦикла;

На элемент ругается типа нет такого.
Да наименование
61 Spyke
 
20.03.15
16:10
А цена у тепя переодический реквизит?
62 Spyke
 
20.03.15
16:10
Если да то так не пойдет
63 Coldboy
 
20.03.15
16:11
(62) не переодический, просто реквизит типа число.
64 Builder
 
20.03.15
16:14
Ну вы блин даете....

Сообщить(Запрос.Элемент);
65 Spyke
 
20.03.15
16:17
(64) Проглядел
66 Coldboy
 
20.03.15
16:20
(64) да я так и сделал, но проблема, в том что он выдает еще пустой элемент в конце, почему так?
67 Coldboy
 
20.03.15
16:21
выборка происходит двух элементов, нужный мне и потом за ним пустой, как это исправить ?
68 Coldboy
 
20.03.15
16:24
Номенклатура1 = Наименование;
    ТипЦен1 = Точка.ТипЦен;
        Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ПолучитьЦену)
    |Элемент = Справочник.Цены.ТекущийЭлемент;
    |Группировка Элемент без упорядочивания без групп;
    |Условие(Элемент.Номенклатура = Номенклатура1);
    |Условие(Элемент.ТипЦен = ТипЦен1);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    //    Сообщить("пусто");
        Возврат;
    КонецЕсли;
    Пока Запрос.Группировка() = 1 Цикл
        // Заполнение полей Элемент  
        Если Запрос.Элемент = получитьпустоезначение("справочник.Цены") Тогда
        //    Сообщить("Пустой");
            Продолжить;
        КонецЕсли;
     //   Сообщить(Запрос.Элемент.Цена);
         Цена = Запрос.Элемент.Цена;
    КонецЦикла;
69 Coldboy
 
20.03.15
16:25
вот в принципе.
хотя как добавить, чтобы помеченные на удаление не брать?
70 Spyke
 
20.03.15
16:32
ПометкаУдаления()
Синтаксис:
ПометкаУдаления()
Назначение:
Прочитать флаг пометки удаления элемента справочника.
Возвращает: 1 - если на элементе справочника стоит пометка удаления; 0 - иначе.
Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
71 Builder
 
20.03.15
16:42
Откройте для себя СП, полезная вещь...

В запрос добавить:
|Обрабатывать НеПомеченныеНаУдаление;

"без упорядочивания" - можно убрать.
72 Spyke
 
20.03.15
16:46
(71) Смотря что не помеченное на удаление ему нужно если элемент справочника цены то (71) взлетит, а если элемент справочника номенклатура то (70)
73 Spyke
 
20.03.15
16:47
Но ИМХО склоняюсь к второму
74 Coldboy
 
20.03.15
16:57
Дикое спасибо всем за помощь.
75 VladZ
 
20.03.15
21:05
Вот чудак человек...  Я тебе дело предлагаю - а ты свое гнешь... Ну, дело хозяйское.

Если бы ты "стянул" структуру ТИСа - можно было "стянуть" другие обработки под эту структуру.

Простой пример: вот попросят тебя прайс сделать по определенному типу цены - будешь свою обработку писать?

Или скажут, что цены на одном складе должны быть привязаны к себестоимости, цены на другом - на 10 процентов больше себестоимости, а цены на третьем - на 6% больше, чем на втором. Опять будешь обработку писать?

Дело хозяйское, дерзай.
76 Coldboy
 
20.03.15
21:30
(75) спасибо, но такого не будет ))) Я надеюсь с 7.7 в скором времени этой соскочим ))
77 Злопчинский
 
21.03.15
02:43
(76) То есть ты думаешь что герыч пойдет легче марихуанны..? ;-)
78 hhhh
 
21.03.15
06:57
если самописка, то быстрее переписать под восьмерку. Раз ТС с 7.7 не дружит.
79 VladZ
 
21.03.15
08:07
(76) "Я надеюсь с 7.7 в скором времени этой соскочим ))"  Хотели бы соскочить - давно бы уже соскочили.
80 Мимохожий Однако
 
21.03.15
08:17
(76)Быстрее вноси изменения. Когда база рухнет - переёдёте на восьмёрку.