Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> ШтрихКод в документе заказа , Не выходит из регистра сведений "Штрихкоды" высмыкнуть штрихко          
Lexveritas Подменю пользователя
сообщение 19.09.17, 14:26
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Всем доброго времени!

Есть такая задача: Документ "Заказ покупателя", в нем номенклатура, характеристика, единица измерения. Поле штрихкода. Штрихкод подвязан к характеристике и единице змерения. Выбор номенклатуры, характеристики, единицы - срабатывает собитые, которое вытягивает штрихкод в его клетку.

Проблема... Ничего не вытягивается из регистра. Знаний в 1С программировании минимум, так что сделано было вот так:

В общем модуле -

Функция ПолучитьШтрихКод(АктуальнаяДата, мВладелец, мЕдиницаИзмерения, мХарактеристикаНоменклатуры) Экспорт
    Отбор = Новый Структура;
    Отбор.Вставить("Владелец", мВладелец);
    ЗначенияРесурсов = РегистрыСведений.Штрихкоды.ПолучитьПоследнее(АктуальнаяДата, Отбор);
    Возврат ЗначенияРесурсов.Штрихкод;
КонецФункции


В документе -
ШтрихКод = РаботаСДокументами.ПолучитьШтрихКод();


Что то не так, потому как и "много фактических параметров" и разная фигня происходит в виде "метод объекта не найден". Из других регистров таким образом данные вытянуть получается, вот с ШК ничего не выходит!

Буду очень рад любой помощи и свежим идеям!

1С8.3.10, УПП.

sava1 Подменю пользователя
сообщение 19.09.17, 14:48
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Дак в УПП все стандартно работает - без "костылей". К чему эти "примочки" ?

Vofka Подменю пользователя
сообщение 19.09.17, 15:15
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Lexveritas, для того, что бы вызвать эту функцию, в неё нужно передать 4 параметра, а вы не одного не передаёте.

sava1, ну так подскажите человеку, как решить его проблему без костылей. Или какой смысл вашего сообщения?

Lexveritas Подменю пользователя
сообщение 19.09.17, 16:05
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

sava1 @ Сегодня, 15:48 * ,

Просто для того, чтоб вручную не переносить штрихкод в документ. А, так в УПП с ШК всё нормально и костылей не требует!

Vofka @ Сегодня, 16:15 * ,

Передал параметры.

Вот полный текст функции:
Процедура ПолучитьКодыБухтКнопка(Элемент)
    Стр12 = ЭлементыФормы.Товары.ТекущиеДанные;
    Для каждого Стр12 Из Товары Цикл
    АктуальнаяДата = Дата;
    КодН = РаботаСДокументами.ПолучитьШтрихКод(АктуальнаяДата, Стр12.Номенклатура, Стр12.ЕдиницаИзмерения, Стр12.ХарактеристикаНоменклатуры);
    КонецЦикла;
КонецПроцедуры


А, вот что получил в итоге в выводе:
{ОбщийМодуль.РаботаСДокументами.Модуль(220)}: Значение не является значением объектного типа (Штрихкод)
Возврат ЗначенияРесурсов.Штрихкод;

Из любых других регистров нормально тянутся данные, а вот с штрихкодами как то провис...

sava1 Подменю пользователя
сообщение 19.09.17, 16:49
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

1.Штрихкоды - непериодический регистр
2. Попробуйте запросом - ибо отбор надо брать и по характеристике и Единице измерения
3. Надо проверять полученное значение - может такого ШК нет?

Сообщение отредактировал sava1 - 19.09.17, 16:59

Lexveritas Подменю пользователя
сообщение 19.09.17, 18:01
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

sava1 @ Сегодня, 17:49 * ,
Проверять наличие ШК нет надобности. Он там однозначно есть.
Отбор да... И по характеристике и по единице измерения.
Может подскажете как сформировать запрос?

В общем модуле наворотил что то вот такое:
ШК="";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ
|    РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
|    Штрихкоды.Владелец = &Владелец
|
|СГРУППИРОВАТЬ ПО
|    Штрихкоды.Штрихкод
|
|УПОРЯДОЧИТЬ ПО
|    Штрихкод УБЫВ";
Запрос.УстановитьПараметр("Владелец",Номенклатура);
Выб = Запрос.Выполнить().Выбрать();
Если Выб.Следующий() Тогда
ШК=Выб.Штрихкод;
КонецЕсли;
Возврат(ШК);
КонецФункции

sava1 Подменю пользователя
сообщение 19.09.17, 18:58
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Lexveritas @ 19.09.17, 19:01) *
|ГДЕ | Штрихкоды.Владелец = &Владелец


И Характеристика=.....
И ЕдиницаИзмерения=....


соответственно УстановитьПарамерты

Группировки не надо, упорядочивать не надо

Lexveritas Подменю пользователя
сообщение 19.09.17, 19:23
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(sava1 @ 19.09.17, 19:58) *
И Характеристика=.....
И ЕдиницаИзмерения=....


Вообще ничего не понял. Я с запросами не дружен...

Можна подробнее как это выглядит?

sava1 Подменю пользователя
сообщение 19.09.17, 20:41
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

запрос = Новый Запрос;
    запрос.Текст ="
    | ВЫБРАТЬ
    |    Штрихкоды.Штрихкод
    |ИЗ
    |    РегистрСведений.Штрихкоды КАК Штрихкоды
    |ГДЕ
    |    Штрихкоды.Владелец = &Владелец
    |    И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
    |    И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения"
    |";
    запрос.УстановитьПараметр("Владелец", Номенклатура);
    запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", Характеристика);
    запрос.УстановитьПараметр("ЕдиницаИзмерения", Единица);
    результат = запрос.Выполнить().Выбрать();


Сообщение отредактировал sava1 - 19.09.17, 20:41

Спасибо сказали: Lexveritas,

Lexveritas Подменю пользователя
сообщение 20.09.17, 9:26
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

sava1 @ Вчера, 21:41 * ,
Понял.
Примерно так и колдовал, но как то в строку... Соответственно ничего и не выходило!
Буду пробовать!

Lexveritas Подменю пользователя
сообщение 20.09.17, 13:00
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

sava1 @ Вчера, 21:41 * ,
Премного благодарствую!

Понял целую гору своих ошибок!

Через какое то время неведомого колдовства родилась вот такая процедура, которая из штрихкода тянет коды мерной и немерной бухты. У нас код товара - последние 6 цифр штрихкода... Вручную обработать огромный заказ, просто ад.

Процедура ПолучитьКодыБухтКнопка(Элемент)
    Стр12 = ЭлементыФормы.Товары.ТекущиеДанные;
    Для каждого Стр12 Из Товары Цикл
    ЗапросКодН = Новый Запрос;
    ЗапросКодН.Текст =("
    | ВЫБРАТЬ
    |    Штрихкоды.Штрихкод
    |ИЗ
    |    РегистрСведений.Штрихкоды КАК Штрихкоды
    |ГДЕ
    |    Штрихкоды.Владелец = &Владелец
    |    И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
    |    И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения
    |");
    ЗапросКодН.УстановитьПараметр("Владелец", Стр12.Номенклатура);
    ЗапросКодН.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр12.ХарактеристикаНоменклатуры);
    ЗапросКодН.УстановитьПараметр("ЕдиницаИзмерения", Стр12.ЕдиницаИзмерения);
    РезультатКодН = ЗапросКодН.Выполнить().Выбрать();
    Пока РезультатКодН.Следующий() Цикл
        НШК = РезультатКодН.Штрихкод;
        Стр12.КодН = НШК - 2000000000000;
    КонецЦикла;
    ЗапросКодМ = Новый Запрос;
    ЗапросКодМ.Текст =("
    | ВЫБРАТЬ
    |    Штрихкоды.Штрихкод
    |ИЗ
    |    РегистрСведений.Штрихкоды КАК Штрихкоды
    |ГДЕ
    |    Штрихкоды.Владелец = &Владелец
    |    И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
    |    И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения
    |");
    ЗапросКодМ.УстановитьПараметр("Владелец", Стр12.Номенклатура);
    ЗапросКодМ.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр12.ХарактеристикаНоменклатуры);
    ЗапросКодМ.УстановитьПараметр("ЕдиницаИзмерения", Стр12.Разбухтовка);
    РезультатКодМ = ЗапросКодМ.Выполнить().Выбрать();
    Пока РезультатКодМ.Следующий() Цикл
        МШК = РезультатКодМ.Штрихкод;
        Стр12.КодМ = МШК - 2000000000000;
        КонецЦикла;

КонецЦикла;
КонецПроцедуры


Может кому пригодится!

sava1 Подменю пользователя
сообщение 20.09.17, 13:39
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Lexveritas @ 20.09.17, 14:00) *
Может кому пригодится!


Никому такое не прогодится :
1. Запрос в цикле - вооще-то можно, если очень хочется.
2. Текста запроса достаточно одного и объявить вне цикла
3. зачем нужны текущиеДанные, если Вы их не используете ?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 10:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!