По теме из базы знаний
Найденные решения
Заменить функцию на эту. При последующих обновлениях не забыть изменять.
&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
НеизвестныеШтрихкоды = Новый Массив;
Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
МассивШтрихкодов = ДанныеШтрикодов;
Иначе
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ДанныеШтрикодов);
КонецЕсли;
СтруктураДанные = Новый Структура();
СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
ОбъектТЧ = Объект.Продукция;
ЭлементТЧ = Элементы.Продукция;
Иначе
ОбъектТЧ = Объект.Запасы;
ЭлементТЧ = Элементы.Запасы;
КонецЕсли;
Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если ДанныеШтрихкода <> Неопределено
И ДанныеШтрихкода.Количество() = 0 Тогда
НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
Иначе
МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
Если МассивСтрокТЧ.Количество() = 0 Тогда
НоваяСтрока = ОбъектТЧ.Добавить();
НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
НоваяСтрока.Количество = ТекШтрихкод.Количество;
НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
ЭлементыТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Иначе
НайденнаяСтрока = МассивСтрокТЧ[0];
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
ЭлементыТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат НеизвестныеШтрихкоды;
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Отменить
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Заменить функцию на эту. При последующих обновлениях не забыть изменять.
&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
НеизвестныеШтрихкоды = Новый Массив;
Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
МассивШтрихкодов = ДанныеШтрикодов;
Иначе
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ДанныеШтрикодов);
КонецЕсли;
СтруктураДанные = Новый Структура();
СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
ОбъектТЧ = Объект.Продукция;
ЭлементТЧ = Элементы.Продукция;
Иначе
ОбъектТЧ = Объект.Запасы;
ЭлементТЧ = Элементы.Запасы;
КонецЕсли;
Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если ДанныеШтрихкода <> Неопределено
И ДанныеШтрихкода.Количество() = 0 Тогда
НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
Иначе
МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
Если МассивСтрокТЧ.Количество() = 0 Тогда
НоваяСтрока = ОбъектТЧ.Добавить();
НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
НоваяСтрока.Количество = ТекШтрихкод.Количество;
НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
ЭлементыТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Иначе
НайденнаяСтрока = МассивСтрокТЧ[0];
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
ЭлементыТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат НеизвестныеШтрихкоды;
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Отменить
(3) spacecraft,
а что материалы и продукция не как не отличается по виду в справочнике. я не знаток УНФ но обычно во всех конфигах отличается по виду номенклатуры Товар Материал, Продукция, Услуга. Соответственно и заполнять нужные табличные части по этому признаку.
а что материалы и продукция не как не отличается по виду в справочнике. я не знаток УНФ но обычно во всех конфигах отличается по виду номенклатуры Товар Материал, Продукция, Услуга. Соответственно и заполнять нужные табличные части по этому признаку.
(8) spacecraft,
так я о том-же что это один справочник но в нем они делятся по виду номенклатуры или типу. в других конфигах так. и там обычно есть проверка что в таблицу например с Услугами не попадет Товар или Производство. А в вашем случае, может быть сосканирован например Материал и он спокойно попадет в активную часть таблицы Производство. То есть другими словами он там не должен быть по своему признаку. И проверок на это у вас нет.
так я о том-же что это один справочник но в нем они делятся по виду номенклатуры или типу. в других конфигах так. и там обычно есть проверка что в таблицу например с Услугами не попадет Товар или Производство. А в вашем случае, может быть сосканирован например Материал и он спокойно попадет в активную часть таблицы Производство. То есть другими словами он там не должен быть по своему признаку. И проверок на это у вас нет.
(16) trade70, да. Нет проверок. Проверка остается за пользователем, который выбирает нужную страницу. Какая страница выбрана - туда и будет заполняться.
Как Вы говорите это более правильно, но и код править больше. И тут сама основная сложность:
Что материал, что продукция имеет тип "Запас". Остальные реквизиты можно как угодно менять и 100% ориентироваться на них тоже нельзя.
Как Вы говорите это более правильно, но и код править больше. И тут сама основная сложность:
Что материал, что продукция имеет тип "Запас". Остальные реквизиты можно как угодно менять и 100% ориентироваться на них тоже нельзя.
Это решение
(20) spacecraft, Управление небольшой фирмой, редакция 1.4 (1.4.2.19) (http://v8.1c.ru/small/)
Copyright © ООО "1C", 2011. Все права защищены
(http://www.1c.ru)
Copyright © ООО "1C", 2011. Все права защищены
(
Это решение
(22) spacecraft,
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
НеизвестныеШтрихкоды = Новый Массив;
Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
МассивШтрихкодов = ДанныеШтрикодов;
Иначе
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ДанныеШтрикодов);
КонецЕсли;
СтруктураДанные = Новый Структура();
СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
ДанныеПоШтрихкодам = ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
Для каждого ТекШтрихкод Из МассивШтрихкодов Цикл
ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если ДанныеШтрихкода.Количество() = 0 Тогда
НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
Иначе
МассивСтрокТЧ = Объект.Запасы.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
Если МассивСтрокТЧ.Количество() = 0 Тогда
НоваяСтрока = Объект.Запасы.Добавить();
НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
НоваяСтрока.Количество = ТекШтрихкод.Количество;
НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
Элементы.Запасы.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Иначе
НайденнаяСтрока = МассивСтрокТЧ[0];
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
Элементы.Запасы.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат НеизвестныеШтрихкоды;
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Это решение
(23) Марат12345, пробуйте так. Надеюсь названия страниц не поменялось.
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
НеизвестныеШтрихкоды = Новый Массив;
Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
МассивШтрихкодов = ДанныеШтрикодов;
Иначе
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ДанныеШтрикодов);
КонецЕсли;
СтруктураДанные = Новый Структура();
СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
ДанныеПоШтрихкодам = ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
ОбъектТЧ = Объект.Продукция;
ЭлементТЧ = Элементы.Продукция;
Иначе
ОбъектТЧ = Объект.Запасы;
ЭлементТЧ = Элементы.Запасы;
КонецЕсли;
Для каждого ТекШтрихкод Из МассивШтрихкодов Цикл
ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если ДанныеШтрихкода.Количество() = 0 Тогда
НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
Иначе
МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
Если МассивСтрокТЧ.Количество() = 0 Тогда
НоваяСтрока = ОбъектТЧ.Добавить();
НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
НоваяСтрока.Количество = ТекШтрихкод.Количество;
НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
ЭлементТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Иначе
НайденнаяСтрока = МассивСтрокТЧ[0];
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
ЭлементТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат НеизвестныеШтрихкоды;
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Это решение
(14) Марат12345, заменить еще раз. Была опечатка.
&НаКлиенте
Функция ЗаполнитьПоДаннымШтрихкодов(ДанныеШтрикодов)
НеизвестныеШтрихкоды = Новый Массив;
Если ТипЗнч(ДанныеШтрикодов) = Тип("Массив") Тогда
МассивШтрихкодов = ДанныеШтрикодов;
Иначе
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ДанныеШтрикодов);
КонецЕсли;
СтруктураДанные = Новый Структура();
СтруктураДанные.Вставить("МассивШтрихкодов", МассивШтрихкодов);
ПолучитьДанныеПоШтрихКодам(СтруктураДанные);
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ТЧПродукция Тогда
ОбъектТЧ = Объект.Продукция;
ЭлементТЧ = Элементы.Продукция;
Иначе
ОбъектТЧ = Объект.Запасы;
ЭлементТЧ = Элементы.Запасы;
КонецЕсли;
Для каждого ТекШтрихкод Из СтруктураДанные.МассивШтрихкодов Цикл
ДанныеШтрихкода = СтруктураДанные.ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если ДанныеШтрихкода <> Неопределено
И ДанныеШтрихкода.Количество() = 0 Тогда
НеизвестныеШтрихкоды.Добавить(ТекШтрихкод);
Иначе
МассивСтрокТЧ = ОбъектТЧ.НайтиСтроки(Новый Структура("Номенклатура,Характеристика,ЕдиницаИзмерения",ДанныеШтрихкода.Номенклатура,ДанныеШтрихкода.Характеристика,ДанныеШтрихкода.ЕдиницаИзмерения));
Если МассивСтрокТЧ.Количество() = 0 Тогда
НоваяСтрока = ОбъектТЧ.Добавить();
НоваяСтрока.Номенклатура = ДанныеШтрихкода.Номенклатура;
НоваяСтрока.Характеристика = ДанныеШтрихкода.Характеристика;
НоваяСтрока.Количество = ТекШтрихкод.Количество;
НоваяСтрока.ЕдиницаИзмерения = ?(ЗначениеЗаполнено(ДанныеШтрихкода.ЕдиницаИзмерения), ДанныеШтрихкода.ЕдиницаИзмерения, ДанныеШтрихкода.СтруктураДанныеНоменклатуры.ЕдиницаИзмерения);
НоваяСтрока.Спецификация = ДанныеШтрихкода.СтруктураДанныеНоменклатуры.Спецификация;
ЭлементТЧ.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Иначе
НайденнаяСтрока = МассивСтрокТЧ[0];
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + ТекШтрихкод.Количество;
ЭлементТЧ.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат НеизвестныеШтрихкоды;
КонецФункции // ЗаполнитьПоДаннымШтрихкодов()
Показать
Это решение
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот