Заказ Поставщику и Аналоги Номенклатуры

1. Самоделкин 2 30.12.14 22:43 Сейчас в теме
Всех с Наступающим Новым Годом!!!!!!!!!

Помогите реализовать идею (скорее всего это уже кто-то делал): у Покупателей и Поставщиков редко Наименование и Артикул совпадают, хотелось бы при выводе на печать Заказа Поставщику получать Наименование и Артикул Поставщика.
К примеру: у нас Наименование - 1117 Бампер Зад. Зав., Артикул - 1117-2804015, а на печать выводилось бы, как у Поставщика, Наименование - Задний Бампер ВАЗ 1117, Артикул - 111700-2804015-00.

А если нет Аналога, тогда выводилось бы наши Наименование и Артикул.

    ТекНоменклатура = ТекущийЭлемент(); 
	
    ТекстЗапросаПоставщикаНоменклатуры =
	"
    |Аналог = Справочник.Аналоги.ТекущийЭлемент;
    |Номенклатура = Справочник.Аналоги.Владелец;
    |НаименованиеПоставщика = Справочник.Аналоги.Наименование;
    |Артикул = Справочник.Аналоги.ИдентификаторВКаталоге;
    |Поставщик = Справочник.Аналоги.Каталог.ВладелецКаталога;
    |Условие(Номенклатура = ТекНоменклатура);
    |Группировка Аналог Без групп;
    |"
    ; 
	
    ЗапросПоставщикаНоменклатуры = СоздатьОбъект("Запрос");
    Если ЗапросПоставщикаНоменклатуры.Выполнить(ТекстЗапросаПоставщикаНоменклатуры) = 1 Тогда 
     
        Поставщик = ЗапросПоставщикаНоменклатуры.Поставщик;
        НаименованиеПоставщика = ЗапросПоставщикаНоменклатуры.НаименованиеПоставщика;
        Артикул = ЗапросПоставщикаНоменклатуры.Артикул;
      
    КонецЕсли; 
Показать


Как это связать с выбранным Поставщиком и вывести на печать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. vcv 89 31.12.14 09:29 Сейчас в теме
(1) Самоделкин, Думаю, можно сделать примерно так.
Во-первых, перед печатью подготовить информацию об аналогах номенклатуры
// Готовим список номенклатуры документа для отбора аналогов
ТаблицаМнЧ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТаблицаМнЧ,"Номенклатура");
ТаблицаМнЧ.Свернуть("Номенклатура","");
СписокНоменклатуры = СоздатьОбъект("СписокЗначений");
ТаблицаМнЧ.Выгрузить(СписокНоменклатуры,,,"Номенклатура");
// Получаем запросом аналоги номенклатуры
ТекстЗапроса = "
Номенклатура = Справочник.Аналоги.Владелец;
Аналог = Справочник.Аналоги.ТекущийЭлемент;
Поставщик = Справочник.Аналоги.Каталог.ВладелецКаталога;
Группировка Номенклатура без групп;
Группировка Аналог без групп;
Условие(Номенклатура в СписокНоменклатуры);
Условие(Поставщик = Контрагент);";
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
ТаблицаАналогов = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТаблицаАналогов,0,0);
Показать

Теперь эту таблицу аналогов можно использовать для того, что бы подменить номенклатуру на аналог при печати. В цикле печати табличной части делаем где-то так:
Строчка = 0;
Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
  // Аналог найден
  Аналог = ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
  ПечНоменклатура = Аналог.Наименование;
Иначе
  // аналога нет
  ПечНоменклатура = Номенклатура.Наименование;
КонецЕсли;
Показать

P.S. На сколько помнится, у вас ТиС. Но где в вашем ТиС артикул поставщика, не знаю. Его уж сами вставляйте.
P.P.S. Писал, естественно, сразу в браузере. И не отвечаю за работоспособность, моральный ущерб и курс доллара.
4. Самоделкин 2 31.12.14 09:55 Сейчас в теме
(3) vcv, спасибо за помощь!
Желаю Вам встретить Новый Год весело!
5. Самоделкин 2 01.01.15 19:14 Сейчас в теме
(3) vcv, все сделал, как Вы рекомендовали; 1С начала ругаться на ТаблицаАналогов (перед циклом), об'явил Перем - начала ругаться "Значение не представляет агрегатный об'ект (НайтиЗначение).
Что я не правильно делаю?
Код выложить не могу, т.к. интернет только на телефоне.
2. dyuha 52 30.12.14 23:24 Сейчас в теме
В типовых есть справочник Номенклатура Контрагентов и регистр соответствия Номенклатуры и Номоменклатуры Контрагентов
6. vcv 89 01.01.15 20:06 Сейчас в теме
Значит первый кусок кода и второй находится в разных процедурах. Можно объявить "Перем ТаблицаАналогов;" в начале модуля.
8. Самоделкин 2 01.01.15 20:12 Сейчас в теме
(6) vcv, пока писал - Вы ответили, действительно, кода закинул в разные Процедуры - собрал в одну - ошибок нет, но на печать выводит только наше Наименование.
9. vcv 89 02.01.15 10:34 Сейчас в теме
(8) Самоделкин, А в печатной форме что стоит в колонке номенклатура? Номенклатура или ПечНоменклатура, которая делается кодом в (3) ?
Если более-менее типовой документ, печать табличной части выглядит так:
	НомСтроки = 0;
	ПечКоличествоСтрок = 0;
	ТаблЧасть.ВыбратьСтроки();
	Пока ТаблЧасть.ПолучитьСтроку() = 1 Цикл
		НомСтроки = НомСтроки + 1;
		ИсхТабл.ВывестиСекцию("Строка");
		ПечКоличествоСтрок = ПечКоличествоСтрок + 1;
	КонецЦикла;
Показать

И в таблице в колонке Товар стоит формула
СокрЛП(ТаблЧасть.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(ТаблЧасть.Номенклатура.Артикул), "")

Тогда кусок печати табличной части должен выглядеть примерно так:
	НомСтроки = 0;
	ПечКоличествоСтрок = 0;
	ТаблЧасть.ВыбратьСтроки();
	Пока ТаблЧасть.ПолучитьСтроку() = 1 Цикл
		НомСтроки = НомСтроки + 1;
		Строчка = 0;
		Если ТаблицаАналогов.НайтиЗначение(ТаблЧасть.Номенклатура,Строчка,"Номенклатура") = 1 Тогда
			// Аналог найден
			Аналог = ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
			ПечНоменклатура = СокрЛП(Аналог.Наименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Аналог.ИдентификаторВКаталоге), "");
		Иначе
			// аналога нет
			ПечНоменклатура = СокрЛП(ТаблЧасть.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(ТаблЧасть.Номенклатура.Артикул), "");
		КонецЕсли;
		ИсхТабл.ВывестиСекцию("Строка");
		ПечКоличествоСтрок = ПечКоличествоСтрок + 1;
	КонецЦикла;
Показать

И в печатной форме заменить формулу в колонке Товар на ПечНоменклатура.
10. Самоделкин 2 02.01.15 12:04 Сейчас в теме
(9) vcv, документ стандартный, в таблице ТаблЧасть.Номенклатура.Наименование.
Если сделать как Вы предлагаете, в таблицу выводит по интересному.
Доберусь до интернета - выложу код и скрин, что получается.
11. Самоделкин 2 02.01.15 15:32 Сейчас в теме
(9) vcv, добрался до интернета.
ТаблЧасть.Свернуть("Номенклатура,Единица,Цена", "Количество,Сумма");
	
    НомСтроки = 0; 
	ТаблЧасть.ВыбратьСтроки();
	Пока ТаблЧасть.ПолучитьСтроку() = 1 Цикл
		НомСтроки = НомСтроки + 1;
		Строчка = 0;
	    //==========================================================­==
	    // Поиск аналога Номенклатуры в каталоге Поставщика
        Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
        // Аналог найден
        Аналог = ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
        ПечНоменклатура = СокрЛП(Аналог.Наименование); 
	    ПечАртикул = СокрЛП(Аналог.ИдентификаторВКаталоге);
        Иначе
        // аналога нет
        ПечНоменклатура = СокрЛП(ТаблЧасть.Номенклатура.Наименование); 
	    ПечАртикул = СокрЛП(ТаблЧасть.Номенклатура.Артикул);
	    КонецЕсли;
		ИсхТабл.ВывестиСекцию("Строка");
	КонецЦикла;
		
	СуммаИтог = Итог("Сумма");
		
	// секция Итого
	ИсхТабл.ВывестиСекцию("Итого");
Показать


скрин 22.jpg - выделен Товар 1
скрин 11.jpg - выделен Товар 2
Прикрепленные файлы:
12. Самоделкин 2 02.01.15 22:09 Сейчас в теме
(9) vcv, понял свою ошибку!

С П А С И Б О__З А__П О М О Щ Ь !!!!!!!!!!!!
7. Самоделкин 2 01.01.15 20:07 Сейчас в теме
vcv, с ошибками разобрался, осталось разобраться с самой печатной формой (не выводит наименование поставщика, хотя оно есть, только наше).
13. vsy 05.01.15 09:38 Сейчас в теме
Прочитал и ничего не понял причем тут аналоги, надо однозначно индифицировать товар из чужой накладной в своей базе. Товар однозначно определяется только по штрихкоду, а аналог это другой товар другого производителя. Поэтому не понимаю как можно определить товар по реквизитам, которые заполняются кому как вздумается.
14. Самоделкин 2 05.01.15 11:23 Сейчас в теме
(13) vsy, смысл в следующем: менеджерами чаще всего работают женщины и они знают только ту Номенклатуру, которая у них в базе и не всегда она там правильная (как у производителя). У меня Номенклатура правильная и иногда присылают совсем другой товар (даже при наличии каталожного номера, ШК здесь совсем ни причем, т.к. важны только правильное название и артикул), поэтому чтобы избежать путаницы: я набираю заказ по своим названиям, а они получают накладную на поставку уже по своим (для этого и нужны аналоги).
16. vsy 06.01.15 07:55 Сейчас в теме
(14) А как ты определяешь, что название и артикул правильные? Это полная ерунда, однозначности нет. Аналоги же тоже люди заполняют, наколбасят там, что хотят. Получат накладную, но не факт, что название и артикул в их базе совпадут. Индифицировать нужно только по штрихкоду, причем заносить и считывать только сканером, вот тогда будет однозначность.
17. Самоделкин 2 06.01.15 11:59 Сейчас в теме
(16) vsy, у меня автозапчасти, соответственно, есть на авто заводской каталог запчастей с заводским названием и заводским артикулом (и это правильное название и артикул), ШК - тот же артикул, т.е. 11170-8405325-00 - артикул товара, а ШК - 11170840532500.
Аналог - название поставщика, значит в их базе будет такое же название (накладную они же присылают со своими названиями).
18. vsy 06.01.15 13:24 Сейчас в теме
(17) Почему ты решил, что в их базе тоже название и насчет артикула, даже в existe не всегда товар находится по артикулу, не говоря про название.
19. Самоделкин 2 06.01.15 13:31 Сейчас в теме
(18) vsy, я получаю накладную от поставщика, там по любому их название - это у меня и есть аналог.
Exist - не панацея, там вообще более половины каталогов просто нет.
20. vsy 07.01.15 07:55 Сейчас в теме
(19) Я тебе и пытаюсь объяснить, что сегодня у товара одно название , а завтра другое, что там взбредет в голову оператору. Как ты по названию собираешься искать, в 90% случаев у тебя товар не будет находится, хотя он есть. Я хочу сказать, что искать надо только по реквизиту который однозначно индифицирует товар.
21. vcv 89 07.01.15 09:58 Сейчас в теме
(20) vsy, Не думаю, что у автопроизводителей, о которых Самоделкин говорит в (17), такое может быть. Что бы какой-то оператор что-то там менял в номенклатуре. НСИ (нормативно-справочная информация) - дело более квалифицированных и ответственных лиц.
22. Самоделкин 2 07.01.15 11:45 Сейчас в теме
(20) vsy, поставщик название менять не будут, т.к. они к ним привыкли.
Если у производителя деталь называется КРОНШТЕЙН без каких-либо подписей, поставщики же чтобы понять что это за КРОНШТЕЙН подписывают в скобках САПОГ, СОЛДАТИК или СТАКАН - т.ч. менять они название точно не будут.
Если же поставщику придет такая же деталь только на другую модель, менеджер заведет ее точно также, т.к. кладовщик и грузчики его "грохнут" за то что он поменял название (привычка страшная сила).
15. vcv 89 05.01.15 16:53 Сейчас в теме
(13) vsy, Правильно. Аналог, это товар поставщика/производителя/контрагента. Но ведь, согласитесь, логично в "Заказе поставщику" использовать номенклатуру этого поставщика :)
23. CheBurator 2696 09.01.15 04:53 Сейчас в теме
Самоделкин
Посмотри
Тебе возможно еще вот такая фенька полезная будет

http://infostart.ru/public/14255/
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот