Имя: Пароль:
1C
1С v8
Не записывается регистр накопления
0 Norbertano
 
15.08.12
13:19
Добрый день. Создал регистр накопления "График платежей", не происходит движения по этому регистру для документа "РеализацияТоваровИУслуг". Если создать движение с помощью конструктора, движение происходит, но удаляется предыдущий код процедуры "Обработка Проведения". Если добавить код в существующий, движения не происходят.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре;
   Перем ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам;
   Перем ДеревоПолейЗапросаПоШапке;

       Движения.ГрафикПлатежей.Очистить();
   Движение = Движения.ГрафикПлатежей.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
   Движение.Период = Дата;
   Движение.ДокументПродажи = Ссылка;
   Движение.ДатаПлатежа = Итог;
   Движение.Контрагент = Контрагент;
   Движение.СуммаПлатежа = СуммаДокумента;

КонецПроцедуры

Сделал по-другому, но в таком виде движения происходят по каждому товару из табличной части, мне это не нужно,а если комментирую строку
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам,ТаблицаДвижений);
таблица ТаблицаДвижений почему-то пустая
НаборДвижений = Движения.ГрафикПлатежей;
   ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();
   // Заполним таблицу движений.
   ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам,ТаблицаДвижений);

   ТаблицаДвижений.ЗаполнитьЗначения(Дата,   "Период");
   //ТаблицаДвижений.ЗаполнитьЗначения(Ссылка, "Регистратор");
  // ТаблицаДвижений.ЗаполнитьЗначения(Истина, "Активность");
   //ТаблицаДвижений.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход, "ВидДвижения");
   ТаблицаДвижений.ЗаполнитьЗначения(Контрагент, "Контрагент");
   ТаблицаДвижений.ЗаполнитьЗначения(Итог, "ДатаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(СуммаДокумента, "СуммаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(Ссылка,"ДокументПродажи");
   
   
   Если ТаблицаДвижений.Количество() = 0 Тогда
   ф=0; // проверка, что ТаблицаДвижений пустая    
   КонецЕсли;    

   НаборДвижений.мПериод            = Дата;
   НаборДвижений.мТаблицаДвижений   = ТаблицаДвижений;

       
   Если Не Отказ Тогда
   НаборДвижений.ВыполнитьДвижения();
   КонецЕсли;
1 DrShad
 
15.08.12
13:20
а где записать()
2 Norbertano
 
15.08.12
13:21
записать() ведь уже давно не используется при обработке проведения
3 DrShad
 
15.08.12
13:22
(2) а что используется для записи движений?
4 napagokc
 
15.08.12
13:22
Может надо
Движения.ГрафикПлатежей.Записывать = Истина;
?
5 Norbertano
 
15.08.12
13:26
Движения.ГрафикПлатежей.Записывать = Истина;
результата не дает
(3)
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре;
   Перем ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам;
   Перем ДеревоПолейЗапросаПоШапке;

       Движения.ГрафикПлатежей.Очистить();
   Движение = Движения.ГрафикПлатежей.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
   Движение.Период = Дата;
   Движение.ДокументПродажи = Ссылка;
   Движение.ДатаПлатежа = Итог;
   Движение.Контрагент = Контрагент;
   Движение.СуммаПлатежа = СуммаДокумента;

КонецПроцедуры

Идут движения без метода Записать(), код из конструктора
Ни в одном модуле конфигурации в процедуре "ОбработкаПроведения" его не нашел
6 DrShad
 
15.08.12
13:27
я тебе больше скажу что сейчас модно уже не движениями писать, а целыми наборами, при чем на протяжении всей обработки проведения пихать их в структуру и затем все вместе записывать
7 napagokc
 
15.08.12
13:29
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре;
   Перем ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам;
   Перем ДеревоПолейЗапросаПоШапке;

   Движения.ГрафикПлатежей.Записывать = Истина;
   Движения.ГрафикПлатежей.Очистить();
   Движение = Движения.ГрафикПлатежей.Добавить();
   //...

КонецПроцедуры

Неужели не пашет? О_о
8 Norbertano
 
15.08.12
13:37
(6) Я видел структуру, и с удовольствием бы туда пристроил свой регистр, но знаний не хватает
В принципе, сильно ли влияет на производительность лишние записи по каждому товару? Если нет, как в запросе отсеять лишние записи
например для

Запрос = Новый Запрос;
Запрос.Текст = "
|              ВЫБРАТЬ
|    ГрафикПлатежей.ДокументПродажи,
|    ГрафикПлатежей.Контрагент,
|    ГрафикПлатежей.ДатаПлатежа,
|    ГрафикПлатежей.СуммаПлатежа
|ИЗ
|    РегистрНакопления.ГрафикПлатежей КАК ГрафикПлатежей";
РезультатЗапроса = Запрос.Выполнить();

получаю лишние записи по количеству товара
Счет на товары и услуги 2 от 13.08.2012 15:40:12 ЧП "Комфорт"    14.08.2012    649,03
Счет на товары и услуги 2 от 13.08.2012 15:40:12 ЧП "Комфорт"    14.08.2012    649,03
Счет на товары и услуги 2 от 13.08.2012 15:40:12 ЧП "Комфорт"    14.08.2012    649,03
Счет на товары и услуги 3 от 13.08.2012 ЧП "Мастерок" 14.08.201 543,09
Счет на товары и услуги 3 от 13.08.2012 ЧП "Мастерок" 14.08.201 543,09
9 BigShmax
 
15.08.12
13:40
а можно  я вклинюсь чтобы не создавать ветку с одинаковым топиком.   чет тоже поттупливаю  над записю  регистра остатков.
в обработке есть ссылка и есть ТаблицаЗначений  нужно записать   движение регистр наколпления.  регсит р простейшиий но что то не получается.

   Движение = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
   Движение.Отбор.Регистратор.Установить(Ссылка);
   Для Каждого Строка из ТЗ Цикл
       движение.ДобавитьРасход();
       Движение.Регистратор = Ссылка;
       Движение.Период = Ссылка.Дата;
       Движение.Номенклатура = Строка.Номенклатура;
       Движение.Количество = Строка.Количество;
   КонецЦикла;    
   Движение.Записать();
10 DrShad
 
15.08.12
13:43
(9) что это?
11 Norbertano
 
15.08.12
13:46
(9) я не против,если это принесет результат в решении моей проблемы.
12 BigShmax
 
15.08.12
14:18
(10)   мда  это бред  я неправ  , ужас как не прав, лошара микантара
13 DrShad
 
15.08.12
14:19
(12) я сдержался
14 BigShmax
 
15.08.12
14:21
(13)  спасибо за сдерджанность :-)   все уже работает :-)  давайте ТС  поможем попробуем
15 DrShad
 
15.08.12
14:22
уже все ему помогли
16 Norbertano
 
15.08.12
14:24
(15) Да,Роман, вот разбираюсь с набором движений, спасибо
Может подскажете, как в запросе отсеять лишние записи (6)
17 DrShad
 
15.08.12
14:26
условием вестимо
18 Norbertano
 
15.08.12
14:27
Это будет корректно?
|ГДЕ
|    ГрафикПлатежей.НомерСтроки = &НомерСтроки";
Запрос.УстановитьПараметр("НомерСтроки",1);     //Число
РезультатЗапроса = Запрос.Выполнить();
19 DrShad
 
15.08.12
14:28
нет.
20 Norbertano
 
15.08.12
14:30
(19) Подскажите, как корректно?
21 DrShad
 
15.08.12
14:31
(20) сформулируй вопрос нормально
22 Norbertano
 
15.08.12
14:37
Единственный рабочий вариант на данный момент - запись происходит, если использую
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам,ТаблицаДвижений);
Но тогда происходит запись по каждой строке товара из табличной части ТаблицаПоТоварам

В итоге при использовании запроса, получаю строку ровно столько раз, сколько строк в табличной части документа "Реализация товаров и услуг", как в (8)
23 DrShad
 
15.08.12
14:39
(22) ну так собери в таблицу для движений то что тебе нужно
24 Norbertano
 
15.08.12
14:43
Собираю то, что нужно, она почему-то пустая, поэтому и нет движений
Делаю простую проверку
Если ТаблицаДвижений.Количество() = 0 Тогда
   ф=0; // проверка, что ТаблицаДвижений пустая    

КонецЕсли;
25 Norbertano
 
15.08.12
15:01
НаборДвижений = Движения.ГрафикПлатежей;
   ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();
   // Заполним таблицу движений.
   
   ТаблицаДвижений.ЗаполнитьЗначения(Дата,   "Период");
   ТаблицаДвижений.ЗаполнитьЗначения(Ссылка, "Регистратор");
   ТаблицаДвижений.ЗаполнитьЗначения(Истина, "Активность");
   ТаблицаДвижений.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход, "ВидДвижения");

   ТаблицаДвижений.ЗаполнитьЗначения(Контрагент, "Контрагент");
   ТаблицаДвижений.ЗаполнитьЗначения(Итог, "ДатаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(СуммаДокумента, "СуммаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(Ссылка,"ДокументПродажи");
   
   
   Если ТаблицаДвижений.Количество() = 0 Тогда
   ф=0; // проверка, что ТаблицаДвижений пустая    

   КонецЕсли;    

   НаборДвижений.мПериод            = Дата;
   НаборДвижений.мТаблицаДвижений   = ТаблицаДвижений;
26 DrShad
 
15.08.12
15:02
что за бред ты постишь?
27 Norbertano
 
15.08.12
15:03
После заполнения ТаблицаДвижений пустая, не могу понять почему, если использовать
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам,ТаблицаДвижений);  
ТаблицаДвижений заполнена
28 DrShad
 
15.08.12
15:04
долго тебе еще изучать как проводить доки
29 Norbertano
 
15.08.12
15:05
Согласен. На помощь гуру расчитывать не приходится
30 DrShad
 
15.08.12
15:07
по всей ветке у тебя жуткая каша из разных кусков кода
31 Norbertano
 
15.08.12
15:08
Может у меня и каша, через каждый пост приходится детально описывать Вам, хотя все описано в первых двух постах
32 DrShad
 
15.08.12
15:13
(37) в (7) что тебя не устроило?
33 Norbertano
 
15.08.12
15:14
Тем, что не происходит движения по регистру
34 DrShad
 
15.08.12
15:15
(33) не звезди
35 Norbertano
 
15.08.12
15:20
Зуб даю, можете зайти в Team Viewer и посмотреть
  Движения.ГрафикПлатежей.Записывать = Истина;
   Движения.ГрафикПлатежей.Очистить();
   Движение = Движения.ГрафикПлатежей.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
   Движение.Период = Дата;
   Движение.ДокументПродажи = Ссылка;
   Движение.ДатаПлатежа = Итог;
   Движение.Контрагент = Контрагент;
   Движение.СуммаПлатежа = СуммаДокумента;
36 DrShad
 
15.08.12
15:23
свойства регистра в студию
37 Norbertano
 
15.08.12
15:26
Из конфигуратора? Как их посмотреть?
38 DrShad
 
15.08.12
15:31
только после окончания обработки проведения, т.е. у уже проведенных доков
39 Norbertano
 
15.08.12
15:57
"Свойства регистра после окончания обработки проведения", объясните, каким образом предоставить Вам эту информацию?
40 DrShad
 
15.08.12
16:11
когда в движениях записывать устанавливаешь в Истину, то посмотреть их сможешь только после проведения
41 Norbertano
 
15.08.12
17:56
Ради эксперимента создал ТаблицаЗначений, заполнил ее теми же значениями, что  и ТаблицаДвижений. Используя процедуру ОбщегоЗначения.ЗагрузитьВТаблицуЗначений(ТаблицаИсточник,ТаблицаПриемник) заполнил ТаблицаДвижений
Почему ТаблицаДвижений иначе пустая?

ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаЗначения, ТаблицаДвижений );
   
   ТаблицаДвижений.ЗаполнитьЗначения(Дата,   "Период");
   ТаблицаДвижений.ЗаполнитьЗначения(Ссылка, "Регистратор");
   ТаблицаДвижений.ЗаполнитьЗначения(Истина, "Активность");
   ТаблицаДвижений.ЗаполнитьЗначения(ВидДвиженияНакопления.Приход, "ВидДвижения");
   ТаблицаДвижений.ЗаполнитьЗначения(Контрагент, "Контрагент");
   ТаблицаДвижений.ЗаполнитьЗначения(Итог, "ДатаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(-СуммаДокумента, "СуммаПлатежа");
   ТаблицаДвижений.ЗаполнитьЗначения(Ссылка,"ДокументПродажи");
   
   НаборДвижений.мПериод            = Дата;
   НаборДвижений.мТаблицаДвижений   = ТаблицаДвижений;

Если Не Отказ Тогда
   НаборДвижений.ВыполнитьДвижения();
   КонецЕсли;

42 Norbertano
 
16.08.12
11:18
Из-за чего может не заполняться таблица значений ТаблицаДвижений?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn