Имя: Пароль:
1C
1С v8
подскажите как правильно сделать движение по регистру накопления
0 LivingStar
 
08.04.13
06:22
не могу добавить запись в регистр накопления
|
Процедура ЗаписьВРегистры(Номенклатура, Сумма, Контрагент, Должность, Организация, Закупки, РасчетыСКонтрагентами, ВзаиморасчетыСКонтрагентами)
   // *** РН.ЗАКУПКИ ***
   НоваяЗапись                            = Движения.Закупки.ДобавитьПриход();
   НоваяЗапись.Номенклатура               = Номенклатура + " " + Должность;
   НоваяЗапись.СтатусПартии               = Перечисления.СтатусыПартийТоваров.Купленный;
1 LivingStar
 
08.04.13
06:23
пишет метод объекта не обнаружен
2 Aleksey
 
08.04.13
06:24
у тебя что Номенклатура строка? Ты в этом уверен?
3 Wobland
 
08.04.13
06:25
(1) внимательно посмотри, у кого не обнаружено и предложи свою версию происходящего
4 LivingStar
 
08.04.13
06:28
(3) Да вот давно не сталкивался с проведением по регистрам накопления. Думаю как надо, может вначале нужно прочитать запись из регистра?
|
Движения.Закупки.ДобавитьПриход();
|
Закупки.ДобавитьПриход();
|
и так не идет и так не идет!
5 LivingStar
 
08.04.13
06:33
(2) да это ошибка, не продумал этот момент
6 Wobland
 
08.04.13
06:37
может, из этого куска что-то для себя вынесешь

       док.РучнаяКорректировка=Истина;
       НЗ=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       НЗ.Отбор.Регистратор.Установить(док.Ссылка);
       НЗ.Прочитать();
       
       Движение=НЗ.Добавить();
       Движение.Регистратор=док.Ссылка;
       Движение.Активность=Истина;
       Движение.СчетДт=ПланыСчетов.Хозрасчетный.ТоварыПереданныеНаКомиссию;
       Движение.Период=док.Дата;
       Движение.Организация=док.Организация;
       НЗ.Записать();
       док.Записать(РежимЗаписиДокумента.Проведение);
7 Любопытная
 
08.04.13
06:38
(4)

НКД_УУ = Движения.НачисленныйКупонныйДоходУправленческий;
   
    Для Каждого СтрокаТаблицы Из ТаблицаУУ Цикл
       
        Если НЕ СтрокаТаблицы.УУ тогда Продолжить; КонецЕсли;

       
        Движение    = НКД_УУ.ДобавитьПриход();
       
        Движение.Период                    = Дата;
        Движение.ДоговорДУ                    = ДоговорДУ;
        Движение.ВариантУчетнойПолитики    = ВариантУчетнойПолитики;
       
        Движение.Облигация            = СтрокаТаблицы.Облигация;
        Движение.КупонныйПериод    = СтрокаТаблицы.КупонныйПериод;
        Движение.Валюта            = СтрокаТаблицы.ВалютаНоминальнойСтоимости;
       
        Движение.Сумма            = СтрокаТаблицы.Сумма;
        Движение.ВалютнаяСумма    = СтрокаТаблицы.ВалютнаяСумма;
        Движение.Комментарий      = СтрокаТаблицы.Комментарий;
       
    КонецЦикла;
   
    НКД_УУ.Записывать = Истина;
   
Какова вероятность того, что РН Закупки не отмечен в свойствах документа на закладке Движения?
8 BICO
 
08.04.13
06:47
(0) Проверь, что данный вид документа может двигать данный регистр.
9 LivingStar
 
08.04.13
06:51
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.НачислениеЗаработнойПлаты.МодульОбъекта(45)}: Метод объекта не обнаружен (ДобавитьПриход)
|
   НаборЗаписей = РегистрыНакопления.Закупки.СоздатьНаборЗаписей();
   НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
   НоваяЗапись                            = НаборЗаписей.ДобавитьПриход();
|
(6)(4) Спасибо, сейчас попробую!
10 LivingStar
 
08.04.13
06:51
(4) да не отмечен!!!! (
11 LivingStar
 
08.04.13
06:51
(8) ок!
12 LivingStar
 
08.04.13
07:07
ругается
|
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.НачислениеЗаработнойПлаты.МодульОбъекта(43)}: Метод объекта не обнаружен (ДобавитьПриход)
|
Хотя передаю вроде все верно!
|
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   Оклад           = Справочники.Номенклатура.НайтиПоНаименованию("Оклад");    
   Инвентаризация = Справочники.Номенклатура.НайтиПоНаименованию("Инвентаризация");    
   Штраф          = Справочники.Номенклатура.НайтиПоНаименованию("Штраф");
   Бонус          = Справочники.Номенклатура.НайтиПоНаименованию("Бонус");
   // 2013_04_05 LivingStar ->
   // РН.Закупки
   Набор_1 = РегистрыНакопления.Закупки.СоздатьНаборЗаписей();
   Набор_1.Отбор.Регистратор.Установить(Ссылка);
   // РН.РасчетыСКонтрагентами
   Набор_2 = РегистрыНакопления.РасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_2.Отбор.Регистратор.Установить(Ссылка);
   // РН.ВзаиморасчетыСКонтрагентами
   Набор_3 = РегистрыНакопления.ВзаиморасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_3.Отбор.Регистратор.Установить(Ссылка);
   //Если ЭтоНовый Тогда
       Набор_1.Прочитать();
       Набор_2.Прочитать();
       Набор_3.Прочитать();
   //Иначе
   //КонецЕсли;
   Для каждого СтрокаТч Из ТабличнаяЧасть1 Цикл
       Если ЗначениеЗаполнено(СтрокаТч.Оклад) Тогда
       // ### ОКЛАД ###
           ЗаписьВРегистры(Оклад, СтрокаТч.Оклад, СтрокаТч.Сотрудник, СтрокаТч.Должность, Организация, Набор_1, Набор_2, Набор_3);
       ИначеЕсли ЗначениеЗаполнено(СтрокаТч.Штраф) Тогда
|
13 LivingStar
 
08.04.13
07:08
(12+)

Процедура ЗаписьВРегистры(Номенклатура, Сумма, Контрагент, Должность, Организация, Закупки, РасчетыСКонтрагентами, ВзаиморасчетыСКонтрагентами)
   // *** РН.ЗАКУПКИ ***
   НоваяЗапись                            = Закупки.ДобавитьПриход();
   НоваяЗапись.Номенклатура               = Номенклатура;
   НоваяЗапись.СтатусПартии               = Перечисления.СтатусыП
14 NWsFF
 
08.04.13
07:09
У тебя регистр походу оборотный, а ты с ним работаешь как с регистром остатков
15 Любопытная
 
08.04.13
07:10
Хрень какая
16 LivingStar
 
08.04.13
07:10
(14) Добавить() срабатывает, ДобавитьПриход() нет !
17 NWsFF
 
08.04.13
07:10
НоваяЗапись                            = Закупки.Добавить();
НоваяЗапись.Номенклатура               = Номенклатура;
НоваяЗапись.СтатусПартии               = Перечисления.СтатусыП

так работает? :)
18 NWsFF
 
08.04.13
07:11
(16) Зайди в регистр и поставь во вкладке "Основные" вид регистра Остатки
19 LivingStar
 
08.04.13
07:13
(18) регистр то нельзя править!!!
то есть так писать в оборотный регистр
|
НоваяЗапись                            = Закупки.Добавить();
|
а так в регистр остатки?
|
НоваяЗапись                            = Закупки.ДобавитьПриход();
|
20 NWsFF
 
08.04.13
07:13
совершенно верно
21 NWsFF
 
08.04.13
07:15
У регистра оборотов нет понятия приход/расход, он не в общем случае не расходуется, а копит обороты.
22 LivingStar
 
08.04.13
07:17
(21) ясно!
А вот так пишу в регистр остатков, что не так? почему то ошибка не выходит и записи нет!
|
   НоваяЗапись                            = Движения.РасчетыСКонтрагентами.ДобавитьПриход();
   НоваяЗапись.ДоговорКонтрагента         = Контрагент.ОсновнойДоговорКонтрагента;
   НоваяЗапись.Организация                = Организация;
   НоваяЗапись.Контрагент                 = Контрагент;
   НоваяЗапись.СуммаВзаиморасчетов        = Сумма;
   НоваяЗапись.СуммаУпр                   = Сумма;
   //НоваяЗапись.Сделка                     =
   //НоваяЗапись.РасчетыВозврат             =
   РасчетыСКонтрагентами.Записать();
23 Chai Nic
 
08.04.13
07:21
(22) Вы же новую запись не записали..
24 LivingStar
 
08.04.13
07:21
(23) понял! спасибо!
25 NWsFF
 
08.04.13
07:22
РасчетыСКонтрагентами.Записать(); > Движения.РасчетыСКонтрагентами.Записывать = Истина;
(23) Такое чувство, что в теме троллят :), та м не запись а набор записей
26 LivingStar
 
08.04.13
07:23
(25) не заметил
27 LivingStar
 
08.04.13
07:31
Ругается, метод не обнаружен Записать
|
   НоваяЗапись                            = Закупки.Добавить();
   НоваяЗапись.Период                     = Дата;
   НоваяЗапись.Номенклатура               = Номенклатура;
   НоваяЗапись.СтатусПартии               = Перечисления.СтатусыПартийТоваров.Купленный;
   НоваяЗапись.ДоговорКонтрагента         = Контрагент.ОсновнойДоговорКонтрагента;
   НоваяЗапись.Организация                = Организация;
   НоваяЗапись.Контрагент                 = Контрагент;
   НоваяЗапись.Количество                 = 1;
   НоваяЗапись.Стоимость                  = Сумма;
   //НоваяЗапись.ХарактеристикаНоменклатуры =
   //НоваяЗапись.ЗаказПоставщику            =
   //НоваяЗапись.ДокументЗакупки            =
   //НоваяЗапись.Проект                     =
   //НоваяЗапись.Подразделение              =
   //НоваяЗапись.НДС                        =
   //Движения.Закупки.Записывать = Истина;
   НоваяЗапись.Записать();
28 LivingStar
 
08.04.13
07:32
(23) pf t` pfgbcs dslftncz jib,rf
29 LivingStar
 
08.04.13
07:32
(23) на её записи выдается ошибка
30 Wobland
 
08.04.13
07:32
(27) а можно ли записывать записи? тварь я дрожащая или набор целиком записвать нужно?
31 LivingStar
 
08.04.13
07:34
(30)
НоваяЗапись.Записать();

исправил на

   Закупки.Записать();

Закупки это набор записей
32 Wobland
 
08.04.13
07:37
поздравлять?
33 LivingStar
 
08.04.13
07:39
Закупки регистр оборотов, Расчеты с контрагентами регистр остатков, почему то проходит по коду записи в регистр закупки, но записи не обнаруживаю самой в регистре !!!

   // *** РН.ЗАКУПКИ ***
   НоваяЗапись                            = Закупки.Добавить();
   НоваяЗапись.Период                     = Дата;
   НоваяЗапись.Номенклатура               = Номенклатура;
   НоваяЗапись.СтатусПартии               = Перечисления.СтатусыПартийТоваров.Купленный;
   НоваяЗапись.ДоговорКонтрагента         = Контрагент.ОсновнойДоговорКонтрагента;
   НоваяЗапись.Организация                = Организация;
   НоваяЗапись.Контрагент                 = Контрагент;
   НоваяЗапись.Количество                 = 1;
   НоваяЗапись.Стоимость                  = Сумма;
   //НоваяЗапись.ХарактеристикаНоменклатуры =
   //НоваяЗапись.ЗаказПоставщику            =
   //НоваяЗапись.ДокументЗакупки            =
   //НоваяЗапись.Проект                     =
   //НоваяЗапись.Подразделение              =
   //НоваяЗапись.НДС                        =
   Движения.Закупки.Записывать = Истина;
   Закупки.Записать();
   //
   // *** РН.РАСЧЕТЫСКОНТРАГЕНТАМИ ***
   НоваяЗапись                            = Движения.РасчетыСКонтрагентами.ДобавитьПриход();
   НоваяЗапись.Период                     = Дата;
   НоваяЗапись.ДоговорКонтрагента         = Контрагент.ОсновнойДоговорКонтрагента;
   НоваяЗапись.Организация                = Организация;
   НоваяЗапись.Контрагент                 = Контрагент;
   НоваяЗапись.СуммаВзаиморасчетов        = Сумма;
   НоваяЗапись.СуммаУпр                   = Сумма;
   //НоваяЗапись.Сделка                     =
   //НоваяЗапись.РасчетыВозврат             =
   Движения.РасчетыСКонтрагентами.Записывать = Истина;
   РасчетыСКонтрагентами.Записать();
   //
34 Wobland
 
08.04.13
07:43
а я вот что обнаруживаю.
раз: НоваяЗапись=Закупки.Добавить();
два: НоваяЗапись=Движения.РасчетыСКонтрагентами.ДобавитьПриход();

надо как-то определиться, движения это или что-то ещё
35 LivingStar
 
08.04.13
07:47
Закупки это регистр остатков
|
   НоваяЗапись                            = Закупки.Добавить();
   НоваяЗапись.Период                     = Дата;
   НоваяЗапись.Номенклатура               = Номенклатура;
   НоваяЗапись.СтатусПартии               = Перечисления.СтатусыПартийТоваров.Купленный;
   НоваяЗапись.ДоговорКонтрагента         = Контрагент.ОсновнойДоговорКонтрагента;
   НоваяЗапись.Организация                = Организация;
   НоваяЗапись.Контрагент                 = Контрагент;
   НоваяЗапись.Количество                 = 1;
   НоваяЗапись.Стоимость                  = Сумма;
   //НоваяЗапись.ХарактеристикаНоменклатуры =
   //НоваяЗапись.ЗаказПоставщику            =
   //НоваяЗапись.ДокументЗакупки            =
   //НоваяЗапись.Проект                     =
   //НоваяЗапись.Подразделение              =
   //НоваяЗапись.НДС                        =
   Движения.Закупки.Записывать = Истина;
   Закупки.Записать();
36 Wobland
 
08.04.13
07:48
>Закупки это регистр остатков
я вижу, что Закупки - это некая коллекция
37 LivingStar
 
08.04.13
07:51
(36) да это набор записей регистра закупки
38 Wobland
 
08.04.13
07:53
а как обнаруживаешь?
39 LivingStar
 
08.04.13
07:53
(38)

   //Движения.Закупки.Записывать = Истина;
   Закупки.Записать();

это помогло, запись появилась
40 LivingStar
 
08.04.13
07:54
(38)
   Набор_1 = РегистрыНакопления.Закупки.СоздатьНаборЗаписей();
   Набор_1.Отбор.Регистратор.Установить(Ссылка);
   // РН.РасчетыСКонтрагентами
   Набор_2 = РегистрыНакопления.РасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_2.Отбор.Регистратор.Установить(Ссылка);
   // РН.ВзаиморасчетыСКонтрагентами
   Набор_3 = РегистрыНакопления.ВзаиморасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_3.Отбор.Регистратор.Установить(Ссылка);
   //Если ЭтоНовый Тогда
       Набор_1.Прочитать();
       Набор_2.Прочитать();
       Набор_3.Прочитать();
   //Иначе
   //КонецЕсли;
   Для каждого СтрокаТч Из ТабличнаяЧасть1 Цикл
       Если ЗначениеЗаполнено(СтрокаТч.Оклад) Тогда
       // ### ОКЛАД ###
           ЗаписьВРегистры(Оклад, СтрокаТч.Оклад, СтрокаТч.Сотрудник, СтрокаТч.Должность, Организация, Набор_1, Набор_2, Набор_3);
       ИначеЕсли ЗначениеЗаполнено(СтрокаТч.Штраф) Тогда
       // ### ШТРАФ ###
41 LivingStar
 
08.04.13
07:56
(38) только при перепроведении документа записи в регистр накопления Закупки (Обороты) накапливаются, как от этого избавиться?
42 Любопытная
 
08.04.13
07:57
(41) Очищать записи перед проведением
43 LivingStar
 
08.04.13
07:58
(42) особенность регистра накопления обороты? делать это перед началом добавления записи?
44 NWsFF
 
08.04.13
07:58
(41) Ты почитай про регистры накопления, уйму времени сэкономишь.
45 Wobland
 
08.04.13
08:02
(42) или не читать после создания
46 LivingStar
 
08.04.13
08:26
(44) работа давит, по ходу дела разбираюсь, конечно почитаю будет момент!
47 LivingStar
 
08.04.13
08:26
(45)

так тогда!

   // РН.Закупки
   Набор_1 = РегистрыНакопления.Закупки.СоздатьНаборЗаписей();
   Набор_1.Отбор.Регистратор.Установить(Ссылка);
   // РН.РасчетыСКонтрагентами
   Набор_2 = РегистрыНакопления.РасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_2.Отбор.Регистратор.Установить(Ссылка);
   // РН.ВзаиморасчетыСКонтрагентами
   Набор_3 = РегистрыНакопления.ВзаиморасчетыСКонтрагентами.СоздатьНаборЗаписей();
   Набор_3.Отбор.Регистратор.Установить(Ссылка);
   Если ЭтоНовый Тогда
       Набор_1.Прочитать();
       Набор_2.Прочитать();
       Набор_3.Прочитать();
   Иначе
   КонецЕсли;
48 Wobland
 
08.04.13
08:31
Если ЭтоНовый Тогда
       Набор_1.Прочитать();
это, конечно, сильно
49 NWsFF
 
08.04.13
08:33
Не создавай наборы записей они  у тебя уже есть.
Набор_1 = РегистрыНакопления.Закупки.СоздатьНаборЗаписей();
Набор_1.Отбор.Регистратор.Установить(Ссылка);
заменить на
Набор_1 = Движения.Закупки;

аналогично и другой регистр. Если у документа не стоит в движениях свойство удалять движения автоматически

то заменить на
Набор_1 = Движения.Закупки;
Набор_1.Очистить();
//.....заполняешь как тебе надо
Движения.Закупки.Записывать = Истина;
50 LivingStar
 
08.04.13
08:45
(49) а где они есть если документ только создан? я же их не создавал?!
51 LivingStar
 
08.04.13
08:46
(49)
|
   //НоваяЗапись.РасчетыВозврат             =
   Движения.РасчетыСКонтрагентами.Записывать = Истина;
   РасчетыСКонтрагентами.Записать();
|
это то есть лишнее?
|
   РасчетыСКонтрагентами.Записать();
52 NWsFF
 
08.04.13
08:47
Да, а наборы записе
53 NWsFF
 
08.04.13
08:47
+наборы записей создал сам документ и даже заботливо туда регистратора присвоил
54 LivingStar
 
08.04.13
08:49
(53) а в смысле удалять движения аквтоматически свойство у документа
55 LivingStar
 
08.04.13
08:49
а вот так верно будет?
|
   Если ЭтоНовый() Тогда
       Набор_1.Прочитать();
       Набор_2.Прочитать();
       Набор_3.Прочитать();
   Иначе
       Набор_1.Очистить();
       Набор_2.Очистить();
       Набор_3.Очистить();
   КонецЕсли;
56 Wobland
 
08.04.13
08:51
(55) я так вижу, тебе читать совсем не нужно. старый набор идёт прахом?
57 Любопытная
 
08.04.13
09:02
(55) Если ЭтоНовый() Тогда
       Набор_1.Прочитать();
       Набор_2.Прочитать();
       Набор_3.Прочитать();
Скажи мне, что ты читаешь, если ЭтоНовый()? У тебя нет никаких записей.
НАпоминает мне того мальчика который меня тестировал на собеседовании и упорно доказывал, что если нет товара на складе, то в запросе будет 0, а не null.
58 NWsFF
 
08.04.13
09:02
При проведении документа  Если ЭтоНовый() Тогда никогда не выполнится, документ уже записан, он уже не новый. Ты перемудриваешь.
(54) Свойства документа -> Движения -> Удаление движений -Ю Выбор из 3 вариантов, не удалять автоматически, удалять автоматически при отмене проведения, удалять автоматически.

Или же очищай наборы сам, только не проверяй новый это или нет очищай по умолчанию
59 LivingStar
 
08.04.13
09:22
Если стоит удалять движения автоматически? то все будет контроллироваться автоматичестки очистка движений?
60 dva1c
 
08.04.13
09:56
(59) Если стоит "удалять автоматически, при отмене проведения", то удалится автоматически.
61 dva1c
 
08.04.13
09:57
+(60) В (58) так-то все рассказали. )
62 scanduta
 
08.04.13
10:00
Че фигней страдаете,... все движения надо делать через "ОбработкуПроведения"