|
Штрихкоды и 17 тысяч накладных. | ☑ | ||
---|---|---|---|---|
0
Crimscon
13.08.18
✎
10:59
|
Есть документ "Рейсовая накладная". В этом документе имеется табличная часть "Документы Рейса", где прописываются данные о реализации товара, контрагент, сумма документа и штрихкод точки доставки с учетом даты рейсовой накладной (нужно для сканеров). Запись штрихкода табличной части осуществляется при заполнении формы документа (1С 8.2 УПП).
Проблема в том, что в самом документе может быть в районе 20 реализаций, а из-за формирования штрихкода постоянно создаются новые пустые строки, которые заполнены только штрихкодом, и чем дольше открыт документ - тем больше строк (я дошел случайно до 17 тысяч). Создается по 300 строк в секунду примерно, поэтому удалять их не вариант. Этот же штрихкод формируется при печатании документа (суть в том, что человек сканирует штрихкод документа на бумаге, ему выдается наименование контрагента и открываются реализации по этому контрагенту уже в формах сканера). Так вот. При печати все выводится нормально, а вот при формировании данных формы - нет, хотя прошелся отладчиком - попадают одни и те же данные. Почему не работает? Код формирования штрихкода: Функция СформироватьШтрихкодТД(ТочкаДоставки) Экспорт ВнутреннийКод = 21; Стр = ДокументыРейса.Добавить(); СокрКодТД = Прав(СокрЛП(ТочкаДоставки.Код), 4) + Прав(Номер, 5); КодТД = Прав("0000000000", 10-СтрДлина(СокрКодТД)) + СокрКодТД; СтрокаШтрихкода = "" + ВнутреннийКод + КодТД; КонтрСимвол = КонтрольныйСимволEAN13ТО(СтрокаШтрихкода); СтрокаШтрихкода = СтрокаШтрихкода + КонтрСимвол; Стр.НевидимыйШтрихкод = СтрокаШтрихкода; Возврат СтрокаШтрихкода; КонецФункции Код заполнения данных в форме: Процедура ДокументыРейсаПриПолученииДанных(Элемент, ОформленияСтрок) ФорматКолонки = Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(50)); ЭлементыФормы.ДокументыРейса.Колонки.ТочкаДоставки.УстановитьЭлементУправления(Тип("ПолеВвода")); ЭлементыФормы.ДокументыРейса.Колонки.Статус.УстановитьЭлементУправления(Тип("ПолеВвода")); ЭлементыФормы.ДокументыРейса.Колонки.Прим.УстановитьЭлементУправления(Тип("ПолеВвода")); ЭлементыФормы.ДокументыРейса.Колонки.ТочкаДоставки.ЭлементУправления.ТипЗначения = ФорматКолонки; ЭлементыФормы.ДокументыРейса.Колонки.Статус.ЭлементУправления.ТипЗначения = ФорматКолонки; ЭлементыФормы.ДокументыРейса.Колонки.Прим.ЭлементУправления.ТипЗначения = ФорматКолонки; Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл Документ = ОформлениеСтроки.ДанныеСтроки.Документ; Если ЗначениеЗаполнено(Документ) Тогда СформироватьШтрихкодТД(Документ.ТочкаДоставки); ОформлениеСтроки.Ячейки.ТочкаДоставки.Значение = Документ.ТочкаДоставки; ОформлениеСтроки.Ячейки.Сумма.Значение = Документ.СуммаДокумента; Забрать = РасчетКолонкиЗабрать(Документ); ОформлениеСтроки.Ячейки.Забрать.Значение = Забрать; ОформлениеСтроки.Ячейки.Статус.Значение = МелисаОбщийМодуль.ВернутьПоследныйСтатусДокумента(Документ)[0]; ОформлениеСтроки.Ячейки.Прим.Значение = Документ.Комментарий; Если Не ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.Контрагент) Тогда ОформлениеСтроки.ДанныеСтроки.Контрагент = ОформлениеСтроки.ДанныеСтроки.Документ.Контрагент; ОформлениеСтроки.ДанныеСтроки.Проект = ОформлениеСтроки.ДанныеСтроки.Документ.Проект; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |