gifts2017

Ошибка в обработке "ПодборЗатратПоУслугам" в типовой Бухгалтерии для бюджетных учреждений 6.2 (647)

Опубликовал Сергей Шевченко (demon_infernal) в раздел Программирование - Практика программирования

В текущем на момент публикации релизе 647 конфигурации "Бухгалтерия для бюджетных учреждений 6.2" при заполнении документа "Списание затрат по услугам" наблюдается следующая ошибка: в режиме заполнения (F5) невозможно выбрать значение субконто, если тип субконто - подчиненный справочник.

 

Если на счете 401.10.х.х заведено субконто "Детализация ЭКР" (вид субконто "Детализация ЭКР", тип "Справочник.ДетализацияЭКР"), то, в режиме заполнения невозможно выбрать значение субконто. Открывается форма выбора без установки владельца. По кнопке F7 можно выбрать правильное значение с указанием владельца, но в таком случае выбранные значения присвоятся всем строкам. На иллюстрации пример, когда такой способ заполнения недопустим, и нужно явно задавать значения. В одной строке КОСГУ 180, в других 130.

Ошибка кроется в обработке "ПодборЗатратПоУслугам" в процедуре "ВыбратьСубконтоДебета": 


Если ТипОбъекта = "Справочник" Тогда

       
Объект = СоздатьОбъект(ТипСубконто);

        Если
Объект.Выбрать("Выберите элемент", "ФормаСписка") = 0 Тогда

            Возврат
0;

        КонецЕсли;

       
ТабУслуг.УстановитьЗначение(НомСтр,ИмяКол,Объект.ТекущийЭлемент());

 

Как видно, никаких проверок на наличие подчиненности не производится.

Исправленный вариант выглядит так:


     Если ТипОбъекта = "Справочник" Тогда

      
//--dem

       
Объект = СоздатьОбъект(ТипСубконто);

       
ТипВладельца = Метаданные.Справочник(СтрЗаменить(ТипСубконто,"Справочник.","")).Владелец;

        Если
ПустоеЗначение(ТипВладельца)=0 Тогда

           
СтрТипВладельца = "Справочник."+ТипВладельца.Идентификатор;

           
СпрВладелец = СоздатьОбъект("Справочник."+ТипВладельца.Идентификатор);

            Для
а =1 По ТекСч.КоличествоСубконто() Цикл

                Если
ТекСч.ВидСубконто(а).ТипСубконто()=СтрТипВладельца Тогда

                   
СпрВладелец.НайтиЭлемент(ТабУслуг.ПолучитьЗначение(НомСтр,3+а));

                   
Объект.ИспользоватьВладельца(СпрВладелец.ТекущийЭлемент());

                    Прервать;

                КонецЕсли;

            КонецЦикла;

        КонецЕсли;

        
//--dem

       
Если Объект.Выбрать("Выберите элемент", "ФормаСписка") = 0 Тогда

            Возврат
0;

        КонецЕсли;

       
ТабУслуг.УстановитьЗначение(НомСтр,ИмяКол,Объект.ТекущийЭлемент());

Буду рад, если кому-то пригодится.

 

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа