8.х Проблема с подбором при поступлении товаров

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Элио, 5 июл 2013.

  1. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Уважаемые форумчане, помогите решить проблему.
    Поставил 1С 8.2(8.2.17.169) УТ редакция 10.3 (10.3.21.2), номенклатуру , цены розничные и закупочные перенес с помощю внешней обработки загрузка данных из табличного документа. Все как бы хорошо. Но проблема в одном при реализации товара подбор нормальные каждый товар номенклатуры отдельно подбирается и отражается в подобранных, а при подборе поступления все подобранные товары прибавляются к первому подобранному наименованию, пусть это хоть в шт или в кг. А если делать сначало заказ поставшику то в окне заказа все нормально. Буду рад если поможете.

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      58,7 КБ
      Просмотров:
      23
    • 2.jpg
      2.jpg
      Размер файла:
      61,1 КБ
      Просмотров:
      27
    • 3.jpg
      3.jpg
      Размер файла:
      60 КБ
      Просмотров:
      33
    • 4.jpg
      4.jpg
      Размер файла:
      62,8 КБ
      Просмотров:
      28
    • 5.jpg
      5.jpg
      Размер файла:
      60,2 КБ
      Просмотров:
      32
    • 6.jpg
      6.jpg
      Размер файла:
      63 КБ
      Просмотров:
      24
    • 7.jpg
      7.jpg
      Размер файла:
      60,3 КБ
      Просмотров:
      21
    • 8.jpg
      8.jpg
      Размер файла:
      60,3 КБ
      Просмотров:
      15
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    1. Обновите на 10.3.22
    2. Проверьте в модуле формы документа процедуру, она должна совпадать один в один, это та процедура которая конкретно заполняет товар в табличную часть документа, у каждой формы документа она своя. Убедитесь что конфигурация в частности и эта процедура типовые, ибо на типовой 10.3.22 проверил, проблем нет
    Код:
    Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора)Экспорт
    Перем СпособЗаполненияЦен, ВалютаЦены, ЕстьСкладВТабличнойЧасти;
    Перем Номенклатура, ЕдиницаИзмерения, Количество, КоличествоМест, Цена, Характеристика, Серия;
    Если РаботаСДиалогами.ПроверитьЧтоКачествоВСтруктуреПодбораНеУдовлетворяетУсловиямПодбора(ЗначениеВыбора,
    Истина) Тогда
    Возврат;
    КонецЕсли;
    // Получим параметры подбора из структуры подбора.
    ЗначениеВыбора.Свойство("СпособЗаполненияЦен", СпособЗаполненияЦен);
    ЗначениеВыбора.Свойство("ВалютаЦены"		 , ВалютаЦены);
    ЗначениеВыбора.Свойство("Номенклатура"    , Номенклатура);
    ЗначениеВыбора.Свойство("ЕдиницаИзмерения", ЕдиницаИзмерения);
    ЗначениеВыбора.Свойство("Количество"	  , Количество);
    ЗначениеВыбора.Свойство("КоличествоМест"  , КоличествоМест);
    ЗначениеВыбора.Свойство("Цена"		    , Цена);
    ЗначениеВыбора.Свойство("Характеристика"  , Характеристика);
    ЗначениеВыбора.Свойство("Серия"		   , Серия);
    Если НЕ ЗначениеВыбора.Свойство("ЕстьСкладВТабличнойЧасти", ЕстьСкладВТабличнойЧасти) Тогда
    ЕстьСкладВТабличнойЧасти = Ложь;
    КонецЕсли;
    Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара )
    И Номенклатура.Услуга Тогда
    Предупреждение("В данном контексте услуги не подбираются!");
    Возврат;
    ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
    Предупреждение("В данном контексте товары не подбираются!");
    Возврат;
    КонецЕсли;
    // Ищем выбранную позицию в таблице подобранной номенклатуры.
    //  Если найдем - увеличим количество; не найдем - добавим новую строку.
    СтруктураОтбора = Новый Структура();
    Если ТабличнаяЧасть = Товары Тогда
    СтруктураОтбора.Вставить("ЕдиницаИзмерения", ЕдиницаИзмерения);
    СтруктураОтбора.Вставить("ХарактеристикаНоменклатуры", Характеристика);
    СтруктураОтбора.Вставить("СерияНоменклатуры"		 , Серия);
    Иначе
    СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
    КонецЕсли;
    Если ЕстьСкладВТабличнойЧасти
    И ТабличнаяЧасть <> Услуги
    И ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад
    И ЗначениеЗаполнено(СкладОрдер) Тогда
    СтруктураОтбора.Вставить("Склад", СкладОрдер);
    КонецЕсли;
    СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
    Если СтрокаТабличнойЧасти <> Неопределено Тогда
    Если ТабличнаяЧасть = Товары Тогда
    // Нашли, увеличиваем количество в первой найденной строке.
    СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
    Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПоставщику)
    И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
    // Нашли, увеличиваем количество в первой найденной строке.
    СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
    Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПоставщику)
    И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    
    ИначеЕсли ТабличнаяЧасть = Услуги Тогда
    // Нашли, увеличиваем количество в первой найденной строке.
    СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
    Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЗаказПоставщику)
    И ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    КонецЕсли;
    Иначе
    // Не нашли - добавляем новую строку.
    СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
    СтрокаТабличнойЧасти.Номенклатура	 = Номенклатура;
    Если ТабличнаяЧасть = Товары Тогда
    СтрокаТабличнойЧасти.Количество	   = Количество;
    СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
    СтрокаТабличнойЧасти.Коэффициент	  = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
    СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;
    СтрокаТабличнойЧасти.СерияНоменклатуры		  = Серия;
    Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    Если Не УправлениеЗаказами.ИспользоватьВнутренниеЗаказы() Тогда
    СтрокаТабличнойЧасти.Заказ = Документы.ЗаказПокупателя.ПустаяСсылка();
    КонецЕсли;
    // Заполняем реквизиты табличной части.
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Приобретение");
    // Пересчитаем цену в валюту документа.
    Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
    СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
    СпособЗаполненияЦен,
    ТипЦен.ЦенаВключаетНДС,
    УчитыватьНДС,
    СуммаВключаетНДС,
    УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));
    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, Ложь);
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
    СтрокаТабличнойЧасти.Количество = Количество;
    Если Не УправлениеЗаказами.ИспользоватьВнутренниеЗаказы() Тогда
    СтрокаТабличнойЧасти.Заказ = Документы.ЗаказПокупателя.ПустаяСсылка();
    КонецЕсли;
    Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    
    // Пересчитаем цену в валюту документа.
    Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
    // Если цену заполнили из регистра, то ее надо пересчитывать по флагам налогообложения.
    // Считаем, что оценочную стоимость возвратной тары всегда задают с НДС
    // ставки берутся из номенклатуры.
    СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
    СпособЗаполненияЦен,
    ТипЦен.ЦенаВключаетНДС,
    УчитыватьНДС,
    Истина,
    УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.Номенклатура.СтавкаНДС));
    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ИначеЕсли ТабличнаяЧасть = Услуги Тогда
    СтрокаТабличнойЧасти.Количество = Количество;
    Если ТипЗнч(Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
    СтрокаТабличнойЧасти.ЗаказПоставщику = Сделка;
    КонецЕсли;
    // Заполняем реквизиты табличной части.
    ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, "Приобретение");
    // Пересчитаем цену в валюту документа.
    Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);
    СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
    СпособЗаполненияЦен,
    ТипЦен.ЦенаВключаетНДС,
    УчитыватьНДС,
    СуммаВключаетНДС,
    УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));
    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    
    СтрокаТабличнойЧасти.СтатьяЗатрат = СтрокаТабличнойЧасти.Номенклатура.СтатьяЗатрат;
    СтрокаТабличнойЧасти.НоменклатурнаяГруппа = СтрокаТабличнойЧасти.Номенклатура.НоменклатурнаяГруппаЗатрат;
    КонецЕсли;
    КонецЕсли; // СтрокаТабличнойЧасти <> Неопределено
    Если ТабличнаяЧасть <> Услуги Тогда
    ОбработкаТабличныхЧастей.ЗаполнитьСкладИОрдерТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    КонецЕсли;
    ТабличнаяЧастьИмя = ?(ТабличнаяЧасть = Товары, "Товары", "ВозвратнаяТара");
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Количество"];
    КонецПроцедуры // ОбработкаПодбора()
    Хотя, нужно мне еще самому глянуть вот этот участок кода

    Такое ощещение что сама номенклатура не участвует в поиске, а только единица характеристика и серия
  3. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Спасибо за ответ.Буду пробовать. А вот обновление где бы раздобыть.
    Я цены для контрагентов установил только одному контрагенту поставшику. Остальные нет еще .Вот что получается если подбор делать от других поставшиков то такой проблы нету, но там цены не выставляются. Такая проблема только вот с этим контрагентом на которого установлены цены. вОТ ЕЩЕ БЫВАЕТ ЧТО ОН начинает три строки добавлять нормально а потом заедает и только на последную отобранную
  4. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Не могу найти 10.3.22 можно на 10.3.23?
  5. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Проверил все , совпадает прям на 100%
  6. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Обновил и конфигурацию на 10.3.23 платформу на 8.2.18.104. Проблема не решена.
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Посмотрел код как и обещал, там интересно, у Вас скорее всего с единицами измерения проблемы. Справочник "Единицы измерения" подчинен номенклатуре. При подборе выполняется поиск совпадающих единиц измерения и если база была закосячена, то программа будет считать что это один и тот же товар, ибо единица измерения общая. Могли похерить, например, обработкой поиск и замена дублей, где при сравнении наименование одинаковое, а владелец на самом деле разный. Такая же проблема могла возникнуть при переносах данных (не типовых) и программно подставлять найденную единицу измерения при этом не учитывая того факта что данная единица не принадлежит данному товару. Сравните владельцев единиц измерения того товара который у Вас складывается, все таки думаю там один и тот же владелец.
  8. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Уважаемы модератор доброго времени суток. Вы обсалютно правы. Я попробовал создать несколько новых наименований в ручную, так все они при подборе нормално подбираются. И еще одно кажется все получается после назначения цен номенклатуры контрагента той же обработкой с ИТС диска. Так как переношу из табличного документа (прайса) номенклатуру и пока не задана цена номенклатуры контрагента тоже нормально подбираются и встают в отдельные строки , но без цены естейственно. а как только тойже обработкой проставлю цены тех же наименований товаров начинается пробла таже самая.
    Если знаете выход может напишете . И еще скажите пожалуйста как и где посмотреть владельца единиц?
    Примного благодарен за ваш ответ.
  9. TopicStarter Overlay
    Элио
    Offline

    Элио Опытный в 1С

    Регистрация:
    4 июл 2013
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Ура! Проблема решена. Спасибо уважаемый модератор за помощ и подсказку по поводу владельца единицы. На сайте инфостарт по ссылке ____http://forum.infostart.ru/forum14/topic9862/ нашел такую же тему и догодался там ребята и код написали который нужно было вставить при переносе наменклатуры из табличного документа , код вписал как и рекомендуют в настройках обработчика вкладку "События" в закладку "ПриЗаписи" , .Вот и собственно код
    Код:
    Объект.ОбменДанными.Загрузка = Истина;
    НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
    
    НовыйОбъект.Наименование = "шт";
    НовыйОбъект.Коэффициент = 1;
    НовыйОбъект.Владелец = Объект.Ссылка;
    НовыйОбъект.Записать();
    Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка;
    Объект.ЕдиницаДляОтчетов = НовыйОбъект.Ссылка;

    Еще раз огромное спасибо и низкий поклон.
  10. kotlt
    Offline

    kotlt

    Регистрация:
    11 янв 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    У меня такая ситуация была когда в документе Реализация в табличной расти Товары нажимаешь Подбор, потом выбираешь табличную часть Услуги и пытаешься добавить услугу из открытого Подбора. Нужно закрыть окно Подбора и открыть снова, находясь в табличной части Услуги.

Поделиться этой страницей