|
Запись в регистр накопления | ☑ | ||
---|---|---|---|---|
0
Vladislava-smile
17.11.17
✎
05:02
|
Не могу понять почему не срабатывает запись в регистр ... Подскажите, пжлст ...
НаборДвижений = Движения.РасчетыСКонтрагентами; ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки(); СуммаВзаиморасчетов = СуммаВзаиморасчетовДляЗакрытия + МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту( СуммаДокумента, СтруктураШапкиДокумента.ВалютаДокумента, СтруктураШапкиДокумента.ВалютаВзаиморасчетов, СтруктураШапкиДокумента.КурсДокумента, КурсВзаиморасчетов, СтруктураШапкиДокумента.КратностьДокумента, КратностьВзаиморасчетов); СуммаУпр = СуммаУпрДляЗакрытия + МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту( СуммаДокумента, СтруктураШапкиДокумента.ВалютаДокумента, СтруктураШапкиДокумента.ВалютаУправленческогоУчета, СтруктураШапкиДокумента.КурсДокумента, СтруктураШапкиДокумента.КурсВалютыУправленческогоУчета, СтруктураШапкиДокумента.КратностьДокумента, СтруктураШапкиДокумента.КратностьВалютыУправленческогоУчета); Если СуммаВзаиморасчетов <> 0 ИЛИ СуммаУпр <> 0 Тогда СтрокаДвижений = ТаблицаДвижений.Добавить(); СтрокаДвижений.РасчетыВозврат = Перечисления.РасчетыВозврат.Расчеты; СтрокаДвижений.ДоговорКонтрагента = СтруктураШапкиДокумента.ДоговорКонтрагента; СтрокаДвижений.Контрагент = СтруктураШапкиДокумента.Контрагент; СтрокаДвижений.Организация = СтруктураШапкиДокумента.Организация; СтрокаДвижений.Сделка = ЗаказПокупателя; СтрокаДвижений.СуммаВзаиморасчетов = СуммаВзаиморасчетов; СтрокаДвижений.СуммаУпр = СуммаУпр; НаборДвижений.мПериод = Дата; НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; Движения.РасчетыСКонтрагентами.ВыполнитьПриход(); КонецЕсли; |
|||
1
Vladislava-smile
17.11.17
✎
05:03
|
В таблицу мТаблицаДвижений попадает все, что нужно, тип документа добавлен в регистратор. Что еще?
|
|||
2
VladZ
17.11.17
✎
06:03
|
НаборДвижений.ДобавитьДвижение();
|
|||
3
VladZ
17.11.17
✎
06:04
|
Движения.РасчетыСКонтрагентами.ВыполнитьПриход() - записывает движения регистра. А в самом регистре еще нет данных. Туда либо сам добавляешь, либо через .ДобавитьДвижения (данные подтянутся из мТаблицаДвижений)
|
|||
4
VladZ
17.11.17
✎
06:06
|
см. модуль набора записей.
|
|||
5
1dvd
17.11.17
✎
06:27
|
Это какая внеземная магия. ЗЫ И это, остальные реквизиты движения кто будет заполнять? |
|||
6
Vladislava-smile
17.11.17
✎
07:53
|
(5) Это код, взятый уже из работающей конфы. Только там пашет, а здесь зараза нет.
|
|||
7
Vladislava-smile
17.11.17
✎
07:54
|
(5) все остальное заполняется в модуле регистра:
Процедура ВыполнитьПриход() Экспорт ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Приход); КонецПроцедуры // ВыполнитьПриход() |
|||
8
Vladislava-smile
17.11.17
✎
07:54
|
(5)
Процедура ВыполнитьДвижениеПоРегистру(НаборДвижений, ВидДвижения = Неопределено, ПустыеКолонкиСоставногоТипа = Неопределено, ЗаполнитьПериод = истина) Экспорт ТаблицаДвижений = НаборДвижений.мТаблицаДвижений; Если ТаблицаДвижений.Количество() = 0 Тогда Возврат; КонецЕсли; Если ПустыеКолонкиСоставногоТипа = Неопределено Тогда ПустыеКолонкиСоставногоТипа = Новый Структура; КонецЕсли; МетаРег = НаборДвижений.Метаданные(); ИзмеренияСостТипа = Новый Структура; Для Каждого МетаИзм Из МетаРег.Измерения Цикл Если (МетаИзм.Тип.Типы().Количество() > 1) И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаИзм.Имя)) Тогда ИзмеренияСостТипа.Вставить(МетаИзм.Имя); КонецЕсли; КонецЦикла; Для Каждого МетаРек Из МетаРег.Реквизиты Цикл Если (МетаРек.Тип.Типы().Количество() > 1) И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРек.Имя)) Тогда ИзмеренияСостТипа.Вставить(МетаРек.Имя); КонецЕсли; КонецЦикла; Для Каждого МетаРес Из МетаРег.Ресурсы Цикл Если (МетаРес.Тип.Типы().Количество() > 1) И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРес.Имя)) Тогда ИзмеренияСостТипа.Вставить(МетаРес.Имя); КонецЕсли; КонецЦикла; // Откопируем остальные колонки (структура таблиц совпадает). ПерваяКолонка = Истина; МассивСтрок = Новый Массив(ТаблицаДвижений.Количество()); ЕстьПериод = НЕ ТаблицаДвижений.Колонки.Найти("Период") = Неопределено; Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл ИмяКолонки = Колонка.Имя; Если ИмяКолонки <> "Период" И ИмяКолонки <> "Активность" И ИмяКолонки <> "НомерСтроки" И ИмяКолонки <> "" И ?(ИмяКолонки = "ВидДвижения", ВидДвижения = Неопределено, Истина) И ИмяКолонки <> "МоментВремени" Тогда Если ИзмеренияСостТипа.Свойство(ИмяКолонки) Тогда ФлагКолонкиСостТипа = Истина; Иначе ФлагКолонкиСостТипа = Ложь; КонецЕсли; Индекс = 0; Для каждого СтрокаТаблицы Из ТаблицаДвижений Цикл Если ПерваяКолонка Тогда Если ВидДвижения = ВидДвиженияНакопления.Приход Тогда СтрокаДвижения = НаборДвижений.ДобавитьПриход(); ИначеЕсли ВидДвижения = ВидДвиженияНакопления.Расход Тогда СтрокаДвижения = НаборДвижений.ДобавитьРасход(); Иначе СтрокаДвижения = НаборДвижений.Добавить(); // Для оборотных регистров КонецЕсли; МассивСтрок[Индекс] = СтрокаДвижения; СтрокаДвижения.Период = НаборДвижений.мПериод; Если не ЗаполнитьПериод и ЕстьПериод И НЕ СтрокаТаблицы.Период = '00010101' Тогда СтрокаДвижения.Период = СтрокаТаблицы.Период; Иначе СтрокаДвижения.Период = НаборДвижений.мПериод; КонецЕсли; Иначе СтрокаДвижения = МассивСтрок[Индекс]; КонецЕсли; Индекс = Индекс + 1; ЗначКолонки = СтрокаТаблицы[ИмяКолонки]; Если ФлагКолонкиСостТипа Тогда Очистить = Ложь; Если ТипЗнч(ЗначКолонки) = Тип("Число")Тогда Если ЗначКолонки = 0 Тогда Очистить = Истина; КонецЕсли; ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Строка") Тогда Если ЗначКолонки = "" Тогда Очистить = Истина; КонецЕсли; ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Дата") Тогда Если ЗначКолонки = '00010101000000' Тогда Очистить = Истина; КонецЕсли; ИначеЕсли ЗначКолонки = Неопределено Или ЗначКолонки.Пустая() Тогда Очистить = Истина; КонецЕсли; Если Очистить Тогда СтрокаДвижения[ИмяКолонки] = Неопределено; Иначе СтрокаДвижения[ИмяКолонки] = ЗначКолонки; КонецЕсли; Иначе СтрокаДвижения[ИмяКолонки] = ЗначКолонки; КонецЕсли; КонецЦикла; ПерваяКолонка = Ложь; КонецЕсли; КонецЦикла; КонецПроцедуры // ВыполнитьДвижениеПоРегистру() |
|||
9
1dvd
17.11.17
✎
07:55
|
(7) и почему я этого в (0) не увидел...
|
|||
10
Vladislava-smile
17.11.17
✎
08:36
|
(9) Движения.РасчетыСКонтрагентами.ВыполнитьПриход();
|
|||
11
youalex
17.11.17
✎
09:01
|
(7) Проверьте в отладчике, например, ЭтотОбъект.Записывать
|
|||
12
Vladislava-smile
17.11.17
✎
09:39
|
(11) Правы абсолютно, вставила:
// Выполняет приход по регистру. // // Параметры: // Нет. // Процедура ВыполнитьПриход() Экспорт ЭтотОбъект.Записывать = Истина; ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Приход); КонецПроцедуры // ВыполнитьПриход() И все заполняется теперь. А где это определяется записывать или нет? Просто есть документ Заказ покупателя в этой конфе, который вызывает абсолютно те же функции и делает движения, а я добавила новый документ Изменения заказа покупателя, вызываю там те же функции и нет движений... Как так? Не понимаю. |
|||
13
Vladislava-smile
17.11.17
✎
09:51
|
Ладно, загадка, спасибо всем огромное, особенно youalex )
|
|||
14
Мимохожий Однако
17.11.17
✎
09:54
|
(12) Убедись, что новый документ является регистратором этого регистра
|
|||
15
youalex
17.11.17
✎
09:57
|
(12) Читайте СП)
Записывать (Write) ... свойства метаданного документа "Запись движений при проведении" в Конфигураторе выставлено в "Записывать выбранные". Вангую, что в старом документе Запись движений при проведении = ЗаписыватьМодифицированные, а в новом - ЗаписыватьВыбранные (для новых документов встает по умолчанию) |
|||
16
Buster007
17.11.17
✎
10:09
|
(14) думаешь у нее могли сформироваться записи в регистре, если бы документ не был бы регистратором этого регистра?
|
|||
17
Мимохожий Однако
17.11.17
✎
10:22
|
(16) У неё не формируются
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |