|   |   | 
| 
 | 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; Движение.КоличествоДт = ТекущаяСтрока.КоличествоКТ; Движение.Сумма = ТекущаяСтрока.Сумма; Движение.Содержание = ТекущаяСтрока.Содержание; Движение.Организация = ТекущаяСтрока.Организация; КонецЦикла; НаборЗаписей.Записать(Ложь); НаборДвижений = РегистрыНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.СоздатьНаборЗаписей(); НаборДвижений.Отбор.Регистратор.Установить(Источник.Ссылка); НаборДвижений.Прочитать(); ТаблицаДвижений = НаборДвижений.Выгрузить(); НаборДвижений.Записать(); //// вот так не работало!!! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |