|
Движение есть и его тут же нет | ☑ | ||
---|---|---|---|---|
0
Масянька
24.09.21
✎
15:11
|
День добрый!
Модуль объекта (кусочек): сообщить("0 - " + Движения.ПрослеживаемыеТовары.Количество()); ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(ПараметрыПроведения.ПрослеживаемыеТовары, ПараметрыПроведения.ПрослеживаемыеОперации, ТаблицаРеквизиты, СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения); сообщить("3 - " + Движения.ПрослеживаемыеТовары.Количество()); КонецЕсли; Общий модуль: Процедура СформироватьДвиженияРеализацияТоваров(ТаблицаТовары, ТаблицаОперации, ТаблицаРеквизиты, Движения) Экспорт Если Не ЗначениеЗаполнено(ТаблицаРеквизиты) Тогда Возврат; КонецЕсли; ОбщиеПараметры = ПодготовитьОбщиеПараметры(ТаблицаРеквизиты); Реквизиты = ОбщиеПараметры.Реквизиты[0]; СформироватьДвиженияПрослеживаемыхТоваров(ТаблицаТовары, Реквизиты, Движения, Истина); СформироватьДвиженияОперацииСПрослеживаемымиТоварами(ТаблицаОперации, Реквизиты, Движения); сообщить("2 - " + Движения.ПрослеживаемыеТовары.Количество()); КонецПроцедуры На экране: 0 - 0 2 - 1 3 - 0 Где очищается регистр? Спасибо. |
|||
1
2S
24.09.21
✎
15:11
|
в 2.5
|
|||
2
polosov
24.09.21
✎
15:14
|
СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения - это таки что?
|
|||
3
VladZ
24.09.21
✎
15:16
|
(0) сдается мне, ты отслеживаешь разные вещи.
|
|||
4
Kassern
24.09.21
✎
15:17
|
(2) это издевательства на 1ской))
|
|||
5
VladZ
24.09.21
✎
15:17
|
сообщить("0 - " + Движения.ПрослеживаемыеТовары.Количество());
В "2" у тебя СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения |
|||
6
youalex
24.09.21
✎
15:18
|
коллекции разные же, в процедуре ОМ и в контексте модуля объекта.
|
|||
7
Масянька
24.09.21
✎
15:19
|
(2) КоллекцияДвижений
|
|||
8
VladZ
24.09.21
✎
15:20
|
Разные сущности. Так что, никакой магии.
Разрабы тебя запутали словом "Движения" :) |
|||
9
Масянька
24.09.21
✎
15:20
|
Процедура СформироватьДвиженияПрослеживаемыхТоваров(ТаблицаТовары, Реквизиты, Движения, Списание = Ложь)
Если Не ЗначениеЗаполнено(ТаблицаТовары) Тогда Возврат; КонецЕсли; Параметры = ПодготовитьПараметрыДвиженияТоваров(ТаблицаТовары); Для Каждого СтрокаТаблицы Из Параметры.Товары Цикл Если Списание Тогда Запись = Движения.ПрослеживаемыеТовары.ДобавитьРасход(); Иначе Запись = Движения.ПрослеживаемыеТовары.ДобавитьПриход(); КонецЕсли; Запись.Период = Реквизиты.Дата; ЗаполнитьЗначенияСвойств(Запись, Реквизиты); ЗаполнитьЗначенияСвойств(Запись, СтрокаТаблицы); КонецЦикла; Движения.ПрослеживаемыеТовары.Записывать = Истина; КонецПроцедуры |
|||
10
polosov
24.09.21
✎
15:21
|
(7) А, ну тогда нормально ))
|
|||
11
Масянька
24.09.21
✎
15:26
|
Процедура СформироватьДвиженияРеализацияТоваров(ТаблицаТовары, ТаблицаОперации, ТаблицаРеквизиты, Движения) Экспорт
сообщить("2.5 - " + Движения); Если Не ЗначениеЗаполнено(ТаблицаРеквизиты) Тогда Возврат; КонецЕсли; ОбщиеПараметры = ПодготовитьОбщиеПараметры(ТаблицаРеквизиты); Реквизиты = ОбщиеПараметры.Реквизиты[0]; СформироватьДвиженияПрослеживаемыхТоваров(ТаблицаТовары, Реквизиты, Движения, Истина); //Если Реквизиты.Владелец().Колонки.Найти("Контрагент") <> Неопределено И Реквизиты.Контрагент <> Неопределено Тогда // СтранаРегистрацииКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Реквизиты.Контрагент, "СтранаРегистрации"); // Если Справочники.СтраныМира.ГосударствоЧленТаможенногоСоюза(СтранаРегистрацииКонтрагента) Тогда // Возврат; // КонецЕсли; //КонецЕсли; СформироватьДвиженияОперацииСПрослеживаемымиТоварами(ТаблицаОперации, Реквизиты, Движения); сообщить("2 - " + Движения.ПрослеживаемыеТовары.Количество()); КонецПроцедуры 0 - 0 - КоллекцияДвижений 2.5 - КоллекцияДвижений 2 - 1 3 - 0 |
|||
12
Масянька
24.09.21
✎
15:28
|
У меня все получилось.
А в УПП есть ошибка. |
|||
13
Serg_1960
24.09.21
✎
15:29
|
В алгоритме используются движения объекта и движения, полученные по ссылке объекта... "Убил бы за такое"(с)
|
|||
14
Масянька
24.09.21
✎
15:30
|
(13) К разработчикам 1С (в данном случае, УПП) обращайся.
|
|||
15
piter3
24.09.21
✎
15:32
|
(14) Точно из типовой?
|
|||
16
Serg_1960
24.09.21
✎
15:37
|
Между прочим: в документах ВозвратТоваровОтПокупателя, ВозвратТоваровПоставщику,ОтчетОРозничныхПродажах и т.д. используется вызов ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(), где последним параметром указаны Движения Объекта (без всяких вывертов с обращением к базе).
|
|||
17
Serg_1960
24.09.21
✎
15:43
|
(15) ТС не указал ни свою конфигурацию, ни релиз. В УПП 1.3.166.1 конструкция "СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения" используется только в экспортных процедурах модулей менеджеров объектов (не в модулях объектов)
|
|||
18
Масянька
24.09.21
✎
15:45
|
(15) Открой и посмотри.
|
|||
19
Масянька
24.09.21
✎
15:45
|
(17) ТН, модуль менеджера:
Процедура ДвиженияПоРегистрамПрослеживаемыхТоваров(СтруктураШапкиДокумента, ТаблицаСумм = Неопределено) Экспорт УчетнаяПолитикаРегл = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиРегл(СтруктураШапкиДокумента.Дата, СтруктураШапкиДокумента.Организация); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ссылка", СтруктураШапкиДокумента.Ссылка); НомераТаблиц = Новый Структура; ПараметрыПроведения = Новый Структура; УсловияПрослеживаемости = Новый Структура; УсловияПрослеживаемости.Вставить("ВедетсяУчетПрослеживаемыхТоваров", ПолучитьФункциональнуюОпцию("ВестиУчетПрослеживаемыхТоваров") И ПрослеживаемостьБРУ.ВедетсяУчетПрослеживаемыхТоваров(СтруктураШапкиДокумента.Дата)); Запрос.Текст = Документы.ТребованиеНакладная.ТекстЗапросаПрослеживаемыеТовары(НомераТаблиц, ПараметрыПроведения, УсловияПрослеживаемости); Если НЕ ПустаяСтрока(Запрос.Текст) Тогда Результат = Запрос.ВыполнитьПакет(); Для Каждого НомерТаблицы Из НомераТаблиц Цикл ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить()); КонецЦикла; КонецЕсли; Если УсловияПрослеживаемости.ВедетсяУчетПрослеживаемыхТоваров Тогда ТаблицаРеквизиты = ПрослеживаемостьБП.СтруктуруВТаблицуЗначений(СтруктураШапкиДокумента); Если НЕ ТаблицаСумм = Неопределено Тогда Для каждого Строка Из ПараметрыПроведения.ПрослеживаемыеОперации Цикл СтрокаССуммой = ТаблицаСумм.Найти(Строка.ИдентификаторСтроки, "ИдСтрокиПрослеживаемогоТовара"); Если ЗначениеЗаполнено(СтрокаССуммой) Тогда Строка.СуммаБезНДС = СтрокаССуммой.Стоимость; КонецЕсли; КонецЦикла; КонецЕсли; ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров( ПараметрыПроведения.ПрослеживаемыеТовары, ПараметрыПроведения.ПрослеживаемыеОперации, ТаблицаРеквизиты, СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения); КонецЕсли; КонецПроцедуры Управление производственным предприятием, редакция 1.3 (1.3.166.1) (http://v8.1c.ru/enterprise/) Copyright (С) ООО "1C-Софт", 2009-2020. Все права защищены (http://www.1c.ru/) |
|||
20
piter3
24.09.21
✎
15:47
|
(18) Некуда смотреть.Что-то не понято и пятнично)
|
|||
21
Serg_1960
24.09.21
✎
15:56
|
(19) Вам мои слова подтверждать не обязательно :) А вот вопрос (15) - актуален. У Вас в (0) не типовой алгоритм.
|
|||
22
Serg_1960
24.09.21
✎
16:11
|
*(21) Тьфу, пятница, вечер... написал так, что сам не понял :)
"Движения.ПрослеживаемыеТовары.Количество()" - некорректное обращение к объекты в контексте менеджера объекта - "Для выполнения функций модуля менеджера объекта не должен требоваться экземпляр объекта данных" - https://its.1c.ru/db/v8std/content/486/hdoc |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |