Не все реквизиты записываются в справочнике
Всем привет, программно записываю данные в справочник. Данные в отладчике вижу, а в справочнике после записи их почему то нет
Вот кусок кода
Вот кусок кода
НовыйШтрихкодыУпаковокТоваров = СпрШтрихкодыУпаковокТоваров.СоздатьЭлемент();
НовыйШтрихкодыУпаковокТоваров.ДатаУпаковки = ДатУп;
НовыйШтрихкодыУпаковокТоваров.ЗначениеШтрихкода = ШтрихКодПоиск;
НовыйШтрихкодыУпаковокТоваров.Номенклатура = СсылкаНаименование; // Записываем ссылку на номенклатуру
НовыйШтрихкодыУпаковокТоваров.Количество = КолВо;
//НовыйШтрихкодыУпаковокТоваров.Количество = 2.000; // Потому что в наборе всегда 2-ве позиции
Индекс=0;
Пока КлючИЗначение.Значение.Количество()>Индекс Цикл
// Из массива QR кодов вытаскиваю данные и записываю в справочник
QR_код=КлючИЗначение.Значение[Индекс];
Сообщить(" QR код: " +QR_код);
СтруктураШтрихКода=РазборКодаМаркировкиИССлужебный.РазобратьКодМаркировки(QR_код, Неопределено, Неопределено,Неопределено, Неопределено);
//Заполняю тип штрих кода
НовыйШтрихкодыУпаковокТоваров.ТипШтрихкода = СтруктураШтрихКода.ТипШтрихкода;
//Заполняю ТипУпаковки
Если Число(КолВо)>1 Тогда
НовыйШтрихкодыУпаковокТоваров.ТипУпаковки = Перечисления.ТипыУпаковок.МонотоварнаяУпаковка; // МаркированныйТовар
Иначе
НовыйШтрихкодыУпаковокТоваров.ТипУпаковки=Перечисления.ТипыУпаковок.МаркированныйТовар;
КонецЕсли;
// Записываю в ТЧ
НоваяСтрокаТЧ = НовыйШтрихкодыУпаковокТоваров.ВложенныеШтрихкоды.Добавить();
НоваяСтрокаТЧ.Штрихкод = СтруктураШтрихКода.НормализованныйКодМаркировки;
Индекс=Индекс+1;
КонецЦикла;
НовыйШтрихкодыУпаковокТоваров.Записать();
КонецЕсли;
ПоказатьПрикрепленные файлы:


По теме из базы знаний
- Заполнение значениями по умолчанию для документов и справочников (универсальный механизм)
- Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы)
- Перенос документов из УНФ в Бухгалтерию 3.0
- Двусторонний обмен с поставщиком через интернет-магазин для реализации товаров с ответственного хранения (с 01.02.2020 "Партии" не используются)
- Заполнение дополнительных реквизитов в модуле на сервере, в правилах КД 2.0, в модуле внешней обработки
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Ну ты же явно в коде присваиваешь количество.
Видимо у тебя в КолВо 0.
Варианта 2:
1) На форме выводится не реквизит Количество элемента справочника, а что-то другое.
2) В модуле объекта в ПередЗаписью реквизит Количество перезаполняется.
НовыйШтрихкодыУпаковокТоваров.Количество = КолВо;
Видимо у тебя в КолВо 0.
Варианта 2:
1) На форме выводится не реквизит Количество элемента справочника, а что-то другое.
2) В модуле объекта в ПередЗаписью реквизит Количество перезаполняется.
(6) Я с этими QR кодами первый раз сталкиваюсь. Мне сказали, что имеется палет и у него есть код который я записываю как на картинке. В палете имеются QR коды (продукция) которые уникальные и я не могу их записать. На сколько я понял вы советуете создать справочник с номером QR кода и в него прописать номер палета и в ТЧ записать этот же QR код, а у меня несколько QR кодов (продукция). То есть нужно сначала создать Справочники с номерами QR кодов, а затем в каждом этом справочнике одинаково заполнить табличную часть. Что то не правильно я понял
Прикрепленные файлы:


(10) Нет.
1. Создаешь элемент справочника для палета по коду как на картинке. Не записываешь.
2. По каждому вложенному коду создаешь новый элемент справочника (с этим вложенным кодом, очевидно), ТЧ у него НЕ заполняешь. Записываешь элемент для вложенного кода. Добавляешь ссылку в ТЧ элемента из п.1.
3. Записываешь элемент из п.1.
1. Создаешь элемент справочника для палета по коду как на картинке. Не записываешь.
2. По каждому вложенному коду создаешь новый элемент справочника (с этим вложенным кодом, очевидно), ТЧ у него НЕ заполняешь. Записываешь элемент для вложенного кода. Добавляешь ссылку в ТЧ элемента из п.1.
3. Записываешь элемент из п.1.
(11) Правильно я понимаю. Например если у меня в 1-ом палете 2-ве позиции (QR-коды), тогда я должне создать 3-и справочники.
1 Справочник записываю номер палета
2 Справочник Создаю с 1-м QR кодом - при чем это будет код справочника. Сохраняю
3 Справочник Создаю со 2-м QR кодом - при чем это будет код справочника. Сохраняю
Заполняю табличную часть 1 Справочника с 1-м QR кодом и 2-м QR кодом и Сохраняю
1 Справочник записываю номер палета
2 Справочник Создаю с 1-м QR кодом - при чем это будет код справочника. Сохраняю
3 Справочник Создаю со 2-м QR кодом - при чем это будет код справочника. Сохраняю
Заполняю табличную часть 1 Справочника с 1-м QR кодом и 2-м QR кодом и Сохраняю
(7) Посмотрел там нет записи в реквизит количество
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если Не (ДополнительныеСвойства.Свойство("НеРассчитыватьКоличествоВложенныхШтрихкодов")
И ДополнительныеСвойства.НеРассчитыватьКоличествоВложенныхШтрихкодов) Тогда
РассчитатьКоличествоВложенныхШтрихкодов();
КонецЕсли;
Если Не (ДополнительныеСвойства.Свойство("НеРассчитыватьХешСумму")
И ДополнительныеСвойства.НеРассчитыватьХешСумму) Тогда
Если ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар Тогда
ХешСумма = "";
Иначе
ДанныеДляВычисления = Справочники.ШтрихкодыУпаковокТоваров.ДанныеДляВычисленияХешСуммы(ЭтотОбъект);
ХешСумма = Справочники.ШтрихкодыУпаковокТоваров.ХешСуммаСодержимогоУпаковки(ДанныеДляВычисления);
КонецЕсли;
КонецЕсли;
ХешСуммаЗначенияШтрихкода = ОбщегоНазначенияИС.ХэшСуммаСтроки(ЗначениеШтрихкода);
ЗаполнениеСлужебныхПолейДляGS1();
ИнтеграцияИСПереопределяемый.ПередЗаписьюОбъекта(ЭтотОбъект, Отказ);
КонецПроцедуры
Показать
(8)
Ох, чел...
Вот тут смотри.
Название процедуры как бы намекает что в ней делается.
Upd. Если реквизит Количество это количество вложенных штрихкодов, то если ты будешь заполнять правильно реквизит Штрихкод в ТЧ, все будет работать правильно - количество будет верным.
А раз у тебя сейчас штрихкод в ТЧ пустой - то и количество вложенных штрихкодов = 0.
Посмотрел там нет записи в реквизит количество
Ох, чел...
РассчитатьКоличествоВложенныхШтрихкодов();
Вот тут смотри.
Название процедуры как бы намекает что в ней делается.
Upd. Если реквизит Количество это количество вложенных штрихкодов, то если ты будешь заполнять правильно реквизит Штрихкод в ТЧ, все будет работать правильно - количество будет верным.
А раз у тебя сейчас штрихкод в ТЧ пустой - то и количество вложенных штрихкодов = 0.
(9) Табличная часть с Штрих кодами заполняется корректно, а количество не прописывается. Я с этой процедурой разобраться не могу
я не понимаю что и как в этих строчках происходит
тем более у меня
Перезаписывается количество здесь, но почему так не понимаю
Процедура РассчитатьКоличествоВложенныхШтрихкодов() Экспорт
Итоги = Новый Структура("УчетноеКоличество, ТолькоШтучнаяПродукция, КоличествоПотребительскихУпаковок", 0, Истина, 0);
Если ВложенныеШтрихкоды.Количество() Тогда
МассивВложенныхШтрихкодов = ВложенныеШтрихкоды.Выгрузить(, "Штрихкод").ВыгрузитьКолонку("Штрихкод");
Результат = ШтрихкодированиеИС.ВложенныеШтрихкодыУпаковок(
МассивВложенныхШтрихкодов,
ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(ЭтотОбъект));
Для Каждого СтрокаДерева Из Результат.ДеревоУпаковок.Строки Цикл
ПроизвольнаяЕдиницаУчета = ЗначениеЗаполнено(СтрокаДерева.Номенклатура) И СтрокаДерева.ПроизвольнаяЕдиницаУчета;
Итоги.ТолькоШтучнаяПродукция = Итоги.ТолькоШтучнаяПродукция И Не ПроизвольнаяЕдиницаУчета;
Если СтрокаДерева.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар Тогда
Если ПроизвольнаяЕдиницаУчета Тогда
Итоги.УчетноеКоличество = Итоги.УчетноеКоличество + СтрокаДерева.КоличествоПоДаннымИБ;
Итоги.КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок + 1;
Иначе
Итоги.УчетноеКоличество = Итоги.УчетноеКоличество + 1;
Итоги.КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок + 1;
КонецЕсли;
Иначе
Если ПроизвольнаяЕдиницаУчета Тогда
Итоги.УчетноеКоличество = Итоги.УчетноеКоличество + СтрокаДерева.КоличествоПоДаннымИБ;
Итоги.КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок + СтрокаДерева.КоличествоПотребительскихУпаковокПоДаннымИБ;
Иначе
Итоги.УчетноеКоличество = Итоги.УчетноеКоличество + СтрокаДерева.КоличествоПотребительскихУпаковокПоДаннымИБ;
Итоги.КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок + СтрокаДерева.КоличествоПотребительскихУпаковокПоДаннымИБ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Итоги.ТолькоШтучнаяПродукция Тогда
Количество = Итоги.КоличествоПотребительскихУпаковок;
КоличествоПотребительскихУпаковок = 0;
Иначе
Количество = Итоги.УчетноеКоличество;
КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок;
КонецЕсли;
КонецЕсли;
Показатья не понимаю что и как в этих строчках происходит
Итоги.УчетноеКоличество = Итоги.УчетноеКоличество + СтрокаДерева.КоличествоПотребительскихУпаковокПоДаннымИБ;
Итоги.КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок + СтрокаДерева.КоличествоПотребительскихУпаковокПоДаннымИБ;
тем более у меня
ВложенныеШтрихкоды.Количество()=2
Перезаписывается количество здесь, но почему так не понимаю
Если Итоги.ТолькоШтучнаяПродукция Тогда
Количество = Итоги.КоличествоПотребительскихУпаковок;
КоличествоПотребительскихУпаковок = 0;
Иначе
Количество = Итоги.УчетноеКоличество;
КоличествоПотребительскихУпаковок = Итоги.КоличествоПотребительскихУпаковок;
КонецЕсли;
Где то в функции заполняется переменная КоличествоПотребительскихУпаковокПоДаннымИБ, не могу найти. Точку останова ставил и каждый раз когда проваливался в функцию через поиск искал не находит почему то. Может подскажите хитрости какие ни будь.
Результат = ШтрихкодированиеИС.ВложенныеШтрихкодыУпаковок(
МассивВложенныхШтрихкодов,
ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(ЭтотОбъект));
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот