Имя: Пароль:
1C
1С v8
Контроль остатков в регистре накопления
,
0 Nolan
 
24.03.15
16:49
Вот в чем суть: При проведении документы "Поступление товаров" и "Реализация товаров" формируют проводки по регистру накопления "Остатки" (это работает). Потом, при списании если у склада установлен флаг "Контроль остатков" то документ не должен проводиться , если количество списания больше чем остатков номенклатуры на данном складе.
Как выполнить данное задание???
55 Nolan
 
25.03.15
12:51
(51) не знаю, нужно попробовать поставить до и посмотреть что будет.
А почему он мне сумму не хочет выводить, я вписываю
Движение.Сумма = Выборка.Сумма   а он пишет поле не найдено(
56 Nolan
 
25.03.15
12:54
у документа в ТЧ есть реквизит сумма, у регистра тоже есть ресурс сумма
57 GROOVY
 
25.03.15
12:56
(54)  Совсем не лишнее. Блокировать от чтения остатки то надо.
58 fisher
 
25.03.15
13:00
(57) А разве до конца транзакции будет не исключительная блокировка СУБД для строчки таблицы итогов по комбинации измерений? По идее не получится прочитать.
59 GROOVY
 
25.03.15
13:06
На запись будет, если нет разделения итогов, на чтение нет.
60 Nolan
 
25.03.15
13:21
(55) (56) , кто-нибудь знает почему такое может быть?
61 GROOVY
 
25.03.15
13:23
(60) В запросе нет суммы. Ну и собственно сумму из документа в регистр писать, в данном случае, глупо. Это же не себестоимость, а сумма продажи.
62 DmitriyDI
 
25.03.15
13:23
(60) знаем, конечно.
63 Nolan
 
25.03.15
13:30
(61) У меня в документе "Реализация товаров" уже указывается сумма продажи( имеется в виду цена продажи*на количество продажи), чем это не сумма продажи? это ведь и так не себестоимость, себестоимость то из другого документа бралась бы из "Поступления товаров"
64 DmitriyDI
 
25.03.15
13:33
Вот так переделай запрос и будет браться

Запрос.Текст = "ВЫБРАТЬ
    |    РеализацияТовары.Номенклатура,
    |    СУММА(РеализацияТовары.Количество) КАК Количество
    |    СУММА(РеализацияТовары.Сумма) КАК Сумма
    |ПОМЕСТИТЬ ДокТЧ
    |ИЗ
    |    Документ.РеализацияТоваров.Товары КАК РеализацияТовары
    |ГДЕ
    |    РеализацияТовары.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    РеализацияТовары.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ДокТЧ.Номенклатура,
    |    ДокТЧ.Количество,
    |    ДокТЧ.Сумма
    |ИЗ
    |    ДокТЧ КАК ДокТЧ";
65 GROOVY
 
25.03.15
13:33
(63)  А в регистре, что в ресурсе сумма хранится? Плановая сумма продажи, или закупочная стоимость (себестоимость)?
66 DmitriyDI
 
25.03.15
13:33
(64) ток |    СУММА(РеализацияТовары.Количество) КАК Количество, с запятой
67 fisher
 
25.03.15
13:35
(59) Много думал. Не совсем так. На блокировочнике не должно дать прочитать вообще при READ COMMITED в котором работают управляемые блокировки (иначе это было бы "грязное" чтение), а вот на версионнике прочитает старую версию. А это таки косяк с точки зрения проведения. А на новых версиях 1С и с MSSQL работает как с версионником, не говоря уже про postgresql.
Так что ты прав. Не лишнее.
70 Nolan
 
25.03.15
13:50
(66) Спасибо за помощь!!!) Извини может за глупый вопрос, а вот склад, ведь его тоже нет в запросе, а он выдается в регистре. Почему так? Почему именно для " номенклатуры" "суммы" и "количества" нужно проделывать данную операцию?
71 GROOVY
 
25.03.15
13:54
Мда, не удержусь.

Купили ложку за 100р, продали за 302р. В регистре что останется? минус 202р? Это что за цифра? Нафига она в регистре?

(70) Склад доступен в контексте объекта.
72 Nolan
 
25.03.15
13:54
(65) В регистре плановая сумма продажи
73 Nolan
 
25.03.15
13:57
(71) я так понимаю, что у меня в регистре пишется просто сумма продажи. купил ложку за 100р записался приход сумма 100, продал ложку за 300 записался расход сумма 300р. Так не правильно делать???
74 fisher
 
25.03.15
13:58
(70) Тебе оказали медвежью услугу. Записывать в регистр остатков сумму из документа продажи - глупость и ересь. Если это себестоимость, то она должна приходоваться в регистр из документа поступления товаров а при продаже - считываться из регистра и списываться пропорционально количеству.
(72) Тогда всё равно остаток по ней никогда не будет сходиться. Подобные показатели учитывают на оборотных регистрах.
75 fisher
 
25.03.15
14:00
Хотя... Если нужно при продаже фиксировать факт расхождения с плановой суммой продажи, тогда может иметь смысл. Но на практике подобная задача с подобной реализацией - тоже ересь какая-то.
76 DmitriyDI
 
25.03.15
14:02
(74) неужели вы думаете что он пишет, какую-то рабочую базу, для какой-то фирмы)?
77 Nolan
 
25.03.15
14:03
(74) да это логично. ну вот смотри на примере. я купил  3   ложки по 100р, у меня в регистре пишет приход сумма"300р".
а потом я продал 2 по 200р, тогда что у меня должно отображаться в регистре в расходе???
78 Nolan
 
25.03.15
14:03
(76) хочется научиться работать правильно.
79 Garykom
 
гуру
25.03.15
14:05
Не, не...у вас все неправильно...надо давать проводить документ, потом проверять остатки на минуса...если есть "-" в регистре то отменять проведение...

ЗЫ баян "не мой"
80 Garykom
 
гуру
25.03.15
14:05
(79)+ почему баян кривой была ветка уже в поиск
81 DmitriyDI
 
25.03.15
14:06
(77) вот именно в регистре расхода продаж, а ты пишешь в регистр остатки, который отвечает за что? за оперативный контроль остатков.
82 fisher
 
25.03.15
14:08
(76) Здравый смысл хоть какой-то должен быть даже в тестовых задачах.
(77) Классически это решается так. В регистре остатков товаров учитывается его себестоимость. Т.е. спишется 2 шт. по 100 (по закупочной). А сумма продажи отображается по отдельному оборотному регистру продаж (там же можно сразу отразить и обороты по списываемой себестоимости). В итоге ты всегда видишь по чем продал и по чем ты купил то, что продал. Т.е. сколько заработал. Если ты спишешь 2 по 200 в итоге у тебя на остатке будет 1 по -100. И как ты при следующей продаже поймешь, сколько заработал?
83 GROOVY
 
25.03.15
14:09
(78)  Ты сначала подумай зачем в регистре сумма? Ну вот нафига она там?!
84 Nolan
 
25.03.15
14:16
(82) все понятно) да тут конечно столько тонкостей) вообщем теперь мне это нужно в коде исправить, чтобы  в при списании мне мне выдавалась сумма по себестоимости)
85 fisher
 
25.03.15
14:18
В промышленных конфигурациях учет и расчет себестоимости гораздо хитрее и сложнее :)
86 Nolan
 
25.03.15
14:19
(85) да понимаю, но тут хотя бы с этим разобраться) а я могу теперь вытащить в своем запросу цену из документа "поступления товаров"?
87 GROOVY
 
25.03.15
14:22
(86)  Я еще раз обращаю внимание на пост (83).
88 Nolan
 
25.03.15
14:25
(87) ну для того чтобы знать сумму списания товаров. так наверное?
89 Nolan
 
25.03.15
14:27
(81) а я могу теперь вытащить в своем запросе цену из документа "поступления товаров"?
90 GROOVY
 
25.03.15
14:29
(88)  А "Количество" - чтобы знать количество списания? Нет.
Сумма, а точнее Стоимость в регистре - это остаток в денежном выражении, равно как Количество - это натуральный остаток.
То бишь смотря на свой склад, владелец может не только увидеть дцать ложек, но и сможет узнать сколько эта куча стоит.

Регистр, любой, хранит 1 показатель. В примере из (0) показатель в регистре - Остаток товаров, он хранится в натуральном и суммовом выражении.
91 fisher
 
25.03.15
14:30
(86) Зачем из документа? А зачем же ты её в регистр писал? И как ты вообще себе это представляешь?
Парень, меня смущает не то, что ты новичок. А то, что думать у тебя плохо получается. И работать с информацией тоже.
И то и другое плохо сочетается с программированием. Хочется верить, что у тебя получится перестроиться.
92 GROOVY
 
25.03.15
14:30
(89)  Купили ложку первого числа по 100р, и второвго числа по 500р. Продаем ложку третьего числа, какая стоимость должна списаться?
93 GROOVY
 
25.03.15
14:31
(91)  Вот! Я было уже в других терминах написал, хорошо что не запостил.
94 Nolan
 
25.03.15
14:41
(90) Хорошо, допустим так. Я купил 5ть ложек по 100р. Потом продал 3. Регистре должно отобразиться у меня КОЛИЧЕСТВО 3 ЦЕНА 300 , так получается????
95 Nolan
 
25.03.15
14:42
(91) все получится)))
96 Nolan
 
25.03.15
14:43
(92) наверное 300. Так???
97 Nolan
 
25.03.15
14:45
(90) (94) Или должно быть КОЛИЧЕСТВО 2 ЦЕНА 300 ???? как правильно???
98 GROOVY
 
25.03.15
14:45
(96) Ну зависит от того как себестоимость считается (а я знаю минимум 5 способов), ответ наводит на мысль, что себестоимость рассчитывается по среднему, и что из документов поступления в таком случае вытаскивать собираешься?
99 GROOVY
 
25.03.15
14:47
Слово "Цена" тут совсем не в тему, только сбивает с толку.

Себестоимость 1 штуки 300р, если считать по-среднему.
100 Nolan
 
25.03.15
14:49
(99) Хорошо. Пусть так
Я купил 5ть ложек по 100р. Потом продал 3. Тогда в регистре должно отобразиться
КОЛИЧЕСТВО 3 СУММА 300    ИЛИ
КОЛИЧЕСТВО 2 СУММА 200

как правильно?
101 GROOVY
 
25.03.15
14:50
"Отобразиться" - это что? Движения или остатки?
102 Nolan
 
25.03.15
14:53
(101) Ну когда я провожу документ "Реализация товаров" это что? остатки же наверное
103 GROOVY
 
25.03.15
14:55
(102)  Нет. Это движения. Почитайте книжки, посмотрите бесплатные мультики, самый короткий: http://v8.1c.ru/metod/videotutorial/000000022.html

У Вас каша в голове.
104 fisher
 
25.03.15
14:58
<рука-лицо>
В движениях регистра при списании "отобразится" 3 шт на сумму 300. Ты же три продаешь, вот три и списываешь. Если после этого прочитать остатки регистра, то на них "отобразится" 2 шт  на сумму 200.
ЗЫ. Слушай, ну заставь себя поискать и поработать с методическими материалами. Если уже работал, то постарайся при этом больше думать. Складывается ощущение, что ты для себя вынес и понял чуть менее чем ничего.
105 Nolan
 
25.03.15
15:02
(104) ну вот, теперь понятно))) А как прочитать остатки регистра?
106 fisher
 
25.03.15
15:05
Соответствующим способом.
В книжках про это много. И даже в картинках. И даже видео люди трудились, снимали.
107 fisher
 
25.03.15
15:07
Тебе даже было лень разобрать код, который ты скопипастил? Или это какое-то изощренное издевательство?
108 Nolan
 
25.03.15
15:10
(107) да нет, книги тоже смотрю. Может ещё не дошел до того момента. а вот это задание нужно было выполнить, поэтому наверное и такие вопросы возникают. Хотя по Радченко регистры накопления уже прочитал, может упустил... Ладно буду перечитывать)
109 fisher
 
25.03.15
15:11
Может, ты просто жертва курсов скорочтения?
110 GROOVY
 
25.03.15
15:15
(109)  Не похоже, похоже на "обучение по примерам" без разъяснений.
111 Nolan
 
25.03.15
15:15
(109) Радченко стр 208 "Регистры накопления" , там вообще ничего про это не рассказано. Даже поля СУММА нет. Только что глянул!
А как прочитать остатки регистра? ответь если не трудно)
112 iceman2112
 
25.03.15
15:15
Практическое пособие разработчика
113 Nolan
 
25.03.15
15:16
(110) похоже на "на выполни задание" выполняй как хочешь!
114 1976vas
 
25.03.15
15:16
(108) Проверим. Зачем в регистрах накопления нужны регистры оборотов, если в регистре остатки есть и обороты?
115 Nolan
 
25.03.15
15:18
(114) ну получается нужно создать ещё один регистр, только ВИД РЕГИСТРА будет "Обороты"?
116 1976vas
 
25.03.15
15:20
(115) Не получится у тебя без теории, методом тыка, ничему научиться.
117 Nolan
 
25.03.15
15:23
(116) Ладно это все будет. За 3 недели все выучить не получится. Теперь мне нужно что у меня в поле сумма выдавалась цена себестоимости*количество.
118 Nolan
 
25.03.15
15:27
Когда научусь программировать и получу работу, скину вам друзья по 1000 рублей за помощь)))
119 1976vas
 
25.03.15
15:28
(117) А где у тебя себестоимость хранится?
120 1976vas
 
25.03.15
15:36
Себестоимость рассчитывается, а исходя из чего?
121 fisher
 
25.03.15
15:38
(118) Я прям прослезился. Когда-то точно также во франч устраивался, с абсолютного нуля. И тоже было три недели на решение сертификационных задач.
Но т.к. я смог вытянуть самостоятельно, то от меня сочувствия не жди. В современных условиях при наличии интернета, доступности методических материалов и бездны готовых решений - это тупая проверка на адекватность и сообразительность.
122 fisher
 
25.03.15
15:42
Или две недели? Давно это было. Помню отпуск специально брал на старой работе...
123 Nolan
 
25.03.15
16:02
(119) себестоимость я сам вписываю, в документ "Поступление товаров". а потом когда его провожу эта цена отображается в регистре накопления "Остатки".
124 Nolan
 
25.03.15
16:03
(122) сейчас тоже во франче работаешь?
125 Nolan
 
25.03.15
16:13
(120) в документ "Поступление товаров" в реквизите табличной части "Цена" -это и есть моя себестоимость
126 fisher
 
25.03.15
16:13
(124) Нет.
127 Nolan
 
25.03.15
16:14
(126) почему, франч не самое лучшее место для работы?
128 fisher
 
25.03.15
16:20
(127) Так уж сложилось. Но свой франч - тоже неплохо.
129 mTema32
 
25.03.15
16:20
(127)ооооох. Вот так вброс)
130 Nolan
 
25.03.15
16:25
(128) ясно. ну подскажи как мне сделать, чтобы у меня в поле сумма выдавалась цена себестоимости*количество, где цена себестоимости берется из документ "Поступление товаров" в реквизите табличной части "Цена"?
131 GROOVY
 
25.03.15
16:29
(130)  Продавать по себестоимости будешь?
132 Nolan
 
25.03.15
16:36
(131) нет! при проведении документа "Реализация товаров" в регистре накопления "Остатки" в поле "СУММА" должно записываться цена себестоимости*количество, где цена себестоимости берется из документ "Поступление товаров" в реквизите табличной части "Цена"
133 GROOVY
 
25.03.15
16:37
Не, все, я сдаюсь. Это *издец.
134 1976vas
 
25.03.15
16:38
(132) Ты просто пишешь, что в Поле Сумма, в этом поле у тебя ЦенаПродажи, наверное.
135 supremum
 
25.03.15
16:40
(132) Почем нынче фунт себестоимости?
136 Nolan
 
25.03.15
16:44
(134) В Поле Сумма у меня должно быть цена покупки*количество! Это регистр "Остатки". Это не регистр "Обороты"
137 Nolan
 
25.03.15
16:45
(134) В этом поле у меня должна быть цена списания может так понятней будет!
138 1976vas
 
25.03.15
16:49
(137) Получай себестоимость из регистра, потом при проведении документа списывай количество и сумму. И урок 11 посмотри Павла Чистова.
139 fisher
 
25.03.15
16:50
(137) Мне кажется, что ты растрачиваешь таланты в неправильном направлении. Плюнь на 1С. Потом еще спасибо скажешь.
140 Nolan
 
25.03.15
16:52
(138) это мне нужно новый запрос делать и использовать соединение, чтобы получить себестоимость из регистра?
141 1976vas
 
25.03.15
16:54
(140) посмотри Урок, там за час все разъясняется. Уже бы давно сделал ))
142 GROOVY
 
25.03.15
16:55
(141)  Нет, он будет неделю на форуме все выяснять.
143 1976vas
 
25.03.15
16:55
(142) Ну общения, наверное, хочется ))
144 Nolan
 
25.03.15
16:55
(141) ладно посмотрю! просто в библиотеке ютуб не работает(
145 1976vas
 
25.03.15
16:57
(144) Ищи кафэшку какую-нибудь )
146 fisher
 
25.03.15
16:57
Потому что тишина должна быть в библиотеке!
147 Nolan
 
25.03.15
16:58
(145) хорошо, всем спасибо за советы! я пошел тогда)
148 fisher
 
25.03.15
17:01
Только ненадолго! Мы будем волноваться!
149 Nolan
 
25.03.15
22:56
В общем наконец доделал. Спасибо Чистову) воттак теперь выглядит код

Процедура ОбработкаПроведения(Отказ, Режим)
        
    Движения.Остатки.Записывать=Истина;
    
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТокТаЧ.Номенклатура,
        |    МАКСИМУМ(ТокТаЧ.Количество) КАК Количество,
        |    СУММА(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
        |    МАКСИМУМ(ЕСТЬNULL(Остатки.СуммаОстаток, 0)) КАК СуммаОстаток
        |ИЗ
        |    Документ.РеализацияТоваров.Товары КАК ТокТаЧ
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки(&МоментВремени, ) КАК Остатки
        |        ПО ТокТаЧ.Номенклатура = Остатки.Номенклатура
        |ГДЕ
        |    ТокТаЧ.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ТокТаЧ.Номенклатура";
    
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени() );
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не хватает товара""" + Выборка.Номенклатура + """, из необходимых " + Выборка.Количество + " в наличии осталось только " + Выборка.КоличествоОстаток;
        Сообщение.Сообщить();
        
        Отказ=Истина;
        Движения.Остатки.Записывать=Ложь;    
    КонецЕсли;
    
    Если Отказ Тогда
        Продолжить;
    КонецЕсли;
        
        Движение = Движения.Остатки.Добавить();        
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;    
        Движение.Период = Дата;    
        Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = Выборка.Количество;
        Движение.Сумма = Выборка.Количество/Выборка.КоличествоОстаток*Выборка.СуммаОстаток;
        
    КонецЦикла;
    
КонецПроцедуры

вопрос как теперь здесь осуществлять контроль по тому есть ли в складе Контроль по остаткам. Вот этот код подойдет? и куда именно его вписать?
Если не Склад.КонтрольОстатков тогда    Возврат;
150 Nolan
 
25.03.15
23:48
попробовал так
|ГДЕ      
|      ТокТаЧ.Ссылка = &Ссылка     И  ТокТаЧ.Ссылка.Склад.КонтрольОстатков

документ проводиться, только когда его провожу нет проводки в регистре(
151 DmitriyDI
 
26.03.15
10:01
(150)  Если Выборка.Количество > Выборка.КоличествоОстаток и Склад.КонтролироватьОстатки Тогда , можно тут но тогда пользователь не узнает что провел в минус, не будет сообщения.

можно так

Отказ=Склад.КонтролироватьОстатки;
Движения.Остатки.Записывать=не Склад.КонтролироватьОстатки;
152 sFAQer
 
26.03.15
11:29
Блин, ОП ты не мог до пятницы подождать?
153 fisher
 
26.03.15
11:33
Не мешайте ТС изучать язык запросов методом научного тыка.
154 alex_shkut
 
26.03.15
12:11
Возьми коробку с кубиками и поиграйся в поступление и списание.
Намек ;) коробка - это твой регистр.
Или лучше со спичками, их можно на части ломать :).
Может так понимание придет?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn