Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Набор записей регистра не отбирает по регистратору
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
olegzt
В модуле объекта док."ВВод в эксплуатацию" вызывается процедура заполнения подчиненного документа "ДвиженияУпрУчет"

УпрУчет.ВвводУпрДокаНаОсновании(ЭтотОбъект,) ;


В модуле подчиненного объекта док."ДвиженияУпрУчет" в процедуре "ОбработкаЗаполнения" вызывается набор записей документа-основания "ВВод в эксплуатацию" . Не понятно почему,но такое впечатление что отбор по регистратору "ввводу в эксплуатацию" не происходит, хотя проводки в нем есть.


Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ВводВЭксплуатациюОС") Тогда
       Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       Набор.Отбор.Регистратор.Установить(ДокументОснование);
       Набор.Прочитать();
       Для каждого Запись из Набор Цикл
           // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! СЮДА НЕ ЗАХОДИТ, проводки у документа основания есть
           СчетКТ = лев(Запись.СчетКт,2);
           Если СчетКТ =  "13" Тогда
           КонецЕСли;
       КонецЦикла;
      
   КонецЕсли;



АНАЛОГИЧНАЯ ТЕМА ПО ДОКУМЕНТУ "ЗАКРЫТИЕМЕСЯЦА" РАБОТАЕТ. подскажите кто может в чем может быть дело ?
logist
А стать отладчиком на Набор и посмотреть что там?
olegzt
Цитата(logist @ 03.04.13, 17:59) необходимо зарегистрироваться для просмотра ссылки
А стать отладчиком на Набор и посмотреть что там?


В наборе пусто..


 ! 

Правила, п.13
 


Этот же код вынесенный на форму внешней обработки с явным указанием регистратора из поля формы отрабатывает нормально.
pablo
А ДокументОснование заполнен? Там вполне может быть пустая ссылка
logist
Я вот смотрю на вашу процедуру, а зачем этот маскарад? Не проще ли сразу запросом выбрать данные по нужному счету?
Vofka
Цитата(logist @ 04.04.13, 11:34) необходимо зарегистрироваться для просмотра ссылки
Я вот смотрю на вашу процедуру, а зачем этот маскарад? Не проще ли сразу запросом выбрать данные по нужному счету?

Чем получение данных запросом, в данном случае, лучше?
logist
Цитата(Vofka @ 04.04.13, 10:49) необходимо зарегистрироваться для просмотра ссылки
Чем получение данных запросом, в данном случае, лучше?

По сути дело не в запросе, запрос как вариант. Я смотрю процедура перебирает все данные регистратора, что бы найти только записи по одному счету, почему бы сразу не получить эти данные?
Про это:
Цитата
СчетКТ = лев(Запись.СчетКт,2);
Если СчетКТ = "13" Тогда

вообще молчу. понятно, что каждый пишет как умеет, но можно же как-то смотреть типовые вещи или читать книжки...
Домовик
отладчик до установки отбора покажет непустой набор наверняка, после - пустой. проверьте это.
ДокументОснование в отладчике - что?
olegzt
Не судите за убогий код - на 8 программирую недавно.

ДокументОснование передается через структуру и имеет тип ДокументСсылка.ВводВЭксплуатациюОС

Такой же точно код для ДокументСсылка.ЗакрытиеМесяца работает. Не пойму в чем дело. Вызывается процедура в обоих документах в конце "ОбработкиПроведения" .


Вот этот код работает
      Если (ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗакрытиеМесяца")) и
              (ДокументОснование.АмортизацияОС = 1)   Тогда
                            основание =  ДокументОснование;
              Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
              Набор.Отбор.Регистратор.Установить(ДокументОснование);
              Набор.Прочитать();
              Для каждого Запись из Набор Цикл
                  ПервыйСимволСчета = лев(запись.счетДТ,1);
                  СчетКредит = лев(запись.счетКТ,2);


=== а этот нет

Е
сли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ВводВЭксплуатациюОС") Тогда
       основание =  ДокументОснование;

       Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       Набор.Отбор.Регистратор.Установить(ДокументОснование);
       Набор.Прочитать();
       Для каждого Запись из Набор Цикл
          
           СчетКТ = лев(Запись.СчетКт,2);
           Если СчетКТ =  "13" Тогда
           КонецЕСли;
       КонецЦикла;
      
   КонецЕсли;



 ! 

Правила, п.12!
 
Домовик
тип значения - по условию видно, что проходит. а значение -? в табло в отладчике?


в регистре точно присутствуют записи этого документа?
logist
Цитата(olegzt @ 03.04.13, 16:45) необходимо зарегистрироваться для просмотра ссылки
вызывается процедура заполнения подчиненного документа "ДвиженияУпрУчет"

Отвлеку от сути. А вы для бухгалтерской базы делаете отдельный документ который формирует управленческие движения? А если исходный документ меняется, подчиненный документ тоже меняется? У меня есть подозрение, что вы идете не правильным путем.
olegzt
" Документ основание" в отладчике получает весь документссылка.ВводВЭксплуатацию со всеми реквизитами. Операции-регистрыБухгалтерии показывает наличие движений по всем документам.
На основании первичных документов формируется управленческий документ "УпрДвижения". Он перезаполняется всякий раз после проведения первичного документа. В нем-то и не работает отбор
по списаниюТоваров и вводуВЭксплуатацию, но работает такой же код по ЗакрытиюМесяца. Причину пока понять не могу.
Домовик
в модуле формы обработки код отрабатывает, и если указать документОснование не из поля формы, а переменной?

совсем очумело - признак, что ВводВэксплуатацию - документ-основание вашего документа, где исполняется код, снимите на время.
olegzt
Присваивал переменную=ДокументОснование, снимал признак ввода на основании, результата нет.
Можеть быть выбрать проводки докмуента запросом с отбором по регистратору будет выход из положения. Попробую.

Вопрос модифицировался )

       НаборЗаписейБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       НаборЗаписейБУ.Отбор.Регистратор.Использование = Истина;
       НаборЗаписейБУ.Отбор.Регистратор.Значение = ЭтотОбъект.Ссылка;

       НаборЗаписейБУ.Прочитать();
       Для каждого Запись из НаборЗаписейБУ Цикл

       КонецЦикла;


вот такой код дает обход проводок в ОбработкеПроведения (в конце процедуры) в документе "ЗакрытиеМесяца". А в "ВводВЭксплуатацию" не дает. В обоих документах есть проводки. В чем может быть дело ?
logist
Цитата(olegzt @ 04.04.13, 13:25) необходимо зарегистрироваться для просмотра ссылки
В чем может быть дело ?

А на момент начала этих действий - движения уже есть в регистре? Отладчиком там станьте и посмотрите Движения.Хозрасчетный
olegzt
Движения документа основания есть-но поле "регистратор" пустое до самого конца процедуры "ОбработкаПроведения". Удалось перебрать проводки документа основания с отбором по регистратору только по кнопке
"Заполнить" в подчиненном документе "УпрУчетДвижения". Даже в процедуре "ПриОткрытии" УпрУчет не удается этого сдлеать. Прийдется наверное заполнять по кнопке.
logist
Цитата(olegzt @ 04.04.13, 15:13) необходимо зарегистрироваться для просмотра ссылки
Движения документа основания есть-но поле "регистратор" пустое до самого конца процедуры "ОбработкаПроведения".

ну так перебирайте движения из таблицы Движения.Хозрасчетный, только в конце и сначала проверьте на Отказ
olegzt
Спасибо, попробую.

Передаю в подчиненный документ Движения.Хозрасчетный.выгрузить()
Все получается, большое спасибо !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.