Имя: Пароль:
1C
1С v8
Штрих код УТ 10,3
,
0 Polzovatel
 
23.11.12
12:00
Подскажите как правильно при создании номенклатуры при проведение автоматом присваивать штрих код не заходя во вкладку ШК.
Делаю след образом в процедуру При записи добавляю след код
Процедура ПриЗаписи(Отказ)
Если НЕ ЗначениеЗаполнено(ЭлементыФормы.Штрихкоды.ТекущиеДанные) Тогда
       ЭлементыФормы.Штрихкоды.ДобавитьСтроку();
   КонецЕсли;    
КонецПроцедуры // ПриЗаписи()

Если создаешь номенклатуру то нормально отрабатывает но если зайти и редактировать то он опять добавляет еще 1 ШК. как прописать условие есть уже есть запись то не создавать шк.
1 Godofsin
 
23.11.12
12:02
на количество() проверяй
2 Polzovatel
 
23.11.12
12:05
т.е. вместо ЗначениеЗаполнено() количество() ?
3 Godofsin
 
23.11.12
12:15
Если ЭлементыФормы.Штрихкоды.Количество() = 0 тогда
4 Polzovatel
 
23.11.12
12:40
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1552)}: Метод объекта не обнаружен (Количество)
   Если ЭлементыФормы.Штрихкоды.Количество()=0 Тогда
5 SherifSP
 
23.11.12
12:42
(4) Не слушай их, это не ТЗ, не массив, не дерево значений
6 SherifSP
 
23.11.12
12:43
(4) Отладчиком пользуйся, там можно все
7 Polzovatel
 
23.11.12
12:49
Так чем проверять есть ли записи в табличном поле.
8 alextom81
 
23.11.12
12:50
Запросом проверяй записи РС "Штрихкоды" - и если записи есть - не записывай. Выбери в синтаксис помошнике метод СрезПоследних для регистров сведений - и кури до посинения. Только записи должны быть активными. И не добавить строку надо, а сформировать штрих код.
9 alextom81
 
23.11.12
12:54
И пихай в подписку, а не в модуль
10 alextom81
 
23.11.12
13:02
Пардон, он не периодический. тогда просто записи проверяй
11 nikitaclanbox
 
23.11.12
13:04
попробуй так:
Если ЭтоНовый() = Истина Тогда
       ЭлементыФормы.Штрихкоды.ДобавитьСтроку();
КонецЕсли;
12 alextom81
 
23.11.12
13:27
Балин.
1. Создай дополнительныймодуль
2. Запихни в него такую процедуру
Процедура СформироватьШтрихКод(Источник) Экспорт
   
   Если НЕ Источник.ВесовойТовар И
       НЕ Источник.ВестиУчетПоХарактеристикам Тогда
           Запрос = Новый Запрос("ВЫБРАТЬ
           |    Штрихкоды.Штрихкод
           |ИЗ
           |    РегистрСведений.Штрихкоды КАК Штрихкоды
           |ГДЕ
           |    Штрихкоды.Владелец = &Владелец
           |    И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения
           |    И Штрихкоды.Качество = &Качество");
           Запрос.УстановитьПараметр("Владелец", Источник);
           Запрос.УстановитьПараметр("ЕдиницаИзмерения", Источник.ЕдиницаХраненияОстатков);
           Запрос.УстановитьПараметр("Качество", Справочники.Качество.Новый);
           Если Запрос.Выполнить().Пустой() Тогда
               РСШтрихкоды = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
               РСШтрихкоды.Активность = Истина;
               РСШтрихкоды.Владелец = Источник;
               РСШтрихкоды.ЕдиницаИзмерения = Источник.ЕдиницаХраненияОстатков;
               РСШтрихкоды.Качество = Справочники.Качество.Новый;
               РСШтрихкоды.ТипШтрихкода     = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
               РСШтрихкоды.Штрихкод = РаботаСТорговымОборудованием.СформироватьШтрихКод();
           КонецЕсли;
   КонецЕсли;
           
КонецПроцедуры

Всё. Добавь подписку "ЗаписиСправочников" - назначь номенклатуре эту подписку при записи (возможно придётся проверять на ЭтоНовый());

И EAN-13 - е будут генерироваться автоматически
13 alextom81
 
23.11.12
13:28
Попытка
РСШтрихкоды.Записать();
Исключение
// Тут можно оповестить пользователя
КонецПопытки;


Этот код ещё надо добавить, чтобы запись появилась
14 Polzovatel
 
23.11.12
13:42
Вместо шк используем код номенклатуры. Просто вместо шк записывает код номенклатуры (это реализовано и работает) чтобы ускорить ввод номенклатуры и просили чтобы не заходя во вкладку шк а при проведении номенклатуры добавлялись шк.
15 Polzovatel
 
23.11.12
13:44
как в модуле формы номенклатуры При записи вызвать Процедура СформироватьШтрихКод(Источник) Экспорт... добавил в Общий модуль "СформироватьШтрихКодНовый"?)
16 alextom81
 
23.11.12
14:39
Примерно так, и плюс к этому надо добавить "подписку для события" на событие при записи
17 alextom81
 
23.11.12
14:42
Штрих-код, понятно тогда этот вызов

РСШтрихкоды.Штрихкод = РаботаСТорговымОборудованием.СформироватьШтрихКод();

Меняйте на вашу процедуру формирования. Конкретную вашу проблемы исправит запрос на проверку существования штрихкода, я лишь полностью описал метод, каким пошёл бы сам.
18 Polzovatel
 
23.11.12
14:47
Спасибо большое оч помогли... правда не работает пока еще но есть куда двигаться)
19 Polzovatel
 
23.11.12
16:18
Решил след образом
Процедура ПриЗаписи(Отказ)
   ТекущаяСтрока = ЭлементыФормы.Штрихкоды.ТекущиеДанные;
   
   Если ТекущаяСтрока = Неопределено Тогда

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

       Попытка
           ТекЗапись.Записать();
       Исключение
       КонецПопытки;
   Иначе
       
       ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
       ЗаполнитьЗначенияСвойств(ТекЗапись, ТекущаяСтрока);
       ТекЗапись.Прочитать();
         ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
       ТекЗапись.Штрихкод     = ЭлементыФормы.Код.Значение;

       Попытка
           ТекЗапись.Записать();
       Исключение
       КонецПопытки;
   КонецЕсли;
КонецПроцедуры // ПриЗаписи()

Подскажите как установить курсор во вкладке ШК на первую запись.
20 alextom81
 
23.11.12
20:34
1. Не изобретай велосипед - не надо позиционироваться на записи регистра сведений, выводимой в странице элемента, которая на самом деле является списком, выводимым из регистра сведений - посмотри процедуру открытия формы элемента. Меняй набор записей регистра непосредственно, а не элемент формы текущие данные - заведомо неправильный ход. Взяли вы из всей полезной информации, которую я дал, лишь "попытку". Смотрите - в форме элемента на закладке "штрихкоды" у вас - записи регистра сведений. Ими и необходимо манипулировать - не трогайте элемент формы, не принадлежащий элементу. Он сам обновиться после всех необходимых действий с записями регистров.

1. Справочник номенклатура является владельцем для регистра сведений "штрихкоды". Регистр сведений ведёт контроль уникальности по полям "штрихкод, тип, единицаизмерения,качество, характеристика". В форме справочника у вас лишь выводиться информация о том, какие записи принадлежат вашей номенклатуре. Читайте в СП про регистра сведений до просветления.