|
v8: УПП Мистика существует? Движения записываются через-раз | ☑ | ||
---|---|---|---|---|
0
Homer
23.08.11
✎
09:38
|
8.2.13.219
При переходе на 8.2 автоматом поставилось в константах ведение Регистра СвободныеОстатки. Для документа Требование есть подписка при проведении (моя). В ней двигается рег. ПартииТоваровНаСкладахБухгалтерскийУчет (добавляем движение для забалансового счета). Если открыть документ и провести его 2 раза подряд (не закрывая док) то движение отчищается, при следующем перепроведении дока движение появляется. В итоге через раз идет очистка движения ПартииТоваровНаСкладахБухгалтерскийУчет, если же документ проводить в списки (или зашел в документ провел, вышел, зашел провел) то все ок. вот в этом месте идет очистка // Если ИспользоватьРегистрСвободныеОстатки И Материалы.Количество() <> 0 И НЕ Отказ Тогда Если глЗначениеПеременной("ИспользоватьБлокировкуДанных") Тогда Движения.СвободныеОстатки.БлокироватьДляИзменения = Истина; КонецЕсли; Движения.Записать(); РегистрыНакопления.СвободныеОстатки.КонтрольОстатков( "Материалы", СтруктураШапкиДокумента, Отказ, Заголовок, РежимПроведения); КонецЕсли; // почему то при выполнении данного кода Движения.Записать(); он перезаписывает Рег ПартииТоваровНаСкладахБухгалтерскийУчет через раз. |
|||
1
Мимохожий Однако
23.08.11
✎
09:41
|
У тебя в коде два раза есть строка Движения.Записать()
|
|||
2
Homer
23.08.11
✎
09:44
|
вот код подписки
////// Если ТипЗнч(Источник.Ссылка) = Тип("ДокументСсылка.ТребованиеНакладная") Тогда Если Источник.забаланс и Источник.ОтражатьВБухгалтерскомУчете Тогда НаборДвижений = Источник.Движения.Хозрасчетный; НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); СчетЗабаланс=ПланыСчетов.Хозрасчетный.НайтиПоКоду("013"); НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); Для Каждого ТекущаяСтрока Из ТаблицаДвижений Цикл Движение = НаборЗаписей.Добавить(); Движение.СчетДт = СчетЗабаланс; Движение.Период = ТекущаяСтрока.Период; Движение.Регистратор = ТекущаяСтрока.регистратор; Движение.СубконтоДт.Номенклатура = ТекущаяСтрока.СубконтоКт1; Движение.СубконтоДт.Склады = ТекущаяСтрока.СубконтоКт2; Движение.КоличествоДт = ТекущаяСтрока.КоличествоКТ; Движение.Сумма = ТекущаяСтрока.Сумма; Движение.Содержание = ТекущаяСтрока.Содержание; Движение.Организация = ТекущаяСтрока.Организация; КонецЦикла; НаборЗаписей.Записать(Ложь); НаборДвижений = Источник.Движения.ПартииТоваровНаСкладахБухгалтерскийУчет; НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); ТаблицаДвижений.ЗаполнитьЗначения(СчетЗабаланс, "СчетУчета"); ТаблицаДвижений.ЗаполнитьЗначения(Перечисления.КодыОперацийПартииТоваров.Оприходование, "КодОперации"); НаборДвижений.мТаблицаДвижений = ТаблицаДвижений; НаборДвижений.ВыполнитьПриход(); НаборДвижений.Записать(); НаборДвижений = Источник.Движения.ПартииТоваровНаСкладах; НаборДвижений.Прочитать(); НаборДвижений.Очистить(); НаборДвижений = Источник.Движения.ТоварыНаСкладах; НаборДвижений.Прочитать(); НаборДвижений.Очистить(); НаборДвижений = Источник.Движения.ТоварыОрганизаций; НаборДвижений.Прочитать(); НаборДвижений.Очистить(); КонецЕсли; ////// |
|||
3
5 Элемент
23.08.11
✎
10:22
|
Уверен, что регистр СвободныеОстатки здесь непричем
|
|||
4
5 Элемент
23.08.11
✎
10:24
|
Гениально
НаборДвижений.Прочитать(); НаборДвижений.Очистить(); |
|||
5
SunFox
23.08.11
✎
10:27
|
(0) используй отладчик, чудеса нужно экономить
|
|||
6
GoldenDawn
23.08.11
✎
10:29
|
(0)на 99 недопонимание
на 1 платформа иногда делает не то что написано |
|||
7
rinatru
23.08.11
✎
10:44
|
слишком много Движения.Записать();
для документа запись происходит для всего набора записей, а ты чистишь, и заново пишешь движения только для конкретного движения по Партиям. разбираться надо тебе самому. а платформа делает то, что ей скажут, и она не виновата :))) ты сам пришел |
|||
8
Homer
23.08.11
✎
11:04
|
а как объяснить вот это?!
Есть документ ПеремещениеТоваров в нем есть подписка ///// ИначеЕсли ТипЗнч(Источник.Ссылка) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда Если Источник.забаланс и Источник.ОтражатьВБухгалтерскомУчете Тогда Сообщить("Пишем на забаланс"); НаборДвижений = Источник.Движения.ПартииТоваровНаСкладах; НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); СчетЗабаланс=ПланыСчетов.Хозрасчетный.НайтиПоКоду("013"); НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); Для Каждого Строчка Из ТаблицаДвижений Цикл Если Строчка.ВидДвижения = ВидДвиженияНакопления.Расход Тогда Движение = НаборЗаписей.Добавить(); Движение.СчетДт = СчетЗабаланс; Движение.Период = Источник.Дата; Движение.Регистратор = Источник.Ссылка; Движение.СубконтоДт.Номенклатура = Строчка.Номенклатура; Движение.СубконтоДт.Склады = Источник.СкладПолучатель; Движение.КоличествоДт = Строчка.Количество; Движение.Сумма = Строчка.Стоимость; Движение.Организация = Источник.Организация; Движение = НаборЗаписей.Добавить(); Движение.СчетКт = СчетЗабаланс; Движение.Период = Источник.Дата; Движение.Регистратор = Источник.Ссылка; Движение.СубконтоКт.Номенклатура = Строчка.Номенклатура; Движение.СубконтоКт.Склады = Источник.СкладОтправитель; Движение.КоличествоКт = Строчка.Количество; Движение.Сумма = Строчка.Стоимость; Движение.Организация = Источник.Организация; КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); Сообщить("Забаланс записан"); КонецЕсли; КонецЕсли; //// Тут уже проводки пропадают, только мои правда. Хотя в подписки "ТребованиеНакладная" все проводки остаются. |
|||
9
Homer
23.08.11
✎
11:20
|
меня больше бесит, что 1с все унифицирует а на самом деле для каждого события у них свой код. Пусть бы тогда делали процедуры типа ПроведениеПеремещениеТоваров.
|
|||
10
Homer
23.08.11
✎
11:26
|
(7) если много Движения.Записать(); то почему
"если же документ проводить в списки (или зашел в документ провел, вышел, зашел провел) то все ок." вот так работает. или тут уже законы Движения.Записать() не действуют )) |
|||
11
Homer
23.08.11
✎
13:29
|
апп
|
|||
12
detec
23.08.11
✎
13:32
|
(0)
1. Форма документа управляемая или обычная? 2. В документе стоит свойство "Удалять движения автоматически"? |
|||
13
ptiz
23.08.11
✎
13:44
|
Код в (0) из какого модуля вызывается?
|
|||
14
tdm
23.08.11
✎
13:48
|
(0) мистики не существует)
поискать еще подписки на события (в конце концов при записи в регистре сделать остановку и через стек вызова поискать откуда обращение идет и т.д.); ну и условия посмотреть внимательнее - раз через раз пишется гдет поразному проверка отрабатывает...может приведенный текст модулей и ни при чем)) |
|||
15
Homer
23.08.11
✎
14:12
|
(12) 1.обычная.
2.Не удалять автоматически (13) Модуль Требования (14) Если бы это было просто я бы посмотрел уже! |
|||
16
Homer
23.08.11
✎
14:24
|
(14) Если смотреть движение(точку остановки на Движения.Записать()). То при перепроведении появляется мТаблицаДвижений с моими записями.
|
|||
17
Lyekka
23.08.11
✎
14:25
|
Мистика существует, но не когда дело заходит о программировании.
|
|||
18
Homer
23.08.11
✎
14:29
|
Мистика в том что в фоновом режиме документ не глючит, а стоит его открыть и проводить как он начинает себя странно вести
|
|||
19
Krendel
23.08.11
✎
14:42
|
Заплатите прошлому прогеру зарплату ;-)
|
|||
20
jump if zero
23.08.11
✎
14:43
|
пример при котором документ может проводиться через раз
свойство Запись движений при проведении :Записывать выбранные отсутствие в обработке проведения Движения.Документ.Записывать=Истина; |
|||
21
Homer
24.08.11
✎
06:24
|
(20) Заработало!!! Спасибо)))
|
|||
22
Homer
24.08.11
✎
06:37
|
Вопрос тогда вот в чем?
У документа Требования стоит очистка регистров ////// Если мУдалятьДвижения Тогда ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Истина, РежимПроведения); КонецЕсли; ///// Тогда получается, что ни какой разнице нет, стоит Записывать выбранные или записывать модифицированные? |
|||
23
Песец
24.08.11
✎
07:10
|
(10) Потому что при проведении в списке документ-объект пересоздается каждый раз, а в форме один самый первый, при последующих перепроведениях используется старый уже созданный, набор движений сохраняется от предыдущего проведения.
|
|||
24
Песец
24.08.11
✎
07:16
|
(23)+ Вот тут все в картинках разрисовано:
http://yandex.ru/yandsearch?text=%2213+оши% D0%B1%D0%BE%D0%BA%2C+%D0%B7%D0%B0+%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5+%D1%83%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8F%D1%8E%D1%82+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%BE%D0%B2%22&text=11158&lr=11158 |
|||
25
Homer
24.08.11
✎
07:24
|
На свежую голову сегодня смотрю. Оказывается при очистки регистров у меня остается Движения.ПартииТоваровНаСкладахБухгалтерскийУчет.Модифицированность() = Истина
Вот сейчас капаю почему |
|||
26
Homer
24.08.11
✎
13:39
|
Сделал подписку на регистр, все ОК
////// Процедура ЗабалансПриЗаписи(Источник, Отказ, Замещение) Экспорт Если Источник.Количество()>0 и Источник.Отбор.Регистратор.Значение.Забаланс = Истина и Замещение = Истина Тогда СчетЗабаланс=ПланыСчетов.Хозрасчетный.НайтиПоКоду("013"); СсылкаНаОбъект = Источник.Отбор.Регистратор.Значение; мДвижение = РегистрыНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.СоздатьНаборЗаписей(); мДвижение.Отбор.Регистратор.Установить(СсылкаНаОбъект); Попытка Для Каждого ТекСтрока из Источник Цикл Движение = мДвижение.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Регистратор = СсылкаНаОбъект; Движение.Период = ТекСтрока.Период; Движение.Организация = ТекСтрока.Организация; Движение.Номенклатура = ТекСтрока.Номенклатура; Движение.ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры; Движение.СчетУчета = СчетЗабаланс; Движение.Склад = ТекСтрока.Склад; Движение.Количество = ТекСтрока.Количество; Движение.Стоимость = ТекСтрока.Стоимость; Движение.КодОперации = Перечисления.КодыОперацийПартииТоваров.Оприходование; Движение.Качество = ТекСтрока.Качество; КонецЦикла; Исключение Сообщить("забаланс не сработал"); КонецПопытки; мДвижение.Записать(Ложь); КонецЕсли; //////Эта в модуле документа С удалением так и не разобрался. Ну это все из за него происходит. 1с-ы наворотили что без бутылке не разберешь. ///// Если мУдалятьДвижения Тогда ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Истина, РежимПроведения); КонецЕсли; ///// а дальше песня, я так и не понял чем отличается конструкция ДокументОбъект.Движения[ИмяРегистра].Очистить(); от Набор = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Регистратор); Набор.Записать(); может кто скажет? |
|||
27
Homer
24.08.11
✎
13:41
|
(26) подписку еще надо допилить под поверки, так что не пинайте))
|
|||
28
Steel_Wheel
24.08.11
✎
13:43
|
Надо начертить УПП-пентаграмму и вставть в нее, мистика прекратится
|
|||
29
Homer
24.08.11
✎
14:08
|
все заработало. Я сразу после того как не заработало проверил через набор. у меня не взлетело.
сейчас анализировал и думал почему в подписке на рег работает а так нет, решил еще попробовать. Заработало /// мДвижение = РегистрыНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.СоздатьНаборЗаписей(); мДвижение.Отбор.Регистратор.Установить(Источник.Ссылка); мДвижение.Прочитать(); Попытка Для Каждого ТекСтрока из мДвижение.Выгрузить() Цикл Движение = мДвижение.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Регистратор = Источник.Ссылка; Движение.Период = ТекСтрока.Период; Движение.Организация = ТекСтрока.Организация; Движение.Номенклатура = ТекСтрока.Номенклатура; Движение.ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры; Движение.СчетУчета = СчетЗабаланс; Движение.Склад = ТекСтрока.Склад; Движение.Количество = ТекСтрока.Количество; Движение.Стоимость = ТекСтрока.Стоимость; Движение.КодОперации = Перечисления.КодыОперацийПартииТоваров.Оприходование; Движение.Качество = ТекСтрока.Качество; КонецЦикла; Исключение Сообщить("забаланс не сработал"); КонецПопытки; мДвижение.Записать(); |
|||
30
Homer
24.08.11
✎
14:15
|
в первый раз было типа
/// НаборДвижений = Источник.Движения.Хозрасчетный; НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); СчетЗабаланс=ПланыСчетов.Хозрасчетный.НайтиПоКоду("013"); НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); Для Каждого ТекущаяСтрока Из ТаблицаДвижений Цикл Движение = НаборЗаписей.Добавить(); Движение.СчетДт = СчетЗабаланс; Движение.Период = ТекущаяСтрока.Период; Движение.Регистратор = ТекущаяСтрока.регистратор; Движение.СубконтоДт.Номенклатура = ТекущаяСтрока.СубконтоКт1; Движение.СубконтоДт.Склады = ТекущаяСтрока.СубконтоКт2; Движение.КоличествоДт = ТекущаяСтрока.КоличествоКТ; Движение.Сумма = ТекущаяСтрока.Сумма; Движение.Содержание = ТекущаяСтрока.Содержание; Движение.Организация = ТекущаяСтрока.Организация; КонецЦикла; НаборЗаписей.Записать(Ложь); НаборДвижений = РегистрыНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.СоздатьНаборЗаписей(); НаборДвижений.Отбор.Регистратор.Установить(Источник.Ссылка); НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); НаборДвижений.Записать(); //// вот так не работало!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |