Итак, задача ясна. Как говорил Петька: "Чапай думать будет!"
По хорошему, конечно, надо навернуть кучу изменений для реализации ввода в карточку номенклатуры артикулов для сетей. Возможных вариантов три (если по быстрому):
1. для номенклатуры артикул сети пихаем в подчиненный справочник Аналоги;
2. артикулы пишем в свойства номенклатуры;
3. аналоги делаем доп.реквизитами в карточке товара.
Вариант 1 - самый "правильный", но неудобный для ручного ввода (товаров не сильно много, клиент согласился вводить ручками), + к этому - достаточно "непрозрачное" решение для клиента, особенно когда понадобится отображать артикулы в карточке клиента (доп.код придется писать) и в формах накладных(тоже придется писать доп.код) - уже будет труднее с обновлениями в последующем;
Вариант 2 - похуже, чем вариант 1, но тоже можно использовать. Трудности - аналогичные предыдущему варианту, + нужна дисциплина "манипуляции" с такими свойствами (что выльется в дополнительный код работы со свойствами);
Вариант 3 - самый легкий, конечно, но... негламурненький... ;-) основная проблема - необходимость править структуру данных конфигурации при появлении новых "сетей", + не забывать при обновлениях.
Подумали - и выбрали вариант 3. С учетом того, что это ПРОЩЕ всего, займет минимум времени у меня и недорого обойдется клиенту. Итак, делаем - как в варианте 3 (т.е. добавляем под каждую сеть отдельный реквизит для артикула сети, благо сетей немного - у клиента их всего 4 штуки...).
Тем более, что внятных 1Сников, которые умеют НОРМАЛЬНО РАБОТАТЬ на программном и идейном уровне со справочниками свойств и аналогов - я давненько не встречал... (плюс к этому попутно: франч, обновлявший конфигу клиенту, умудрился "потерять" внесенный по другой доработке новый код в глобальный модуль - хотя ему был перед добавлением выдан "протокол" изменений - что уж тут говорить о более серьезных доработках кода... - при очередном обновлении - все рухнет... франчи - они такие...)
Для тех, кто начал уже плевать в мою сторону - отвечаю просто - на себя посмотри, собака бешенная! ;-)
Под каждыую сеть сделаем отдельный реквизит для артикула сети. Реквизит будем именовать по такому шаблону: ПРЕФИКС_АртикулNN, где
ПРЕФИКС - отличительный признак добавленного реквизита;
NN - числовой код клиента в справочнике контрагентов.
Для тех, кто начал плевать в мою сторону во второй раз - отвечаю просто - ничего не знаю, клиент - мой, как хочу - так и делаю! ;-)
Итак получились следующие реквизиты (строка, 10):
БВК_Артикул19, БВК_Артикул35, БВК_Артикул58...
Да, привязываться к коду контрагента в наименованиях реквизитов конфигуратора может показаться на первый взгляд некомильфово... Но тут есть ряд соображений, которые мне помогут обойти матюги так называемых "специалистов 1С" в мой адрес:
1. Это всяко лучше, чем называть БВК_АртикулАшан или БВК_АртикулМосмарт (такие названия - исключительно для удобства специалистов с короткой памятью, более никакого функционала полезного такие наименования В ДАННОМ СЛУЧАЕ не несут... а я, не то чтобы злопамятный, просто я злой и память у меня хорошая.. ;-) ...тем более что оправданность наименования реквизитов в ивде БВК_АртикулNN будет показана дальше).
2. Что произойдет, например, если коды клиентов в справочнике изменятся? А ничего страшного не произойдет - при первой же сделке на сеть - отсутствие(или неверный артикул) в колонке "код" в ТОРГ12 нужного артикула будет отловлен сразу же... Если не самим продавцом (моим клиентом), то как минимум - сеть заругается... А если сеть не заругается - так ничего страшного, значит, и не произошло... А если какой-то код В ТОРГ12 будет печататься для совершенно другого покупателя - тоже ничего страшного... даже полезно, так покупателю и скажем - мы тут вам заодно еще артикулы сети печатаем, чтоб вам в своем городе легче с сетями работать было... $-)
Итак, выше показано совершенно оправданное применение для каждой сети отдельного реквизита с наименованием по особому правилу. Сортировку и отбор на артикулы сетей ставить не будем - неактуально.
Теперича сделаем интерфейс для ввода артикулов в карточки товаров. С учетом того, что карточка товара и так уже забита под завязку всякой инфой - вынесем все добавленные артикулы на отдельную закладку - обойдется нам это в одну строчку кода в модуле формы элемента номенклатуры.
Итак, в форму добавляем один слой с идентификатором "ДопАртикулы", в модуль элемента добавляем следующую строчку кода:
Форма.ИспользоватьЗакладки(1); Форма.Закладки.ДобавитьЗначение("Общий, Основной, Кнопки", "Основные"); Форма.Закладки.ДобавитьЗначение("Общий, Дополнительный, Кнопки", "Дополнительные"); //ДОБАВЛЕНО НЕТИПОВОЕ Форма.Закладки.ДобавитьЗначение("Общий, ДопАртикулы, Кнопки", "Артикулы сетей"); //КОНЕЦ ДОБАВЛЕНО НЕТИПОВОЕ
На форме на слой "ДопАртикулы" кидаем наши дополнительные реквизиты (артикулы сетей) как поля ввода с соответствующими текстовыми заголовками - что тривиально, так что обойдемся без картинки...
Теперь лезем во все печатные формы ТОРГ12 (а их у нас может быть несколько - встроенная таблица, внешние печатные формы) и в колонку код (под номером 3 в типовой форме) вписываем ПечКод (тип = Выражение).
В модуле печати ищем где у нас определяется ПечЕдиница и вставляем там определение выводимой на печать переменной ПечКод:
ПечЕдиница = СокрЛП(Докум.Единица.ОКЕИ.Наименование); ПечОКЕИ = СокрЛП(Докум.Единица.ОКЕИ.Код); //ДОБАВЛЕНО НЕТИПОВОЕ Попытка ПечКод = Докум.Номенклатура.ПолучитьАтрибут("БВК_Артикул"+Число(Докум.Контрагент)); Исключение ПечКод = ""; КонецПопытки; //КОНЕЦ ДОБАВЛЕНО НЕТИПОВОЕ
Вот, собственно, и вся доработка (для встроенной печатной формы префикс докум. должен быть опущен в приведенном выше программном коде). Вся фишка - в имени реквизита для артикула сети и использовании конструкции ПОПЫТКА. При этом - мы нигде не привязываемся ни к каким наименованиям, никаких доп.проверок и всякого ненужного программно-мусорного кода...
По времени заняло порядка 20 минут, клиент - удовлетворен...
Кому сия история понравилась - плюсуем рейтинг и оставляем комменты, а то обижусь!
На очереди - сага о быстром подсчете мест и коробок в ТОРГ12 у "замороченных" клиентов - оставляйте в комментах заявки!