Как выбрать запросом записи регистра сведений и удалить их? В регистре сведений штрих кодов появились ошибочные записи, которые надо было быстро удалить... можно конечно и ручками выбирать и жать Delete, но это не наш метод!
Код 1C v 8.3 Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Штрихкод,
| Штрихкоды.Владелец,
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры,
| Штрихкоды.СерияНоменклатуры,
| Штрихкоды.Качество
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.СерияНоменклатуры.ПометкаУдаления";
Результат = Запрос.Выполнить();
РезультатТаблица = Результат.Выгрузить();
ТекПозиция = 0;
Для каждого СтрокаЗапроса из РезультатТаблица Цикл
ОбработкаПрерыванияПользователя();
ТекПозиция = ТекПозиция + 1;
Состояние("Выполнено " + Окр(ТекПозиция / РезультатТаблица.Количество() * 100) + "%");
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Штрихкод.Установить(СтрокаЗапроса.Штрихкод);
НаборЗаписей.Отбор.Владелец.Установить(СтрокаЗапроса.Владелец);
НаборЗаписей.Отбор.ТипШтрихкода.Установить(СтрокаЗапроса.ТипШтрихкода);
НаборЗаписей.Отбор.ЕдиницаИзмерения.Установить(СтрокаЗапроса.ЕдиницаИзмерения);
НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(СтрокаЗапроса.ХарактеристикаНоменклатуры);
НаборЗаписей.Отбор.СерияНоменклатуры.Установить(СтрокаЗапроса.СерияНоменклатуры);
// Удаляем записи
НаборЗаписей.Записать(Истина);
КонецЦикла;
Предупреждение("Обработка закончена.");
Категория:
Регистры сведений Как отсканировать штрихкод на мобильном устройстве Источник mobile-1s.ru
//не забываем в свойствах конфигурации установить Требуемые разрешения "Мультимедиа"
Код 1C v 8.3
&НаКлиенте
Процедура ЗапуститьСканирование()
#Если МобильноеПриложениеКлиент Тогда
Если НЕ СредстваМультимедиа.ПоддерживаетсяСканированиеШтрихКодов() Тогда
ВызватьИсключение НСтр("ru='Сканирование штрихкодов не поддерживается';en='Barcode scanning is not supported'");
Возврат;
КонецЕсли;
ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаСканирования", ЭтаФорма);
ОбработчикЗакрытия = Новый ОписаниеОповещения("ОбработкаЗакрытияИнтерфейса", ЭтаФорма);
СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(НСтр("ru='Наведите камеру на штрихкод';en='Aim the camera at an barcode'"), ОбработчикСканирования, ОбработчикЗакрытия, ТипШтрихКода.Линейный);
#конецесли
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСканирования(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт
пТовар = "";
Если Результат Тогда
Структура = ОбщегоНазначенияСервер.ПоискПоШтрихкодуОбъекта(ШтрихКод);
Если Структура = Неопределено Тогда
пТовар = Неопределено;
//#Если МобильноеПриложениеКлиент Тогда
// СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов();
//#конецесли
Сообщение = "Не найден объект по штрихкоду " + Штрихкод;
Иначе
пТовар = Структура.Наименование;
Сообщение = сокрЛП(пТовар) + Символы.ПС + Штрихкод;
ДобавитьТоварВТаблицу(пТовар);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗакрытияИнтерфейса(ДополнительныеПараметры) Экспорт
//Если ЗначениеЗаполнено(пТовар) Тогда
// можем встроить код открытия формы ввода количества
//КонецЕсли;
КонецПроцедуры
Категория:
Мобильное приложение Печать штрихкода 1. Для того чтобы вставить объект для печати штрихкода в табличный документ выполните последовательно следующие действия:
Меню Таблица - Рисунки - Вставить объект
Если библиотека 1C Bar Code установлена корректно, в списке выбора внешних объектов появится строка "1С.V8.Печать штрих-кодов" (режим выбора как элемент управления):
2. Разместите рисунок объекта в нужной области печатной формы, установить размер колонки и рисунка так, чтобы ширина одного и другого не мешали выводу на печать
3. Далее необходимо внести изменения в код внешней обработки, которую планируется подключить в качестве внешней печатной формы. Первым делом нужно отредактировать текст запроса, добавив туда информацию из регистра сведений "Штрихкоды". Это позволит использовать два нужных нам измерения - сам штрихкод и тип штрихкода.
Код 1C v 8.х Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровУслугТовары.НомерСтроки,
| РеализацияТоваровУслугТовары.Номенклатура.Артикул КАК Артикул,
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК Товар,
| РеализацияТоваровУслугТовары.Количество,
| РеализацияТоваровУслугТовары.ЕдиницаИзмерения КАК ЕдиницаЦены,
| МестаХраненияНоменклатуры.МестоХранения.Наименование КАК Склад,
| Штрихкоды.Штрихкод,
| Штрихкоды.ТипШтрихкода
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК
МестаХраненияНоменклатуры
| ПО РеализацияТоваровУслугТовары.Номенклатура =
МестаХраненияНоменклатуры.Номенклатура
| И РеализацияТоваровУслугТовары.Склад =
МестаХраненияНоменклатуры.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
| ПО РеализацияТоваровУслугТовары.Номенклатура = Штрихкоды.Владелец
| И РеализацияТоваровУслугТовары.ЕдиницаИзмерения.ЕдиницаПоКлассификатору =
| Штрихкоды.ЕдиницаИзмерения.ЕдиницаПоКлассификатору
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &СсылкаНаОбъект
|УПОРЯДОЧИТЬ ПО
| Склад УБЫВ";
После внесения изменений в макет и запрос обработки, требуется отредактировать способ заполнения данными областей макета с учетом внесенных изменений. Самое интересное в этом примере кода процедуры - способ передачи данных в объект рисунка печати штрихкода:
Код 1C v 8.х // Строки накладной
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьМакета.Параметры.Заполнить(Выборка);
Если Выборка.ТипШтрихкода <> NULL И Выборка.Штрихкод <> NULL Тогда
ОбластьМакета.Рисунки.D1.Объект.ТипКода = Выборка.ТипШтрихкода.Код;
ОбластьМакета.Рисунки.D1.Объект.ТекстКода = Выборка.Штрихкод;
иначе
ОбластьМакета.Рисунки.D1.Объект.ТипКода = 0;
ОбластьМакета.Рисунки.D1.Объект.ТекстКода = "00000000";
КонецЕсли;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Все, больше ничего не надо, сохраняем и формируем
Категория:
Штрих-код (barcode) Добавление поддержки нестандартного штрих-кода в обработке ПечатьЭтикеток Обработка
ПечатьЭтикеток использует компоненту "1С:Печать штрихкодов"(доступную на диске ИТС) для печати штрих-кодов(далее ШК). Эта компонента поддерживает следующие типы штрих-кодов: EAN8, EAN13, EAN128, Code39, Code128.
Что делать если на предприятии используется отличный ШК, например Interleave 2 of 5, для которго есть системный шрифт @IDAutomationSHI25M, используемый для вывода ШК на экран или на принтер.
Рассмотрим как проще всего добавить поддержку этого типа ШК в обработке
ПечатьЭтикеток .
Первым делом скопируем общий макет Этикетка в макет для вывода нашего штрих-кода ЭтикеткаInterleave. В этом макете надо удалить элемент управления, связанный с компонентой "1С:Печать штрихкодов". И оформить центральное поле как параметр табличного документа ШтрихКод, выводимый шрифтом @IDAutomationSHI25M.
Далее разрешаем запуск обработки даже с неустановленной компонентой т.к. для вывода нашего ШК компонента не нужна. Для этого комментируем строчку в модуле формы обработки:
Код 1C v 8.х Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Попытка
КомпонентШК = Новый COMОбъект("V8.Barcod.1");
Макет = ПолучитьОбщийМакет("Этикетка");
ЭтикеткаОбласть = Макет.ПолучитьОбласть(1,1,4,2);
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = "1111111111116";
Исключение
Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!
|Возможна печать только штрих-кодов Interleave!", СтатусСообщения.Важное);
//Отказ = Истина;
КонецПопытки;
КонецПроцедуры
В общем модуле УправлениеРозничнойТорговлей также есть место проверки на компоненту
Код 1C v 8.х #Если Клиент Тогда
// Печать этикеток со штрих-кодом
//
Процедура ПечатьЭтикеток(Товары = Неопределено) Экспорт
//am+ Эта проверка нам не нужна, во первых она выполняется ПередОткрытием в форме обработки.
// Кроме того у нас есть тип штрихкода, который печататется без компоненты.
//Попытка
// КомпонентШК = Новый COMОбъект("V8.Barcod.1");
//Исключение
// Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!", СтатусСообщения.Важное);
// Возврат;
//КонецПопытки;
//am-
В обработке есть место, где выполняется проверка типа ШК. Наш ШК сейчас не пройдет проверку и печать выполнена не будет. Чтоб печать выполнялась необходимо исправить функцию в общем модуле УправлениеРозничнойТорговлей.
Код 1C v 8.х
// Возвращает значение типа штрих-кода для использования в ЭУ
// "1С:Печать штрих-кодов"
//
// Параметры
// ТипКода - ПланыВидовХарактеристик.ТипыШтрихкодов - тип, значение для которого
// нужно получить
//
// Возвращаемое значение:
// Число, которое может быть присвоено свойству ЭУ "ТипКода"
//
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода) Экспорт
Перем Значение;
Если ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
Значение = 0;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Значение = 1;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
Значение = 2;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Значение = 3;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 Тогда
Значение = 4;
//am+
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Interleave20FS Тогда
Значение = 100;
//am-
Иначе
Значение = -1;
КонецЕсли;
Возврат Значение;
КонецФункции // ПолучитьЗначениеТипаШтрихкодаДляЭУ()
Мы на завершающем этапе, вносим изменения непосредственно в обработку.
Код 1C v 8.х Процедура Печать(ТаблицаТоваров) Экспорт
//am+ Так как у нас два разных макета, то нам нельзя смешивать типы ШК
// печатаемые в разных макетах. Выполним проверку.
флВремЕстьInterleave = Ложь;
флВремЕстьНеInterleave = Ложь;
Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
Если СтрокаИзСписка.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Interleave20FS Тогда
флВремЕстьInterleave = Истина;
Иначе
флВремЕстьНеInterleave = Истина;
КонецЕсли;
Если флВремЕстьInterleave и флВремЕстьНеInterleave Тогда
Предупреждение("В списке одновременно встречаются штрих-коды несовместимых типов,
|Штрих-коды Interleave необходимо печатать отдельно от остальных!");
Возврат;
КонецЕсли;
КонецЦикла;
//am-
Таб = Новый ТабличныйДокумент;
Таб.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"+СокрЛП(ИмяКомпьютера());
//am+ Используем наш макет.
Если флВремЕстьInterleave Тогда
Макет = ПолучитьОбщийМакет("ЭтикеткаInterleave");
Иначе
//am-
Макет = ПолучитьОбщийМакет("Этикетка");
КонецЕсли;
//am+ Некоторые строки в нашем макете не заработают, необходимо добавить условие.
Если Не флВремЕстьInterleave Тогда
//am-
РисунокШтрихкод = ЭтикеткаОбласть.Рисунки.Штрихкод;
КонецЕсли;
//am+
Если Не флВремЕстьInterleave Тогда
//am-
РисунокШтрихкод.Расположить(ОбластьШтрихкод);
КонецЕсли;
Если УправлениеРозничнойТорговлей.ПроверитьШтрихКод(СтрокаИзСписка.ШтрихКод,
СтрокаИзСписка.ТипШтрихкода) Тогда
//am+ здесь мы установим размер шрифта (об этом в конце статьи) и зададим параметр ШтрихКод нашего макета для вывода
Если флВремЕстьInterleave Тогда
ЭтикеткаОбласть.Параметры.Установить(0,
СформироватьШтрихКодДляМакетаЭтикеткаInterleave(СтрокаИзСписка.ШтрихКод));
ЭтикеткаОбласть.Области.ОбластьШтрихкод.Шрифт =
Новый Шрифт(ЭтикеткаОбласть.Области.ОбластьШтрихкод.Шрифт,,РезмерШрифтаInterleave);
Иначе
//am-
Попытка //попытку нужно добавить т.к. если компонента не установлена, то будут ошибки.
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.ТипКода = ТипКода;
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = СтрокаИзСписка.ШтрихКод;
Исключение
КонецПопытки;
КонецЕсли;
Последний штрих это добавить регулятор размера шрифта (в коде переменная РезмерШрифтаInterleave) на форму обработки:
источник Категория:
Штрих-код (barcode)