gifts2017

Дополнительные реквизиты документов и справочников

Опубликовал Геннадий Чернышев (Gennady.Chernyshev) в раздел Программирование - Практика программирования

Программное создание доп. реквизитов

Попросили в V8 сделать отчет "Сообщение о ввозе"на основе док-та "ГТД по импорту". При анализе задания, выяснилось, что в БД(Бухгалтерия) нет информации, требуемой в отчет.
- Способ доставки корреспонденции
- Код ТН ВЭД ТС
- Категория
- Кол-во листов
первая мысль была снимать с поддержки и править конфигурацию, но потом пришла "светлая мысля" делать на доп. реквизитах докуметов и справочников. При первоначальной настройки отчета создаю доп реквизиты документа "ГТД по импорту":
1.Способ доставки
2.Кол-во листов
3.Номер договора (по требованию заказчика)
4.Дата договора (по требованию заказчика - ему удобно, чтобы договор "сидел" в документе)
и реквизиты номенклатуры
1.Категория
2.Код ТН ВЭД ТС
Всё. Далее пользователь заполняет реквизиты, а вывести форму - дело техники.

Подробности программной работы с доп.реквизитами:
форма настройки.
При открытии Читаю ХранилищеОбщихНастроек, если неопределено
Заполняю поля формы с названиями доп. реквизитов

ПараметрыРаботы = ХранилищеОбщихНастроек.Загрузить("ГЧ.СообщениеОВвозе","Параметры");
Если ПараметрыРаботы <> Неопределено Тогда
ПараметрыРаботы.Свойство("АкредитованныйКонтрагент",АкредитованныйКонтрагент);
ПараметрыРаботы.Свойство("НазваниеДопСвойстваСпособДоставки",НазваниеДопСвойстваСпособДоставки);
и т.д.

Если Не ЗначениеЗаполнено(НазваниеДопСвойстваСпособДоставки) Тогда
НазваниеДопСвойстваСпособДоставки = "1.Способ доставки";
КонецЕсли;
и т.д

Перед закрытием формы настройки, создаю структуру, записываю в неё названия полей(на случай если пользователь изменил название поля) сохраняю а ХранилищеОбщихНастроек

ПараметрыРаботы = Новый Структура;
ПараметрыРаботы.Вставить("АкредитованныйКонтрагент",АкредитованныйКонтрагент);
ПараметрыРаботы.Вставить("НазваниеДопСвойстваСпособДоставки",НазваниеДопСвойстваСпособДоставки);
и т.д

Далее если доп реквизиты ещё не созданы (первый запуск) создаём

Если ЗначениеЗаполнено(НазваниеДопСвойстваКатегория) Тогда
я = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НазваниеДопСвойстваКатегория);
Если я.Пустая() Тогда
я = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент();
я.Наименование = НазваниеДопСвойстваКатегория;
я.ТипЗначения = Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(20));
я.НазначениеСвойства = ПланывидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура;
я.Записать();
Записано = Истина;
КонецЕсли;
Иначе
Сообщить("Заполните ""Название доп. свойства ""Категория"" "" ");
ВсёЗаполнено = Ложь;
КонецЕсли;

См. также

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

Комментарии

1. Vlad (KillHunter) 29.09.12 19:28
2. Александр Романов (alexandr1972_1) 29.09.12 20:50
(1) Это не вопрос, а публикация.
3. Константин Соболевский (Константин С.) 01.10.12 10:08
Дополнительные реквизиты документов и справочников


статья из серии "Учите мат.часть".
И не понятно, смысл городить обработку, если они создаются одноразого)))
4. Elisey Titov (Els11) 11.10.12 08:51
Не совсем понял. Работаю с УПП. В УПП есть кнопка "Свойства". Описанный функционал, это есть что то взамен кнопке "Свойства" в УПП ? В Бухгалтерии нет кнопок "Свойства"? Или в описанном функционале заложена какая то другая мысль? Хотелось бы тогда , чтобы это отличие в описании было описано (простите за тавтологию). Сначала хотел плюсануть, потом задумался не то же самое ли это.
5. mic auto (4ur) 11.10.12 09:46
если создавать их одноразово, то возможно большой необходимости в программном создании нет, хотя понять принцип - уже достаточно хорошо. Передо мной как раз стоит задача вытягивать в печатную форму такие доп. реквизиты, может кто подскажет, где по этому поводу можно почерпнуть информацию...
6. Кирилл Панфилов (PanKir) 11.10.12 12:42
(0)
0. а зачем снимать с поддержки? править можно и с поддержкой, просто труднее потом будет обновляться (точнее дольше, так как надо всё проверять внимательней)...
1. никакого оформления статьи...
2. полностью согласен с (4) - есть свойства документов, там можно всё ОДИН раз прописать и хоть каждый день перепечатывать эти "Сведения о ввозе", при этом не заполнять доп. реквизиты каждый раз...

З.Ы. минус ставить - совесть не позволит (как никак всё таки автор старался, писал статью), плюс - здравый смысл... :)
7. Кирилл Панфилов (PanKir) 11.10.12 12:43
(5) - я стараюсь все доп. реквизиты, которые хочет видеть начальство в базе, прописывать через свойства объектов. Насколько я понимаю такой справочник и соответствующий регистр сведений должен быть во всех конфигурациях 1С...
8. Александр Лагунов (kit) 11.10.12 15:09
Доп. реквизиты дают, действительно, уникальную возможность настраивать программу без конфигуратора, сам часто этим пользуюсь. Автору плюс, с минимальными изменениями конфигурации решил вопрос.
9. Павел Парамонов (anchovy) 11.10.12 16:34
Смотрю статьи финалистов Spec8.ru
Гилеву однозначно нужно проверять знания правил именования переменных.
Что это значит Если я.Пустая() Тогда ???
И это не первая статья с подобной проблемой.
Жаль не могу поставить минус.
Сергей Осипенко; +1 Ответить
10. Геннадий Чернышев (Gennady.Chernyshev) 11.10.12 18:34
Всё очень просто, когда пишешь одноразовую "нетленку" нет желания комментировать и думать об удобном чтении кода. Когда то на др. языках писали в циклах i=0 и т.д. - оттуда привычка. Для публикации, конечно надо было исправить, но проклятый копипаст...
11. Dimon (klel) 11.10.12 20:32
Пища для мозгов :) Спасибо
12. Игорь Дзеса (Kamikadze) 11.10.12 21:54
Плюс не поставлю - вручную можно создать безовских проблем.
13. Андрей Романовский (and_r) 12.10.12 05:56
Изобретение велосипеда какое-то. Если значения реквизитов хранить не надо, лучше их запрашивать перед выводом формы, а если нужно хранить, то лучше снять с поддержки и добавить реквизиты в документ, это займет гораздо меньше времени, к тому же данный документ не так уж часто обновляется, особых проблем не будет
14. Альбина Андрюхина (AlbinaAAA) 12.10.12 07:32
Плюс поставлю за нестандартность подхода к решению задачи, мне было интересно :) Но, с точки зрения реальной практики это неоптимально по трем причинам: 1) действительно можно было решить эту задачу гораздо проще 2)для пользователя правильнее один раз набить эту информацию, а потом получать сколько угодно результаты в отчет, а не набивать каждый раз заново 3) программисту, которому вдруг придется разбираться с этим отчетом, думаю, что понадобиться дополнительное время на то, чтобы разобраться (опять-таки из-за нестандартности подхода).
15. Геннадий Чернышев (Gennady.Chernyshev) 12.10.12 10:52
And_r, AlbinaAAA, Kamikadze если бы я писал о "нетленке" под названием "Декларация о ввозе", то да это:
1. Изобретение велосипеда;
2. Неоптимально;
3. Можно вручную.
Да и описывать было бы не надо, выложил бы "нетленку", а код разобрать - "пара пустяков". Для тех, кто давно и успешно программирует на восьмёрке это чтиво - зря потраченное время. Для новичков в V8 (кем я и являюсь) - пример, как и где хранить настройки, как работать с доп. реквизитами, и вообще, мне одно только название "КвалификаторыСтроки" не нравилось, не говоря о том как это использовать. Создать элемент свойства объектов в плане видов характеристик - не проблема, а вот правильно заполнить "ТипЗначения", "НазначениеСвойства" - это, для тех кто начинает, подумалось, не совсем просто, вот и выложил "шпаргалку".
Anchovy прав, я финалист Spec8.ru. Наверное, проще было бы сфотографироваться на фоне ПК, а "не учить учёных", но вот решил попробовать себя в жанре писателя :)
16. Геннадий Чернышев (Gennady.Chernyshev) 12.10.12 11:26
Albina, "для пользователя правильнее один раз набить эту информацию" вот с эти не могу согласиться. В статье приведён пример настройки, сам отчёт ориентируется на названия, типа "1.Способ доставки", и если пользователь вручную напишет "1.СпосАб доставки" или "Метод отправки" - отчёт не сработает. И вообще, если пишем какую-то "нетленку" на сторону - "танцы с бубном" объяснять, в каких док-ах и справочниках какие доп. реквизиты надо завести, как правильно их "обозвать" и какой тип значения присвоить, а так, при первом запуске настроил и готово, не нравится "1. Способ доставки", набери в первоначальной настройке "1.Метод привоза" и всё будет работать. Естественно, значения, пользователь должен будет заполнить, но ему не надо думать как назвать доп. реквизит и какой тип присвоить. Кстати, в БП - это действительно называется "Дополнительный реквизит", а в УПП я не знаю, может быть и "Свойство".
17. Альбина Андрюхина (AlbinaAAA) 12.10.12 11:29
Для новичков в V8 (кем я и являюсь) - пример, как и где хранить настройки, как работать с доп. реквизитами, и вообще, мне одно только название "КвалификаторыСтроки" не нравилось, не говоря о том как это использовать. Создать элемент свойства объектов в плане видов характеристик - не проблема, а вот правильно заполнить "ТипЗначения", "НазначениеСвойства" - это, для тех кто начинает, подумалось, не совсем просто, вот и выложил "шпаргалку".

(15) Gennady.Chernyshev, так и мне всё это было интересно, потому плюс от меня :) и вообще, лучше отнестись ко всему вышесказанному, как к конструктивной критике.. хотя я тоже как финалист проекта spec8.ru, написавшая здесь статью, уже не раз подумала как и Вы :)

Наверное, проще было бы сфотографироваться на фоне ПК, а "не учить учёных", но вот решил попробовать себя в жанре писателя :)


иногда, как msal (финалист продвинутого) :)

Чтоб я ещё сюда написал.. :(


Всем финалистам досталось :)
18. Сергей (svn_kirov) 12.10.12 13:05
Сама идея хранить реквизиты для печати в дополнительных реквизитах (свойствах) документов, не изменяя конфигурации, очень хороша! хоть и не нова. За идею автору +.
А вот за качество реализации обработки, изложения и оформления материала - жирный минус. Итого 0.
19. Макас (makas) 16.10.12 23:05
Я тож не совсем понимаю зачем надо что-то менять в конфигураторе:-/
а так плюс за идею
20. Валерий Буданов (buval) 30.03.13 11:39
Большой плюс автору. Сам сопровождаю 2 конфигурации КА при помощи доп реквизитов уже 3 год. Все пожелания клиента решаемы таким образом. Отчеты выполняю из справочника Дополнительные отчеты и обработки. В настоящее время с дополнительными реквизитами и свойствами разрабатываю в конфигурации БП 3.0 УФ. Но там более заморочено.
21. Alister (Alister) 13.07.13 17:57
Вопрос: есть БП 2.0, при интерактивном добавлении дополнительного реквизита документа, он добавляется без привяки к виду документа, т.е. он виден потом при открытии в любом документе - можно ли без влезания в конфигуратор задать соответствие реквизита виду документа ? Т.е. дополнительный реквизит "Процент наценки" только для реализации, а реквизит "Сумма документа" для требования-накладной, перемещения и передачи в эксплуатацию ?
23. Роман Романов (drogs) 15.07.13 08:54
(22) Alister, скорее всего никак
24. Alister (Alister) 15.07.13 18:19
(23) drogs, спасибо.
Это очень и очень жаль.(с)
25. Николай Шилкин (RayCon) 27.10.13 19:15
26. Natalia Z (droplet) 26.02.14 17:33
(21)Alister,
Можно при вводе нового свойства объекта при выборе поля Назначение в открывшейся форме "Назначение свойств категорий объектов" ввести новый элемент ПВХ, у которого в качестве Типа поставить нужный вам документ
27. mic auto (4ur) 05.06.14 22:34
когда то искал информацию как работат с доп. свойствами, так и не понял тогда, возможно в то время не так воспринимал имеющуюся информацию, а оказывается не все так сложно...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа