Имя: Пароль:
1C
1С v8
Не срабатывает движение по регистру типовыми инструментами.
,
0 Boudybuilder
 
08.11.12
12:48
УТ для Укр. Почему может не проводиться по регистрам новый док?
Проверял отладчиком , параметры процедуры , все как и в типовом.
НаборДвижений = Таблица идентична типовой  доку ОтчетОРознПродажах, конечно за исключениям регистратора. Не могу понять. После проведения - регистр пустой. Док в регистраторы включен. Вроде же эта процедура непосредственно выполняет запись в регистр?!



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








Вот полный код ее из типовой:




Процедура ВыполнитьДвижениеПоРегистру(НаборДвижений, ВидДвижения = Неопределено,
                                     ПустыеКолонкиСоставногоТипа = Неопределено, ЗаполнитьПериод = истина) Экспорт

   ТаблицаДвижений = НаборДвижений.мТаблицаДвижений;
   Если ТаблицаДвижений.Количество() = 0 Тогда
       Возврат;
   КонецЕсли;
   
   Если ПустыеКолонкиСоставногоТипа = Неопределено Тогда
       ПустыеКолонкиСоставногоТипа = Новый Структура;
   КонецЕсли;
   
   МетаРег = НаборДвижений.Метаданные();
   ИзмеренияСостТипа = Новый Структура;
   Для Каждого МетаИзм Из МетаРег.Измерения Цикл
       Если (МетаИзм.Тип.Типы().Количество() > 1)
          И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаИзм.Имя)) Тогда
           ИзмеренияСостТипа.Вставить(МетаИзм.Имя);
       КонецЕсли;
   КонецЦикла;
   Для Каждого МетаРек Из МетаРег.Реквизиты Цикл
       Если (МетаРек.Тип.Типы().Количество() > 1)
          И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРек.Имя)) Тогда
           ИзмеренияСостТипа.Вставить(МетаРек.Имя);
       КонецЕсли;
   КонецЦикла;
   Для Каждого МетаРес Из МетаРег.Ресурсы Цикл
       Если (МетаРес.Тип.Типы().Количество() > 1)
          И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРес.Имя)) Тогда
           ИзмеренияСостТипа.Вставить(МетаРес.Имя);
       КонецЕсли;
   КонецЦикла;
   
   // Откопируем остальные колонки (структура таблиц совпадает).
   ПерваяКолонка = Истина;
   МассивСтрок   = Новый Массив(ТаблицаДвижений.Количество());
   ЕстьПериод    = НЕ ТаблицаДвижений.Колонки.Найти("Период") = Неопределено;
   Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл

       ИмяКолонки = Колонка.Имя;
       Если ИмяКолонки <> "Период"
          И ИмяКолонки <> "Активность"
          И ИмяКолонки <> "НомерСтроки"
          И ИмяКолонки <> ""
          И ?(ИмяКолонки = "ВидДвижения", ВидДвижения = Неопределено, Истина)
          И ИмяКолонки <> "МоментВремени" Тогда
         
           Если ИзмеренияСостТипа.Свойство(ИмяКолонки) Тогда
               ФлагКолонкиСостТипа = Истина;
           Иначе
               ФлагКолонкиСостТипа = Ложь;
           КонецЕсли;
           
           Индекс = 0;
           Для каждого СтрокаТаблицы Из ТаблицаДвижений Цикл

               Если ПерваяКолонка Тогда
                   
                   Если ВидДвижения = ВидДвиженияНакопления.Приход Тогда
                       СтрокаДвижения = НаборДвижений.ДобавитьПриход();
                   ИначеЕсли ВидДвижения = ВидДвиженияНакопления.Расход Тогда
                       СтрокаДвижения = НаборДвижений.ДобавитьРасход();
                   Иначе
                       СтрокаДвижения = НаборДвижений.Добавить(); // Для оборотных регистров
                   КонецЕсли;
                   
                   МассивСтрок[Индекс] = СтрокаДвижения;
                   СтрокаДвижения.Период = НаборДвижений.мПериод;
                   Если не ЗаполнитьПериод и ЕстьПериод И НЕ СтрокаТаблицы.Период = '00010101' Тогда
                       СтрокаДвижения.Период = СтрокаТаблицы.Период;
                   Иначе
                       СтрокаДвижения.Период = НаборДвижений.мПериод;
                   КонецЕсли;
                   
               Иначе
                   
                   СтрокаДвижения = МассивСтрок[Индекс];
                   
               КонецЕсли;
               
               Индекс = Индекс + 1;
               
               ЗначКолонки = СтрокаТаблицы[ИмяКолонки];
               Если ФлагКолонкиСостТипа Тогда

                   Очистить = Ложь;
                   Если ТипЗнч(ЗначКолонки) = Тип("Число")Тогда
                       Если ЗначКолонки = 0 Тогда
                           Очистить = Истина;
                       КонецЕсли;
                   ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Строка") Тогда
                       Если ЗначКолонки = "" Тогда
                           Очистить = Истина;
                       КонецЕсли;
                   ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Дата") Тогда
                       Если ЗначКолонки = '00010101000000' Тогда
                           Очистить = Истина;
                       КонецЕсли;
                   ИначеЕсли ЗначКолонки = Неопределено Или ЗначКолонки.Пустая() Тогда
                       Очистить = Истина;
                   КонецЕсли;

                   Если Очистить Тогда
                       СтрокаДвижения[ИмяКолонки] = Неопределено;
                   Иначе
                       СтрокаДвижения[ИмяКолонки] = ЗначКолонки;
                   КонецЕсли;
               Иначе
                   СтрокаДвижения[ИмяКолонки] = ЗначКолонки;
               КонецЕсли;
               
           КонецЦикла;
           
           ПерваяКолонка = Ложь;
           
       КонецЕсли;

   КонецЦикла;

КонецПроцедуры // ВыполнитьДвижениеПоРегистру()
1 Boudybuilder
 
08.11.12
13:09
Что то можете подсказать?
2 Jaffar
 
08.11.12
13:15
может потому что ВидДвижения = Неопределено?
3 Boudybuilder
 
08.11.12
13:34
ДА нет , там приход , расход. Вобщем где как надо...
4 bazvan
 
08.11.12
13:36
Сравни политру свойст твоего нового и типового и найди различия
5 Jaffar
 
08.11.12
13:40
поллитра - она и в Африке поллитра, чо ее сравнивать?
6 Boudybuilder
 
08.11.12
13:44
(4) Ура!!! Братишь! Ништяк! Оно!
7 bazvan
 
08.11.12
13:45
(5) иди учи матчасть
8 Boudybuilder
 
08.11.12
13:45
(5) Не удалять автоматически , не заполнять автоматически!!!!
9 Boudybuilder
 
08.11.12
13:46
(7) А то!
10 Jaffar
 
08.11.12
13:47
(8) не путай "палитру" и "поллитру" :-)
11 Boudybuilder
 
08.11.12
13:47
(7)
Мне бы тоже не плохо дочитать книги ... Ато читаю читаю... И засыпаю... )))))))))))))))))))))))))))))

Вопрос , а теперь наверное надо писать для моих движений обработку удаления?

(10) Подвох!
13 Boudybuilder
 
08.11.12
13:50
(12) Я с поллитра не дружу. Что то не поладилось у нас еще с выпускного.  Мои сокласники понимают о чем речь , они поняли... ))))))))))))))))))))
14 bazvan
 
08.11.12
13:50
(10) ляяяяя, посыпал голову пеплом
15 Boudybuilder
 
08.11.12
13:51
(11)
Хотя не надо , эта и сама все делает хорошо!


Процедура ОбработкаУдаленияПроведения(Отказ)
   
   ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ);
   
КонецПроцедуры
16 bazvan
 
08.11.12
13:57
Проверь проведение и отмену проведения из формы, там еще какаято засада есть, типа обчзательно в подписку на события добавлять, счас точно не помню
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший