gifts2017

[ОБУЧАЛОВКА] Про сети (Ашан, Метро) и их заморочки...

Опубликовал Сергей (Che) Коцюра (CheBurator) в раздел Программирование - Практика программирования

Демонстрируется подход к относительно безболезненному исправлению конфигурации ТиС для реализации сетевых заморочек (код сети в печатной форме ТОРГ12)
ВНИМАНИЕ!!! Данный материал носит спорный характер (читайте комментарии!) и не может служить непреложным руководстовм к действию. Рассматривается всего лишь один (не самый лучший) вариант решения задачи...
 
Клиент попросил в ТОРГ12 в графу "Код" вставлять для определенных клиентов определенный код. "Определенными клиентами" является ряд сетей: Ашан, Перекресток, Мосмарт и т.д. "Определенным кодом" является артикул товара в учете этих сетей, т.е. у Ашана - свой артикул для нашего товара, у Мосмарта - свой и т.д.

Итак, задача ясна. Как говорил Петька: "Чапай думать будет!"
По хорошему, конечно, надо навернуть кучу изменений для реализации ввода в карточку номенклатуры артикулов для сетей. Возможных вариантов три (если по быстрому):
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 у "замороченных" клиентов - оставляйте в комментах заявки!

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сhe Burashka (CheBurator) 21.06.07 14:40
2. Drock (d.snissarenko) 21.06.07 21:34
прикольно, 570 бачей за 20 минут, ай малаца
3. Drock (d.snissarenko) 21.06.07 21:35
4. Сhe Burashka (CheBurator) 21.06.07 23:25
Тьфу, блин... 1500 руб.. конечно...
5. Алексей (alexdum12) 22.06.07 09:42
Я думаю продуктивность сотрудничества между твоим клиентом и его клиентами значительно бы возросла, предложи ты им обмен данными в электронном виде - это первое. Второе - а что будет когда количество подобных клиентов станет расти? Итог - решение на коленке долго не проживет, грамотный подход принес бы тебе больше презренных бумажек, а клиентам больше сервиса
6. Константин Ершов (Снусмумрик) 22.06.07 12:16
Че, ты чему народ учишь ? Исходно был выбран идеолгически неверный путь в данной задаче. Завтра появится 5, 6, 7 я сетка у клиента и что ?
Низачод короче
7. Константин Ершов (Снусмумрик) 22.06.07 12:17
"NN - числовой код клиента в справочнике контрагентов"

ужас !!! ужас !!!!
8. Сhe Burashka (CheBurator) 22.06.07 12:47
Тьфу на вас всех, собаки бешеные! ;-)
Вероятность появления у клиента новых сетей в течение года - весьма мала... так что
NN - числовой код клиента в справочнике контрагентов - В ДАННОМ СЛУЧАЕ - практически оптимальное решение... особенно, если клиенту завтра припрет вставить колонку артикула Ашана в ТЧ документа реализации - это я смогу и по телефону разрулить... а вот при выборе идеологически верного Варианта 1 - придется телепаться на другой конец москвы...
Естественно, к выбору варианта решения надо подходить обоснованно... Ясен пень, что при первой же возможности следует переделать под Вариант 1, но работы там будет - раз в пять больше... потому что внешне для клиента - все должно быть максимально просто...
.
> а что будет когда количество подобных клиентов станет расти?
сразу видно, что народу лень думать... БОЛЬШИНСТВО клиентов, которые работают с сетями - имеют СВОЕГО программиста 1С. Поэтому - ничего не будет...
..
> решение на коленке долго не проживет
Согласен... Только предложенное выше как выразились "решение на коленке" - встраивается в систему за 15 минут... и уж поверьте - грамотные "коленчатые" решения - живут вполне себе успешно...
9. Сhe Burashka (CheBurator) 22.06.07 12:51
> продуктивность сотрудничества между твоим клиентом и его клиентами значительно бы возросла, предложи ты им обмен данными в электронном виде...
Сапсем больной, да? ;-)
Обмен в электронном виде не исключает необходимости предоставления твердых копий документов. Пока я еще не встречал, чтобы налоговая принимала для проверки логи/электронные документы.
Низачот.
-1
10. Ivan (imaster) 22.06.07 14:37
Ужос н@х... Такого изврата я ещё не видел.
Особенно "необходимость править структуру данных конфигурации при появлении новых "сетей", + не забывать при обновлениях."
11. Сhe Burashka (CheBurator) 22.06.07 14:49
Ок, Специалисты.
Ставим задачу:
- решить сабж
- уложиться в общем случае в 10 строк кода.
- избежать программирования при вставке артикула сети в табличную часть документа.
...
критиканские высказывания без обоснования будут приравниваться к флуду... ;-)

imaster'у: а ты, что, никогда структуру данных конфиги не модифицировал?
12. Вадим 1С911.BY (Вадимко) 23.06.07 02:28
>>обойти матюги так называемых "специалистов 1С"
Бугоганах, ну-ну, пиши еще!
13. Доржи Цыденов (support) 23.06.07 12:17
Не обжайте Чебурашку, он хороший. И его решение, более чем грамотное.
Сам работал с сетями, и знаю, что это такое, более придирчивого покупателя не найти, но это сеть, и она диктует условия.
Добавления нового реквизита в карточку номенклатуры самое простое и грамотное решение. Многие программисты не понимают, что 1С дала прекрасный инструмент, чтобы решать именно такие задачи. Создал реквизит, добавил на форму и все. Больше ничего делать не надо. А создание сложных систем по вводу дополнительных артикулов только усложняет процесс ввода, вывода и т.д. Потом научить оператора создавать такой артикул сложнее, чем научить создавать дополнительный реквизит в справочнике. :)
И еще, сетей, которые кодируют сами, в России можно пересчитать по пальцам, все остальные используют коды поставщиков. Создавать сложную систему для максимум десяти клиентов просто глупо.
Плюсы данное решения.
- Дополнительный артикул легко выводится в форму списка справочника (опять же заложено 1С), соответственно оператор может искать по нему.
- В любом универсальном отчете можно легко вывести код сети, т.к. это просто реквизит справочника.
- Добавить реквизит в табличную часть документа так же просто, как в форму списка.
- Можно осуществлять упорядочивание 1С запроса по данному реквизиту.
- Можно осуществлять поиск по реквизиту, отбор и т.д.
14. Poppy (poppy) 24.06.07 01:47
Я бы обошлась без попытки:

Код
ПечКод = "";
Если глЕстьРеквизитШапки("БВК_Артикул"+Число(Докум.Контрагент.Код), Докум.Вид()) = 1 Тогда   
   ПечКод = Докум.Номенклатура.ПолучитьАтрибут("БВК_Артикул"+Число(Докум.Контрагент.Код));
КонецЕсли;
Показать полностью
15. Иван (Ioann) 27.06.07 11:32
Что-то много всего намутил. Конфа, насколько я понимаю имеет типовой функционал с аналогами и каталогами. в этом случае вообще ничего не надо в структуре менять. У меня код (артикул) покупателя хранится в реквизите "ИдентификаторВКаталоге" справочника "Аналоги". При печати документов используется глобальная функция, которая возвращает код покупателя, в случае наличия аналога из каталога данного контрагента. В некоторых случаях используется не только код, но наименование товара, принятое у клиента (хранится в реквизите "Наименование" справочника "Аналоги") - есть и такие клиенты...
16. artbear2 (artbear) 27.06.07 13:03
При условиях, которые заданы в задаче
Цитата
"(плюс к этому попутно: франч, обновлявший конфигу клиенту, умудрился "потерять" внесенный по другой доработке новый код в глобальный модуль - хотя ему был перед добавлением выдан "протокол" изменений - что уж тут говорить о более серьезных доработках кода... - при очередном обновлении - все рухнет... франчи - они такие...)"
ни один из способов не является оптимальным.

Реализованный вариант 3 при подобном обновлении пострадает также, как и остальные варианты!!

Наиболее правилен все-таки вариант 1, пусть он клиенту и обойдется дороже :)
Только я бы не использовал встроенный справочник Аналоги, а сделал бы спец. подчиненный справочник, который не пострадает. Объем клиентского кода, в принципе, примерно тот же :) Необходимо только написать пару методов для работы с подчиненным справочником :)

При "плохом" обновлении/объединении в этом случае по крайней мере данные клиента (коды) не будут потеряны, как при использовании варианта 3 :(

Также 100% твой доп. слой будет потерян :)

ЗЫ а вообще подобная схема у меня лично давно реализована с помощью классов 1С++.
И подобные фичи легко добавляются в спец. подчиненный справочник, в котором соответствие один-один к справочнику-хозяину.
Для клиентского кода все прозрачно, только вместо
Спр = СоздатьОбъект("Справочник.Номенклатура");
используется
Спр = СоздатьОбъект("Общие.СправочникСДополнительнымиРеквизитами");
Спр.НазначитьВид("Номенклатура");
17. Иван (Ioann) 28.06.07 11:47
Про франча... С какой стати он обновляет конфу, которой занимается сторонний спец? Я бы на его месте не стал её сопровождать. Сопровождение типовой или не типовой совсем разные вещи, деньги и специалисты. Да и сопровождать то, за что ты отвечать не можешь на кой фиг?
18. Сhe Burashka (CheBurator) 28.06.07 12:55
2 artbear: > Только я бы не использовал встроенный справочник Аналоги, а сделал бы спец. подчиненный справочник,
Хотелось бы узнать - чем неустроил справочник "Аналоги" - чисто интересно.
То, что при обновлении потеряется доп.слой - это да... но его по тлф. "внедрить" легче, чем большой кусок программного кода по вар.1. Понятно, что по варианту 3 код тоже потеряется - но его всего вообщем-то 3 строчки ;-)
...
> При "плохом" обновлении/объединении в этом случае по крайней мере данные клиента (коды) не будут потеряны,
// ну это надо так постараться, чтобы доп.реквизиты убить - это только если загрузить обновление.... ;-) хотя и такое могут отчудить... ;-)
..
> с помощью классов 1С++.
... отдавая дань возможностям 1С++ на широкое масштабное применение 1С++ не иду ввиду отсутствия внятной целной документации - и не надо давать ссылки на "обрывки", которые лежат на известных ресурсах... - это нельзя назвать документацией... ну и не надо экскаватором копать ямки для заборныз столбиков... ;-)
19. Сhe Burashka (CheBurator) 28.06.07 12:59
2 Ioann: совершенно верно, согласен. у сеьбя в конторе сделано так же. Но при "внедрении" к клиенту требуется соотноситься с "возможностями" клиента. Как я писал ниже - такой вариант ДЛЯ КЛИЕНТА непрозрачен. Для нормальной работы требуется "прописать" фишку для заполнения аналогов. Вариант типовой работы с заполнением подчиненого справочника - весьма неудобен с практической точки зрения...
20. Сhe Burashka (CheBurator) 28.06.07 12:59
2 poppy: ок. код только длиннее получается ;-)
21. Вениамин Кравцов (Sancha) 01.07.07 14:29
Я, все сделал бы на свойствах номенклатуры. Сделал бы сервисную обработку на подобии обработки группового изменения св-в справочника, это для тех, кто должен отслеживать артикулы сетей. И внешнюю печ.форму torg12.ert подправил бы по своему усмотрению.
Нет геммора с обновлением и с печ.формой.
22. Сhe Burashka (CheBurator) 01.07.07 16:32
Угум.. а a бы сделал на аналогах, ибо по сути это и есть аналоги...
23. Poppy (poppy) 02.07.07 02:48
> 2 poppy: ок. код только длиннее получается ;-)

Букавак больше, но строчек = меньше. ;)

Использование конструкции "Попытка" для определения наличия атрибута смахивает на почерк программистов из Раруса. Не буду разводить здесь антирекламу, но такой почерк вызывает у меня рвотные рефлексы.

Ты сам утверждал, что учился кодить у одноэсовых программистов ( http://infostart.ru/forum/read.php?25,4076,5928,ref=4246#msg-5928 ). Видать, плохо учился...
24. Poppy (poppy) 02.07.07 03:41
Не хочу обсуждать, на сколько решение = обосновано. Считаю, что Саппорт его обосновал.

Немного покритикую.
По вопросу обновления и франчей.
Не думаю, что мы доживем до 950 релиза. Если и доживем, то не скоро.
ИМХО очередные релизы пишут какие-то "студенты". Они вносят больше ошибок, чем исправляют. Поэтому, новый релиз + неумелый франч = взрывная смесь.

Если уж "решение" создает Че, то клиенту выгоднее обратиться к нему же за обновлением. Другое дело, что мотаться по Москве, выпоняя обновления = неблагодарное дело.
Как вариант: автор решения готовит очередное обновление, но обновление конкретной базы выполняет ближайший франч.
25. Poppy (poppy) 02.07.07 03:52
> Да, привязываться к коду контрагента в наименованиях реквизитов
> конфигуратора может показаться на первый взгляд некомильфово

Не то слово. Очень большое ФИ по этому вопросу.

В восьмерке, например, есть преопределенные элементы, но в серемерке, иногда, приходится принимать непопулярные решения.
26. Poppy (poppy) 02.07.07 04:05
> Да, привязываться к коду контрагента в наименованиях реквизитов
> конфигуратора может показаться на первый взгляд некомильфово

Продожение.

Я бы предложила другое решение:
В справочнике контрагентов добавить реквизит: "КодСети" (типа строка(2)). В справочнике Номенклатура, нужно добавить реквизиты "БВК_АртикулХХ", где ХХ = от 00 до 15 (или 20, или другое число).

В коде пишем:

Код
ПечКод = "";
ИмяРеквизита = "БВК_Артикул"+Докум.Контрагент.КодСети;
Если глЕстьРеквизитШапки(ИмяРеквизита, Докум.Вид()) = 1 Тогда ПечКод = Докум.Номенклатура.ПолучитьАтрибут(ИмяРеквизита);
КонецЕсли;
Показать полностью

В рассмотренном варианте мы можем "привязать" несколько контрагентов к одному коду номенклатуры.
27. Сhe Burashka (CheBurator) 03.07.07 02:42
> нужно добавить реквизиты "БВК_АртикулХХ", где ХХ = от 00 до 15 (или 20, или другое число).
ну это - ваще отстой...
лучше уж как сделано в статье.. или на налогах/свойствах...
а вот почему Попытка - рвет на родину - непонятно...
Я считаю использование такой конструкции РАЗУМНО ТАМ где срабатывание по ветке "исключение" - не приводит к каким-либо траблам - как в примере вывода печатной формы... Другое дело, что при вычислительном каком-нить алгоритме применение Попытки не есть хорошо - так как БЕЗ ДОЛЖНОЙ ОТРАБОТКИ ИСКЛЮЧЕНИЯ приводит к иллюзии что все есть гуд...
28. Сhe Burashka (CheBurator) 03.07.07 02:44
В любом случае - все предложенные решения (кроме описанного в статье) являются существенно БОЛЕЕ ЗАТРАТНЫМИ.. имхо...
А то, что 950 релиза ххз когда дождемся - это да... я у себя в конторе до сих пор на 933 сижу (книги продаж/покупок только из 941 подтянулл в всое время...)
29. topasha (topasha) 03.07.07 07:54
Автор видимо мало работал с крупными розничными сетями. Многие из них еще требуют, чтобы в Торг-12 были ИХ НАЗВАНИЯ ТОВАРОВ, их артикул, их отпускные цены, их цены для промоакций , их штрих код. (Остальное добавьте после внимательного прочтения договора) Помимо Торг-12 могут потребовать еще кучу документов типа протокола согласования цен, разные формы для ввода новых товаров и прочее. Плюс практически все сети требуют отдельно ведения списка товаров, поставляемых им. Некоторые трепетно относятся даже к порядку следования строк с товарами! Добавление новых товаров в их базу почти всегда платное (от 50 до 300 евриков за строку). Рекомендую очень внимательно читать договор с торговыми сетями. Я бы сделал справочник "Товарная матрица", подчиненный справочнику "Контрагенты", в котором для каждой розничной сети вёл бы свой список товаров с их названиями, артикулами, возможно ценами и проч. реквизитами. Решение автора простое, в лоб, но не универсальное.
30. angro (angro) 03.07.07 08:12
ИМХО: такое публиковать нельзя, решение простое и работающее, но ничего из себя не представляет.
31. topasha (topasha) 03.07.07 08:22
Подход к решению задачи в корне не правильный! Все три предложенных варианта - не правильные!
32. Сhe Burashka (CheBurator) 03.07.07 11:40
2 topasha: все верно. в данной конторе, которая описана выше - необходимости в реализации полной схемы "работы с сетями" как описано тобой ниже - необходимости нет... в другой конторе - там, все посложнее и по полной программе, как грится...
> решение автора простое, но не универсальное...
именно, речь ведь не шла о написании мегаконфиги для работы с сетями...
> Я бы сделал справочник "Товарная матрица", подчиненный справочнику "Контрагенты", в котором для каждой розничной сети вёл бы свой список товаров с их названиями, артикулами, возможно ценами и проч. реквизитами.
я бы не стал плодить излишеств и по максимум воспользовался бы "Аналогами" - тем боле что туда вполне можно впихнуть и артикул, и наименования, цены для каждой сети свои - тоже нормально реализуется штатными возможностями... доп.реквизиты - в свойства - все это, конечно, если работа с сетями не составляет ОСНОВНОЙ доли деятельности. Тогда имхо точить конфигу надо именно под автоматизацию работы с сетями...
33. Сhe Burashka (CheBurator) 03.07.07 11:41
2 angro: т.е. лучше публиковать навороченное решение с кучей ошибок...? ;-)
смысл именно такой и был - прсо, без заморочек... суть уловлена верно.
34. Антон Рощин (wolfsoft) 03.07.07 13:21
Вот, блин, тоже сейчас начну статьи писать, как я разным клиентам реквизиты добавлял! Вот статьей-то наваяю... ;)
зы: Но минусовать не буду, потому что принципиально против минусов :)
35. topasha (topasha) 03.07.07 14:22
В моём решении как раз заморочек меньше всего, а наворотов нет вообще. Можно даже и интерфейсов не мутиит никаких. достаточно показать клиенту, как штатно открыть форму списка подчинённого справочника и всё! Можно даже типовые обновления ствить без боязни что-либо утерять. Просто предложенные решения задачи методологически не верны в принципе, даже для маленькой конторы!
36. Poppy (poppy) 05.07.07 02:23
> > нужно добавить реквизиты "БВК_АртикулХХ", где ХХ = от 00 до 15 (или 20, или другое число).
> ну это - ваще отстой...

Не отстойнее, чем исходное решение... ИМХО ;)
Я даже не осуждаю то, что автор в своей статье многочисленно оправдывается за принятое решение.

> В любом случае - все предложенные решения (кроме описанного в статье) являются
> существенно БОЛЕЕ ЗАТРАТНЫМИ.. имхо...

Не существенно и не БОЛЕЕ.
Бюджет моего решения соизмерим с исходным. А если учесть перспективу "разруливания" ситуации по телефону, то значительно ниже как для заказчика так и для исполнителя.

Мое решение является более универсальным. В частности:
- у разных магазинов одной сети могут быть разные реквизиты. В этом случае разным контрагентам можно назначить одинаковые коды товаров;
- при появлении новых магазинов (сетей) пользователь добавляет данные в привычном для него интефейсе в т.ч. и без консультации по телефону.

В развитии решения можно добавить следующее.
Создать справочник "Сети". Тип реквизита КодСети справочника Контргаенты установить этот справочник. В форме элемента справочника Номенклатура показывать только те реквизиты, ХХ которых совпадает с кодом одного из элементов справочника Сети. Надписи для них брать из нового справочника.

"Коленчатые" решения действительно иногда жывут "успешно" и долго. Но в большинстве случаев из-за того, что уйти от них бывает дороже, чем выполнять разовые доработки.

Складывется впечатление, что заказчик и автор решения не знакомы с известным правилом: Я не настолько богат, что-бы покупать дешевые вещи.

Единственный плюс исходного решения отмечаю использование иднтификаторов реквизитов ПРЕФИКС_АртикулNN вместо БВК_АртикулАшан.
mdzen; support; +2 Ответить
37. Poppy (poppy) 05.07.07 02:25
> а вот почему Попытка - рвет на родину - непонятно...

Потому что в аналогичных ситуациях эту конструкцию используют программисты из известной большой франчайзинговой фирмы.
Конфигурации от них у меня ассоциируются с неработающими поделками.

Складывается впечатление, что свои решения они создают на "коленках", распостраняя их потом на всю страну. Вот и рвет на родину.

Я не против использования конструкции Попытка в целом и в рассматриваемой ситуации в частности.

Кстати, если бы такое решение (Вариант 3) предложил какой-нибудь новичок, что Чебур первый бы его зачморил ИМХО.
38. Трактор Трактор (Трактор) 07.07.07 13:16
Ух! :-)
Как я понял автор хочет защититься от дурака-обновляльщика.
Думаю что добавленный реквизит с точки зрения обновляльщика мало отличается от добавленного справочника.
Можно использовать префиксы для добавляемых объектов матаданных. Например, реквизит назвать ЧЕБУР_КодыСетей или назвать справочник ЧЕБУР_АналогиСетей.
Вариант2 наиболее защищён от дурака-обновляльщика, поскольку на первый взгляд требует меньше изменений в коде.

Вариант1 vs Вариант3
Трудоёмкость написания кода для разбора строк не меньше чем трудоёмкость написания кода для работы с подчинённым справочником. Кроме того для облегчения обновления форму элемента лучше трогать поменьше. Я бы навесил на неё только кнопку с вызовом справочника аналогов или формы обработки по заполнению аналогов. Получается что разница в объёме кода между первым и третьим вариантом исчезающе мала, а вот разница в ссылочной целостности и лёгкости доработки - значительная.

Вариант2 vs Вариант3 vs Вариант1
До сраки как сделать, главное чтобы работало и чтобы пришедший после тебя не сильно матюкался.

Любителям универсальных решений - в сад. Лучше неуниверсально и просто, чем универсально на сложно и с множественными переломами мозгов при попытке использовать где-то ещё.

Касательно комментариев. Лучше писатьтак
а так
//(( Чебурашка 07.07.2007
//)) Чебурашка 07.07.2007

Автору плюс за поднятую тему.
39. Сhe Burashka (CheBurator) 08.07.07 00:36
спасибо Трактору за комент. единственное с чем не соглашусь
> то разница в объёме кода между первым и третьим вариантом исчезающе мала,
- на мой взгляд разница в коде - весьма существенна... хотя кто как считает...
> ЧЕБУР_КодыСетей
ну так и названо - БВК_Артикул...
40. Павел Чистов (GROOVY) 10.07.07 03:13
Зачетная статейка. Конечно про "правильность" подхода мы тут говорить не будем, ведь для определенного решения это есть гуд.
das; support; +2 Ответить
41. Сhe Burashka (CheBurator) 10.07.07 03:16
Вот слова истинного Дао!
das; support; +2 Ответить
42. Сhe Burashka (CheBurator) 24.07.07 19:10
Кстати, задача, изложенная в (11) все еще актуальна...
43. Alesya (Alesya) 25.07.07 12:53
Программистам может и не нравится, что ж их мнение...
Но ведь нравится пользователю. Мне как пользователю - это удобно. Это комфортно.
Мало того, я знаю, что если вдруг возникнет проблема, мне её сразу решат. Серёжа, спасибо, с тобой очень комфортно работать!
44. (das) Афанасьева Светлана (das) 22.09.07 04:47
43) Полностью присоединяюсь!
Спасибо за статью - ваше зерно опыта в нашу копилку!!!
45. Pet (XLstarter) 08.07.08 15:49
в комментах товара ввел для клиента правило на заполнение первых символов типа !М3253!А5643! и создал отдельные печатные формы расходных, счетов, ттн (пришлось повозиться с группировкой товара по их единому коду), от !Мдо! - Метро, от !А до ! Ашан ... в печ.форм. подставлял кода - печ.ф. М - метро, А - ашан..
46. vladal (Vladal) 26.08.09 16:32
МЕТРОимся и АШАНимся... захитали... особенно МЕТРО...
+
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа