Печатная форма счета-фактуры 1137 для ТиС 9.2

Исправление ошибки зацикливания при печати счета-фактуры 1137 в 1С Торговля и Склад 9.2

 

Столкнулся с проблемой зависания 1С 7.7 Торговля и Склад 9.2 при печати счета-фактуры 1137. При отладке печати обнаружил одну особенность в функции ПодготовитьМнЧосн : если товара не хватает в первой партии, то происходит зацикливание в блоке:


Пока (ОстКолво > 0) 

и (ТаблицаГТД.НайтиЗначение(ТаблицаОснования.Номенклатура, НомСтр, «Номенклатура») <> 0)
Цикл

ТаблицаГТД.ПолучитьСтрокуПоНомеру(НомСтр);

РаспредГТД.НоваяСтрока();
РаспредГТД.Колво = Мин(ОстКолво, ?(ТаблицаОснования.Коэффициент <> 0, ТаблицаГТД.Количество / ТаблицаОснования.Коэффициент, ТаблицаГТД.Количество));

РаспредГТД.Номер = ТаблицаГТД.ГТД;
РаспредГТД.Страна = ТаблицаГТД.СтранаПроисхождения;

ТаблицаГТД.Количество = ТаблицаГТД.Количество — РаспредГТД.Колво * ?(ТаблицаОснования.Коэффициент = 0, 1, ТаблицаОснования.Коэффициент);
Если ТаблицаГТД.Количество // если по ГТД все списали, то удаляем строку
ТаблицаГТД.УдалитьСтроку();
КонецЕсли;

ОстКолво = ОстКолво — РаспредГТД.Колво;
НомСтр = 0;
КонецЦикла;


Причем проблема была в том, что не выполнялось условие при значении 0 и происходило зацикливание:


Если ТаблицаГТД.Количество

// если по ГТД все списали, то удаляем строку
ТаблицаГТД.УдалитьСтроку();
КонецЕсли;


Проблема оказалась в том, что при создании колонок таблицы значений РаспредГТД колонка Колво создавалась без указания типа: 


РаспредГТД = СоздатьОбъект(«ТаблицаЗначений»);
РаспредГТД.НоваяКолонка(«Колво»);
РаспредГТД.НоваяКолонка(«Страна»);
РаспредГТД.НоваяКолонка(«Номер»);


А в стандартной процедуре печати счета-фактуры эта колонка создается с указанием типа Число: РаспредГТД.НоваяКолонка(«Колво», «Число», 14, 3)

После исправления зацикливание было устранено.

Надеюсь кому-нибудь пригодится.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *