Имя: Пароль:
1C
1С v8
движение без проведения
,
0 Borteg
 
27.11.12
13:43
Добрый день. В платежное поручение были добавлены движения по регистру.
Платежному поручению проведение запрещено.
Движения добавлены в процедуру ПередЗаписью. Возникает след проблема: если нажимать на кнопку запись несколько раз до движения добавляются много раз, а не заменяются как этого избежать?
1 rbcvg
 
27.11.12
13:44
затирать старые записи?
2 Borteg
 
27.11.12
13:44
в процедуре передзаписью есть добавил код
Если наборзаписейрегистра.количество()>0 тогда
           Набор= РегистрыНакопления.ОстаткиПоСчетам.СоздатьНаборЗаписей();
           Набор.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
           Набор.Записать();
       конецесли;
ничего не поменялось
3 Maxus43
 
27.11.12
13:44
1. найти того кто это сделал.
2. прострелить коленку.
3. переделать правилно.
4 Borteg
 
27.11.12
13:44
да затирать
5 Borteg
 
27.11.12
13:45
а правильно как будет?
6 rbcvg
 
27.11.12
13:45
в любой типовой навалом примеров
7 samozvanec
 
27.11.12
13:46
Набор.Очистить()?
8 Maxus43
 
27.11.12
13:47
(5) зависит от того что надо, цель
9 samozvanec
 
27.11.12
13:47
(7) набор тут, кстати, будет

Движения.МойНабор;
10 Maxus43
 
27.11.12
13:48
зачем вобще в ПриЗаписи навешано? при проведении движения делать надо, нефиг быдлокодить
11 Borteg
 
27.11.12
13:49
документ платежное поручение не имеет свойство проведения,видать поэтому туда и пихали
12 Maxus43
 
27.11.12
13:52
(11) ладно, опустим опусы про изврат...
а это весь код в (2)? тут записи не добавляются, они как раз очищаются
13 Borteg
 
27.11.12
13:53
ну это то что я добавлял а код Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
               |    ОстаткиПоСчетам.Номенклатура КАК Номенклатура,
               |    ОстаткиПоСчетам.Склад КАК Склад,
               |    ОстаткиПоСчетам.ЭтапРабот КАК ЭтапРабот,
               |    ОстаткиПоСчетам.Количество КАК Количество,
               |    ОстаткиПоСчетам.Цена КАК Цена,
               |    ОстаткиПоСчетам.Сумма КАК Сумма,
               |    ОстаткиПоСчетамОстатки.КоличествоОстаток КАК КоличествоОстаток,
               |    ОстаткиПоСчетамОстатки.СуммаОстаток КАК СуммаОстаток,
               |    ОстаткиПоСчетам.Контрагент  как контрагент
               |ИЗ
               |    РегистрНакопления.ОстаткиПоСчетам КАК ОстаткиПоСчетам
               |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиПоСчетам.Остатки КАК ОстаткиПоСчетамОстатки
               |        ПО ОстаткиПоСчетам.Номенклатура = ОстаткиПоСчетамОстатки.Номенклатура
               |ГДЕ
               |    ОстаткиПоСчетам.ВидДвижения = &ВидДвижения
               |    И ОстаткиПоСчетам.Регистратор = &Регистратор
               |    И ОстаткиПоСчетамОстатки.Счет = &Счет
               |ИТОГИ
               |    СУММА(Сумма)
               |ПО
               |    ОстаткиПоСчетам.Регистратор";
               
               Запрос.УстановитьПараметр("Счет", ОснованиеПолученный);
               Запрос.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Приход);
               Запрос.УстановитьПараметр("Регистратор", ОснованиеПолученный);
               Результат=Запрос.Выполнить().Выбрать();
               Результат.Следующий();
               СуммаПоДокументу=Результат.Сумма;
               Сообщить(СуммаПоДокументу);
                Если СуммаПоДокументу<> Неопределено тогда
               Коэф = СуммаДокумента / СуммаПоДокументу;
               Пока Результат.Следующий() цикл    
                   Движение = Движения.ОстаткиПоСчетам.Добавить();
                   Движение.Период = Дата;
                   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                   Движение.Номенклатура = Результат.Номенклатура;
                   Движение.Количество = Мин(Результат.Количество * Коэф,результат.количествоОстаток);
                   Движение.Цена = Результат.Цена;
                   Движение.Сумма = окр(Мин(Результат.Количество*Коэф*Результат.Цена,Результат.СуммаОстаток),2);
                   Движение.Склад = Результат.Склад;
                   Движение.ЭтапРабот = Результат.ЭтапРабот;
                   Движение.Счет=ОснованиеПолученный;
                   Движение.Контрагент=Результат.контрагент;
14 Eugene_life
 
27.11.12
13:56
(0) Автор, прошу прощения.. Твой год рождения не 1986? Мне просто для статистики.
15 Maxus43
 
27.11.12
13:56
Движения.ОстаткиПоСчетам.Прочитать();
Движения.ОстаткиПоСчетам.Очистить();
               Пока Результат.Следующий() цикл    
                   Движение = Движения.ОстаткиПоСчетам.Добавить();
16 samozvanec
 
27.11.12
13:57
(15) зачем читать?
17 Maxus43
 
27.11.12
13:59
(16) на всякий. не уверен в данном случае, извращённо как то всё
18 Borteg
 
27.11.12
14:39
вообще посмотрел на это все и думаю лучше переделать. Если платежному поручению поставлю разрешение проведения ничего же криминального не случится?)
19 Maxus43
 
27.11.12
14:41
(18) Давайте ходить налево, а не направо, мы же туда же придём?

Если меняешь логику - надо всё смотреть. Кто то уже изменил очень жёстко, не просто так
20 Borteg
 
27.11.12
14:44
просто я  на копии сделал разрешение проведения и все так легко и красиво стало работать. как убираю начинается хрень какаято. вот и думаю что было бы легче если проведение было бы. Просто не представляю ока на что это может повлиять. хотя вроде в платежном поручении там ничего важного нету.
21 Maxus43
 
27.11.12
14:46
(20) конечно нет ничо важного, всего лишь Деньги, но это же мелочь
22 Шапокляк
 
27.11.12
14:53
(20) У вас несколько странный механизм формирования проведения, т.к. результат запроса никак не зависит от момента документа. В результате перепроведение абсолютно любого из платежных поручений будет менять остатки по регистру.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.