По теме из базы знаний
- Штрихкодирование документов бухгалтерии - обмен данными "Бухгалтерия предприятия" - "Документооборот"
- Пример вывода ШТРИХКОДА в УПД через расширение (без конфигуратора) с минимальными изменениями кода
- Универсальный вывод штрихкодов
- Счет на оплату со штрихкодом из документа Заказ клиента (ERP 2, КА 2, УТ 11)
- Отключение группировки одинаковых строк в УПД и счете-фактуре и вывод штрихкода в УПД
Найденные решения
(5) Примерно так, только в запросе нужно добавить группировку
&НаСервере
Функция ШтрихКодЭлемента(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Владелец
| МАКСИМУМ( ШтрихкодыНоменклатуры.Штрихкод)
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = В (&СписокНоменклатуры)";
Запрос.УстановитьПараметр("СписокНоменклатуры",
Объект.Товары.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", Выборка.Номенклатура);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество()>0 Тогда
НайденныеСтроки[0].Штрихкод=Выборка.Штрихкод;
КонецЕсли;
КонецЦикла;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ШтрихКод номенклатуры хранится в регистре сведений и их там может быть несколько.
Запросом нужно будет получать штрихкод из этого регистра и заполнять значение в отдельной колонке, соответственно менять его при изменении номенклатуры и т.п.
В общем без изменения конфигурации никак.
Запросом нужно будет получать штрихкод из этого регистра и заполнять значение в отдельной колонке, соответственно менять его при изменении номенклатуры и т.п.
В общем без изменения конфигурации никак.
Посмотрел как это делается в "Рознице и намудрил вот такой запрос"
Подскажите как вывести колонку со штрихкодом на форму.
&НаСервере
Функция ШтрихКодЭлемента(Номенклатура)
Штрихкод = "";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ШтрихкодыНоменклатуры.Штрихкод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Штрихкод = Выборка.Штрихкод;
КонецЦикла;
Возврат Штрихкод;
КонецФункции
ПоказатьПодскажите как вывести колонку со штрихкодом на форму.
(5) Примерно так, только в запросе нужно добавить группировку
&НаСервере
Функция ШтрихКодЭлемента(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Владелец
| МАКСИМУМ( ШтрихкодыНоменклатуры.Штрихкод)
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = В (&СписокНоменклатуры)";
Запрос.УстановитьПараметр("СписокНоменклатуры",
Объект.Товары.Выгрузить(,"Номенклатура").ВыгрузитьКолонку("Номенклатура"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", Выборка.Номенклатура);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество()>0 Тогда
НайденныеСтроки[0].Штрихкод=Выборка.Штрихкод;
КонецЕсли;
КонецЦикла;
КонецФункции
Показать
(6) Не очень оптимально. Если при открытии формы надо будет указать штрихкод, то запрос будет вызван в цикле много раз.
Лучше сразу получить штрихкоды по всей номенклатуры документа, засунуть их в соответствие номенклатура - штрихкод. А потом заполнить с помощью соответствия табличную часть.
Лучше сразу получить штрихкоды по всей номенклатуры документа, засунуть их в соответствие номенклатура - штрихкод. А потом заполнить с помощью соответствия табличную часть.
Всем Добрый день я сделал так
Можете сказать можно ли здесь оптимизировать код?
Заранее благодарю.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура В(&МассивНом)";
МассивТМЗ = Новый Массив;
Для Каждого Стр Из Объект.Товары Цикл //Заполнить Массив для запроса
МассивТМЗ.Добавить(Стр.Номенклатура);
КонецЦикла;
Запрос.УстановитьПараметр("МассивНом", МассивТМЗ);
Выборка = Запрос.Выполнить().Выгрузить();
СоответствиеШК = Новый Соответствие;
Для Каждого Выб Из Выборка Цикл //заполнить соответствие Номенклатура и Штрихкод из Результата запроса
СоответствиеШК.Вставить(Выб.Номенклатура, Выб.Штрихкод);
КонецЦикла;
Для Каждого Стр Из Объект.Товары Цикл // заполить штрихкода в табл части согласно соответствию
Стр.Штрихкод = СоответствиеШК.Получить(Стр.Номенклатура);
КонецЦикла;
ПоказатьМожете сказать можно ли здесь оптимизировать код?
Заранее благодарю.
(9)
Для отчёта сойдёт
Для отчёта сойдёт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура В(&МассивНом)";
Запрос.УстановитьПараметр("МассивНом", Объект.Товары.ВыгрузитьКолонку("Номенклатура"));
Выборка = Запрос.Выполнить().Выбрать();
СтруктураПоиска = Новый Структура("Номенклатура");
Пока Выборка.Следующий() Цикл
СтруктураПоиска.Номенклатура = Выборка.Номенклатура;
массивСтрокТЧ = Объект.Товары.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТЧ Из массивСтрокТЧ Цикл
СтрокаТЧ.Штрихкод = Выборка.Штрихкод;
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот