1. 1C / Говнокод #13761

    −167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    Если ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003726") Тогда //000003726 - Автолюкс 
    	СлужбаДоставкиВСМС = "AvtoLux";
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003727") Тогда //000003727 - Гюнсел 
    	СлужбаДоставкиВСМС = "GUNSEL";
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003725") Тогда //000003725 - Интайм 
    	СлужбаДоставкиВСМС = "InTime";
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003826") Тогда //000003826 - Мист экспресс
    	СлужбаДоставкиВСМС = "Meest-express";
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003932") Тогда //000003932 - Киевские ведомости 
    	СлужбаДоставкиВСМС = "Kievskie vedomosti"	
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003722") Тогда //000003722 - Новая почта
    	СлужбаДоставкиВСМС = "Nova Poshta";	
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003729") Тогда //000003729 - Ночной экспресс
    	СлужбаДоставкиВСМС = "Nochnoi express";
    ИначеЕсли ЗапросСлужбаДоставки.Ссылка = Справочники.Контрагенты.НайтиПоКоду("000003728") Тогда //000003728 - САТ
    	СлужбаДоставкиВСМС = "CAT";
    //.....
    
    КонецЕсли;

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

    Запостил: rull9ss, 10 Сентября 2013

    Комментарии (44) RSS

    • жесть
      Ответить
      • покожи свой ворянт
        Ответить
        • Я ни разу не 1сник, но мне кажется, что стоило бы тупо запилить справочник СлужбыДоставки с нужными полями, и связать его по коду со справочником контрагентов ;)

          А может быть там и более удобные средства для таких случаев имеются.
          Ответить
          • P.S. Ну или добавить поле прям в справочник контрагентов...
            Ответить
          • В 1С новые справочники лучше не пилить. Только свои костыли. Кстати, можно сделать как здесь:
            http://www.govnokod.ru/12501
            Тогда можно просто вбить в таблицу и получить таблицу. В конфигурации Раруса так везде. Я опубликовал, потому что это прежде всего необычно. Если прикинуть, то вариант с массивом будет такой же огромный, как и этот код.
            Ответить
            • > В 1С новые справочники лучше не пилить.
              Почему?
              Ответить
              • Если конфигурация поддерживается, то лучше ее не трогать, в противном случае будут проблемы с переходом на более новую версию, в которой лежат все новые макеты и документы. Добавлять документы еще можно - они легко перносятся, а исправления для справочников придется править по всей конфигурации.
                Но конфигурастам из 1С-ных контор на это наплевать.
                Ответить
                • > для справочников придется править по всей конфигурации
                  А что там так сильно рассеивается? Справочник в 1с это не просто таблица и форма для ее редактирования? Просто я под 1с ни разу не кодил, и не в курсе ситуации.

                  > конфигурастам
                  Классное слово, надо запомнить.
                  Ответить
                  • >Справочник в 1с это не просто таблица и форма для ее редактирования?
                    Да это таблица БД с формой.
                    Но когда делать правки по всей конфигурации с этим справочником. При обновлении конфигурации возникает проблема переноса этого справочника в новую конфигурацию.
                    Новая конфигурация представляет из себя чистый код, относящийся к новому законодательству, а у тебя куча документов с этим справочником. В этом случае нужно брать какой-нибудь windiff и править каждый модуль, это очень долго. Единственный безопасный вариант, это использовать справочник только в своих документах, тогда нужно просто поправить эти документы для текущего законодательства. Красивых способов в 1С нет.
                    >Классное слово, надо запомнить
                    Оно употребляется, потому что 1С очень простой язык. Часто человек на нем пишущий представляет из себя скорее продвинутого бухгалтера, нежели программиста)). Единственная серьзная особенность - запросы, которые скармливаются построителю отчетов.
                    Ответить
                    • > Но когда делать правки по всей конфигурации с этим справочником.
                      Не ну это само собой. Если я буду подпиливать изкоробочные документы и код, то я получу головную боль при портировании своего патча на новую версию. Имхо, такие операции нигде безболезненно не проходят, не только в 1с...

                      > Единственный безопасный вариант, это использовать справочник только в своих документах
                      Ну собственно добавление новых документов и справочников для них меня и интересовало.

                      P.S. Кстати, а модули и шаблоны для форм/документов хранятся в текстовых файлах? Или там свои форматы, с которыми без конфигурятора особо не поработаешь?
                      Ответить
                      • >Или там свои форматы, с которыми без конфигурятора особо не поработаешь?
                        Именно так. В каждом файле-отчете лежат макеты+модуль+формы(к каждой форме лежат модули и сопутствующие данные).
                        Ответить
                        • > Именно так.
                          Жопа. Т.е. о git'ах и прочих системах контроля версий можно даже не мечтать...
                          Ответить
                          • Получается так. Google знает типка, который сохраняет на git тупо бинарники
                            https://github.com/kuntashov/1CUnit
                            Ответить
                            • > на git тупо бинарники
                              Ну это, имхо, кривовато: диффы то не посмотреть толком у бинарников, да и места такая репа будет жрать больше.

                              У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную. Хотя тут все очень зависит от того, насколько сильно эту версию перепиливают между релизами.
                              Ответить
                              • >У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную.
                                Ага, и ненулевая вероятность потом ловить глюки. А если патчу лет 5?
                                Ответить
                                • > А если патчу лет 5
                                  Все зависит от того, на сколько уплыла за это время базовая версия ;)

                                  Согласись, если в базовой версии сделали какой-то мелкий фикс, для нетронутых нами модулей, и не испорчено API, то проще автоматом накатить патчсет, чем ебаться и переносить все дельты руками ;)

                                  Да и никто не говорит, что после наложения патча надо сразу отдавать результат бухам. Чтение и тестирование никто не отменял.

                                  Ну и я же не утверждаю, что это панацея. Просто во многих случаях это действительно удобно (хотя в моей сишной практике далеко не всегда канало).
                                  Ответить
                                  • >Чтение и тестирование никто не отменял.
                                    И накатывание чужих патчей превращается из работы пользователя в работу программиста. just as planned, прыщебляди соснули.
                                    Ответить
                                    • > превращается из работы пользователя в работу программиста
                                      Ну а что ты хотел? Взялся за допилку конфы, к которой 1с выпускает изменения - страдай. Ты уже программист а не пользователь ;)

                                      > накатывание чужих патчей
                                      Да схуяли. Пользователь просто возьмет готовую конфу, подпиленную и проверенную для него программистом, да и поставит/обновит (а на практике к нему прибежит франчайзи, который ему конфу допиливал, и поставит все сам). Ну а если не проверенную - будет звонить программисту и заябывать его вопросами, пока тот не научится проверять ;)

                                      Ты пойми: я же не предлагаю распространять допиленные конфигурации в патчсетах. Я просто говорю о том, что классические средства типа диффов и патчей всяко поудобней ручного просмотра форм и модулей, ручного поиска изменений в них, и ручного же слияния своих изменений и тех, которые сделали 1сники.

                                      Пильщику конфигурации один хрен страдать. Просто с текстовыми файлами вместо проприетарного формата, имхо, он страдал бы чуть меньше.
                                      Ответить
                                      • > Взялся за допилку конфы, к которой 1с выпускает изменения

                                        Они не выпускают изменения. Они выпускают интерпретатор для документооборота, и все. 1С и рарус, примерно тоже самое что php и joomla.

                                        >У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную.

                                        Я выше писал про windiff, если не лень, то можно копировать текст из разных конфигураций. Обычно изменения интересуют только в одной(м) обработке/документе, а это не накладно по времени.
                                        Ответить
                                    • > just as planned
                                      Критикуешь - предлагай. Предложи более удобный способ слияния местных изменений конфы, и изменений, которые за это время сделало 1с.

                                      Варианты "не пилить конфу вообще, юзать как есть" и "не обновляться, а по 5 лет пилить на основе версии со времен мамонтов" не принимаются как копетанские и очевидные.

                                      Естественно, что вся эта лабуда рассматривается не с позиции конечного пользователя (которому по-хорошему вообще нехер лезть в конфигурятор), а с позиции 1с-франчайзи, который делает свою конфу на основе стандартной, или мальчика-программиста, которому начальник поручил что-то подпилить в их 1ске.
                                      Ответить
                                      • 1С ругают те, что навижен не видел
                                        Ответить
                                        • > 1С ругают те, что навижен не видел
                                          Блин, вот в моих словах уже всё нашли: и "предложение юзерам накатывать патчи самостоятельно" и "ругань 1с". Почему один я в них ничего из этого не вижу?..
                                          Ответить
                                      • в чем проблема с объединением, на том же инфостаре выложены сотни примеров возможных объединений, на практике применяется постоянно.
                                        по поводу мальчиков программистов дешевых, после которых звонят клиенты и просят хотя бы вернуть как было...бекапы это вообще отдельная тема для развговора
                                        Ответить
                            • выгружать конфу в XML из конфигуратора так и не научились что ле? кнопка прям под носом же. модули выгружаются в тхт, формы - в XML, макеты в mxl. в чем проблема-то? даже скд можно из коробки выгрузить в XML и сиди себе объединяй.
                              Ответить
                          • Волшебные люди написали для 7.7 разборщик MD-файла с конфигурацией в набор текстовых файлов с ресурсами. Эти файлы можно коммитить, сравнивать, только вот перед каждой отправкой надо разобрать файл, а после получения - собрать, перезапустить одноэску, и прочие развлечения.
                            Само собой, никому такие сложности не нужны, контроль версий часто сводится к "забэкапили на всякий, руками поправили/перенесли, сохранили, залили потребителю".
                            Потому, в нашей реальности, в шараге будет храниться где-то количество конфигураций по числу обслуживаемых объектов помножить на правки.
                            Грустно, но правда. В одной знакомой конторе именно так. Там ни небо, ни Будда не знают, что, где, как и зачем.
                            В восьмёрке что-то там иначе, но общая суть ада говна сохраняется.
                            Ответить
                          • С контролем версий есть выход - "хранилище конфигурации". Это штука для параллельной разработки, и хранит историю изменений, позволяет сравнивать версии, откатывать.
                            Но штука местами ОООЧЕНЬ тормозная, остальными местами просто медлительная (10-20 секунд), и вылетает часто (приходится перезаходить в конфигуратор), в общем, как все в России - идея хорошая, реализация страдает...
                            Ответить
                • Обновление вроде не должно попячить существующий объект, если только нет совпадающего имени.
                  А вот все ссылки на него в конфигурации будут прибиты.
                  В любом случае, код из топика где-то лежит. Если это внешняя обработка, то пофиг на обновление базы, если внутри - его самого обновление и грохнет.
                  По-моему, так.
                  Ответить
          • Ну а если конфигурация стоит на поддержке и изменять ничего категорически нельзя, то как тогда быть. Хотя всегда можно добавить свой регистр сведений и в нем все реализовать!
            Ответить
        • смотри ниже
          Ответить
    • Зато откомментировано
      Ответить
    • > GUNSEL
      Gun sell.
      Ответить
    • Блин столько демагогии можно было просто в свойство справочника добавить, напрямую записать в РС ЗначениеСвойствОбъктов и не надо ничего переписывать, без головняков с обновлением, а код бредовый по определению.
      Ответить
      • Вот да, ЗначенияСвойствОбъектов - довольно универсальная штука и здесь бы подошла, я бы еще на месте 1С-овцев добавил аналогичный рег. свед. с периодичностью, а если еще добавить рег. свед. с двумя измерениями произвольного типа, цены бы не было.
        Ответить
      • Значение свойств объектов, если я не ошибаюсь, это из БСП. Т.е. теоретически в конфе этого функционала может не быть.
        Ответить
    • Тем более, что в запросе, которым получали службы доставки можно было сразу получить и значение свойств с необходимым определением.
      Ответить
    • позабавило выражение ---------- КонецЕсли; Ваще код на русском смотриться сильно избыточно. Разработчики могли бы запилить и на английском, видимо с ним нелады совсем были.
      Ответить
    • Зато работает.
      Ответить
      • не расстраивайтесь вы так, Николай Николаевич. у вас еще все впереди, вы еще станете настоящим программистом и покажите всем вершины кодинга!
        Ответить

    Добавить комментарий