Помогите реализовать идею (скорее всего это уже кто-то делал): у Покупателей и Поставщиков редко Наименование и Артикул совпадают, хотелось бы при выводе на печать Заказа Поставщику получать Наименование и Артикул Поставщика.
К примеру: у нас Наименование - 1117 Бампер Зад. Зав., Артикул - 1117-2804015, а на печать выводилось бы, как у Поставщика, Наименование - Задний Бампер ВАЗ 1117, Артикул - 111700-2804015-00.
А если нет Аналога, тогда выводилось бы наши Наименование и Артикул.
(1) Самоделкин, Думаю, можно сделать примерно так.
Во-первых, перед печатью подготовить информацию об аналогах номенклатуры
// Готовим список номенклатуры документа для отбора аналогов
ТаблицаМнЧ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТаблицаМнЧ,"Номенклатура");
ТаблицаМнЧ.Свернуть("Номенклатура","");
СписокНоменклатуры = СоздатьОбъект("СписокЗначений");
ТаблицаМнЧ.Выгрузить(СписокНоменклатуры,,,"Номенклатура");
// Получаем запросом аналоги номенклатуры
ТекстЗапроса = "
Номенклатура = Справочник.Аналоги.Владелец;
Аналог = Справочник.Аналоги.ТекущийЭлемент;
Поставщик = Справочник.Аналоги.Каталог.ВладелецКаталога;
Группировка Номенклатура без групп;
Группировка Аналог без групп;
Условие(Номенклатура в СписокНоменклатуры);
Условие(Поставщик = Контрагент);";
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
ТаблицаАналогов = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТаблицаАналогов,0,0);
Показать
Теперь эту таблицу аналогов можно использовать для того, что бы подменить номенклатуру на аналог при печати. В цикле печати табличной части делаем где-то так:
Строчка = 0;
Если ТаблицаАналогов.НайтиЗначение(Номенклатура,Строчка,"Номенклатура") = 1 Тогда
// Аналог найден
Аналог = ТаблицаАналогов.ПолучитьЗначение(Строчка,"Аналог");
ПечНоменклатура = Аналог.Наименование;
Иначе
// аналога нет
ПечНоменклатура = Номенклатура.Наименование;
КонецЕсли;
Показать
P.S. На сколько помнится, у вас ТиС. Но где в вашем ТиС артикул поставщика, не знаю. Его уж сами вставляйте.
P.P.S. Писал, естественно, сразу в браузере. И не отвечаю за работоспособность, моральный ущерб и курс доллара.
(3) vcv, все сделал, как Вы рекомендовали; 1С начала ругаться на ТаблицаАналогов (перед циклом), об'явил Перем - начала ругаться "Значение не представляет агрегатный об'ект (НайтиЗначение).
Что я не правильно делаю?
Код выложить не могу, т.к. интернет только на телефоне.
(6) vcv, пока писал - Вы ответили, действительно, кода закинул в разные Процедуры - собрал в одну - ошибок нет, но на печать выводит только наше Наименование.
(8) Самоделкин, А в печатной форме что стоит в колонке номенклатура? Номенклатура или ПечНоменклатура, которая делается кодом в (3) ?
Если более-менее типовой документ, печать табличной части выглядит так:
(9) vcv, документ стандартный, в таблице ТаблЧасть.Номенклатура.Наименование.
Если сделать как Вы предлагаете, в таблицу выводит по интересному.
Доберусь до интернета - выложу код и скрин, что получается.
Прочитал и ничего не понял причем тут аналоги, надо однозначно индифицировать товар из чужой накладной в своей базе. Товар однозначно определяется только по штрихкоду, а аналог это другой товар другого производителя. Поэтому не понимаю как можно определить товар по реквизитам, которые заполняются кому как вздумается.
(13) vsy, смысл в следующем: менеджерами чаще всего работают женщины и они знают только ту Номенклатуру, которая у них в базе и не всегда она там правильная (как у производителя). У меня Номенклатура правильная и иногда присылают совсем другой товар (даже при наличии каталожного номера, ШК здесь совсем ни причем, т.к. важны только правильное название и артикул), поэтому чтобы избежать путаницы: я набираю заказ по своим названиям, а они получают накладную на поставку уже по своим (для этого и нужны аналоги).
(14) А как ты определяешь, что название и артикул правильные? Это полная ерунда, однозначности нет. Аналоги же тоже люди заполняют, наколбасят там, что хотят. Получат накладную, но не факт, что название и артикул в их базе совпадут. Индифицировать нужно только по штрихкоду, причем заносить и считывать только сканером, вот тогда будет однозначность.
(16) vsy, у меня автозапчасти, соответственно, есть на авто заводской каталог запчастей с заводским названием и заводским артикулом (и это правильное название и артикул), ШК - тот же артикул, т.е. 11170-8405325-00 - артикул товара, а ШК - 11170840532500.
Аналог - название поставщика, значит в их базе будет такое же название (накладную они же присылают со своими названиями).
(18) vsy, я получаю накладную от поставщика, там по любому их название - это у меня и есть аналог.
Exist - не панацея, там вообще более половины каталогов просто нет.
(19) Я тебе и пытаюсь объяснить, что сегодня у товара одно название , а завтра другое, что там взбредет в голову оператору. Как ты по названию собираешься искать, в 90% случаев у тебя товар не будет находится, хотя он есть. Я хочу сказать, что искать надо только по реквизиту который однозначно индифицирует товар.
(20) vsy, Не думаю, что у автопроизводителей, о которых Самоделкин говорит в (17), такое может быть. Что бы какой-то оператор что-то там менял в номенклатуре. НСИ (нормативно-справочная информация) - дело более квалифицированных и ответственных лиц.
(20) vsy, поставщик название менять не будут, т.к. они к ним привыкли.
Если у производителя деталь называется КРОНШТЕЙН без каких-либо подписей, поставщики же чтобы понять что это за КРОНШТЕЙН подписывают в скобках САПОГ, СОЛДАТИК или СТАКАН - т.ч. менять они название точно не будут.
Если же поставщику придет такая же деталь только на другую модель, менеджер заведет ее точно также, т.к. кладовщик и грузчики его "грохнут" за то что он поменял название (привычка страшная сила).
(13) vsy, Правильно. Аналог, это товар поставщика/производителя/контрагента. Но ведь, согласитесь, логично в "Заказе поставщику" использовать номенклатуру этого поставщика :)