УстановитьСсылкуНового() как ход оптимизации!

Публикация № 306974 22.10.14

Приемы и методы разработки - Универсальные функции

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

    //контрагент
    НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
    НовыйКонтрагент.УстановитьНовыйКод();
    ЗаполнитьЗначенияСвойств(НовыйКонтрагент, РеквизитыЗаполненияКонтрагента);

    НовыйКонтрагент.Записать();

    //договор
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    ДоговорКонтрагента.УстановитьНовыйКод();
    ДоговорКонтрагента.Владелец   = НовыйКонтрагент.Ссылка;
    ЗаполнитьЗначенияСвойств(ДоговорКонтрагента, РеквизитыЗаполненияДоговора);
	
    ДоговорКонтрагента.Записать();

    //снова записуем
    НовыйКонтрагент.ОсновнойДоговорКонтрагента = ДоговорКонтрагента.Ссылка;
    НовыйКонтрагент.Записать();

КонецПроцедуры

Как бы запутанно это не звучало но вот так оно и выглядит. Недостатки таких телодвижений состоят собственно в двойной записи одного объекта справочника Контрагенты ну и запутанности.


Предлагаю обратить внимание на методы ПолучитьСсылку() и УстановитьСсылкуНового(). Информацию о этих методах можно найти в синтаксис помошнике, а я просто приведу пример как обойти двойную запись одного объекта. Более того преимущество этого метода еще и в том, что ненужно использовать ".Ссылка" при использовании которого, система всецело кэширует объект в память. 

Процедура СоздатьКонтрагентыИДоговорыПоНовому(РеквизитыЗаполненияКонтрагента, РеквизитыЗаполненияДоговора)

    НовыйДоговорСсылка = Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(Новый УникальныйИдентификатор); //получаем ссылку для основного договора контрагента

    //контрагент
    НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
    НовыйКонтрагентСсылка = СправочникКонтрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор);
    НовыйКонтрагент.УстановитьСсылкуНового(НовыйКонтрагентСсылка);
    НовыйКонтрагент.УстановитьНовыйКод();
    ЗаполнитьЗначенияСвойств(НовыйКонтрагент, РеквизитыЗаполненияКонтрагента);
    НовыйКонтрагент.ОсновнойДоговорКонтрагента = НовыйДоговорСсылка;

    НовыйКонтрагент.Записать();

    //договор
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    ДоговорКонтрагента.УстановитьНовыйКод();
    ДоговорКонтрагента.УстановитьСсылкуНового(НовыйДоговорСсылка);
    ДоговорКонтрагента.Владелец                 = НовыйКонтрагентСсылка;
    ЗаполнитьЗначенияСвойств(ДоговорКонтрагента, РеквизитыЗаполненияДоговора);

    ДоговорКонтрагента.Записать();

КонецПроцедуры

Для гуру я ничего нового не открыл. Но для новичков я думаю навел на интересные мысли. Просто хочу обратить внимание на использования этого метода, просто зачастую люди забывают о нем и делают лишнюю запись объекта. В моей практике приходилось уже неоднократно применять эти методы и что я могу сказать, что действительно это интересно и решает иногда множество проблем сразу.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Gureev 22.10.14 16:11 Сейчас в теме
только надо обязательно в одну транзакцию их вставить
а то будет в контрагенте "объект не найден"
sdemon72; Isakov_Artem; OrcaMax; gubanoff; NorraSaltolinen; Krio2; kimskiysanya; zhilchenko; zfr475; Prog1CZUP31; CyberCerber; zoytsa; Puk2; Karmerruk; help1Ckr; anchovy; bulpi; RomanMartynenko; EmpireSer; rozer; asved.ru; dmpas; almierm; vvr908; ojiojiowka; +25 Ответить
2. logarifm 1105 22.10.14 16:51 Сейчас в теме
(1) Gureev, Тут все относительно.... Это тоже самое, что сделать обмен данными. Все зависит от целей конечного результата.
6. Gureev 23.10.14 09:17 Сейчас в теме
(2) что относительного в соблюдении логической целостности БД? Договор не запишется и все! В записанном контрагенте битая ссылка.
(5) fancy, Исключено. Повтор гуида это как сантаклаус - сказка для малышей

П,С, А ни у кого не завалялся готовый код формирования time-based GUID?
7. logarifm 1105 23.10.14 10:08 Сейчас в теме
(6) Gureev, я вже вроде как внятно написал Все зависит от целей конечного результата.
32. Gureev 24.10.14 15:21 Сейчас в теме
(7)
Все зависит от целей конечного результата.


Назовите хоть одну цель не уделять внимания контролю ссылочной целостности.

Цель "Неуделение внимания контролю ссылочной целостности" не принимается.

Без транзакции считаю данный код вредным и опасным.
the1; NorraSaltolinen; Brawler; Krio2; aairt; ojiojiowka; +6 Ответить
83. trupo 11.12.20 21:44 Сейчас в теме
(1)
(32) Например варианты:
1.вар. Уже всё завернуто в транзакцию значительно ранее
2.вар.
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); ДоговорКонтрагента.УстановитьСсылкуНового(НовыйДоговорСсылка);"
ДоговорКонтрагента.ОбменДанными.Загрузка = Истина;
ДоговорКонтрагента.Записать();
для того что бы не потерять ссылку.
А потом уже заполнение шапки в 30 реквизитов и 15 табличных частей этого Договора (я с такой конфой сталкивался) и там муторный алгоритм со своим ветвлением и запросами. Конечно там нужен рефакторинг - и на него бюджет :) ну или энтузиаст на месяц - полтора за спасибо.
Так что Все зависит от ситуации и от целей .
77. sanek_gk 106 14.07.17 08:31 Сейчас в теме
(2)
се зависит от целей конечного р
если не нужны битые ссылки при отказе записи значит нужно писать "пакетом", либо всё либо ничего. Именно это и посоветовал сделать (1) обернуть в транзакцию (это если по настоящему оптимизаровать)
3. davdykin 25 22.10.14 20:34 Сейчас в теме
(1) Gureev, Честно говоря не понял почему нужно соблюдать данное условие, ведь даже если транзакция будет зафиксирована после записи контрагента, а потом я в другой транзакции запишу договор, ссылка не должна измениться, ни на справочник контрагенты, ни на справочник договор, или я не прав?
4. ojiojiowka 22.10.14 21:19 Сейчас в теме
(3) davdykin, но ведь при записи договора может произойти ошибка. А так у метода есть небольшой недостаток - нарушается механизм формирования ссылок. Допустим, нельзя будет по ссылке определить дату создания объекта (минуя журнал регистрации) - на инфостарте есть такая публикация, значит кому-то полезно (мне тоже дважды пригодилось). Можно конечно написать свой генератор гуидов, который сохранит дату...
5. fancy 12 23.10.14 07:10 Сейчас в теме
А что если в момент записи контрагента будет инициировано создание нового объекта спр-ка Договоры (другим пользователем например) и новая ссылка будет сгенерирована используя тот-же уникальный идентификатор. Или это исключено?
81. w.r. 623 16.10.19 20:23 Сейчас в теме
(5) Думаю, что это предусмотрели и ссылка, полученная методом ПолучитьСсылку() резервируется платформой
8. PiccaHut001 23.10.14 12:53 Сейчас в теме
Интересные наблюдения, но, по мне, 2 раза записать спр контрагенты, или один - никакой разницы.
12. logarifm 1105 23.10.14 15:12 Сейчас в теме
(8) PiccaHut001, потому, что Вам еще не приходилось обслуживать загрузку справочников которые содержат более полутора миллионов записей. Вот тогда и начинаешь задумываться.
diamond_nsk; +1 Ответить
13. DoctorRoza 23.10.14 16:52 Сейчас в теме
(12) а у нас пацаны на районе, для загрузки более полутора миллиона записей, используют КД! :)
shalimski; help1Ckr; borda4ev; ojiojiowka; molodoi1sneg; +5 Ответить
14. logarifm 1105 23.10.14 17:10 Сейчас в теме
(13) DoctorRoza, а разве при КД кто-то отменяет физическую транзакцию!?
Или КД умеет загружать форматы из Екселя? Или дбф научилась читать?

у нас на районе просто делают по требованию клиента и не вырываем слов из контекста для забросок умных фраз. Или Вы полагаете, что имея 15-летний стаж программирования я не знаю что такое Транзакция? или КД? и еще кто тут отписывался решая поумничать. Как Вы полагаете знаю я это или же нет?
Sitex; jan27; +2 1 Ответить
28. DoctorRoza 24.10.14 08:30 Сейчас в теме
(14) ну полноте Вам, застремали меня не по-детски! Я же не в претензию и, тем более, без какого-либо осуждения! В обучающем курсе Дмитрия Шестабитова по мобильной Платформе, модуль 2, используется подобный механизм, но ведь не все его изучали! Предложенную идею нужно знать и помнить, поэтому и плюсанул! А Вы набросились сразу, знаю-не знаю, 15 лет! :|
anchovy; delete; spetzpozh; +3 Ответить
74. unoDosTres 26.01.15 15:08 Сейчас в теме
(14)
загружал из excel в 1с используя Кд, как говорится голь на выдумки хитра, эх 1с :)
17. PiccaHut001 23.10.14 18:04 Сейчас в теме
(12) загружать полтора миллиона новых контрагентов? КАК часто вы это делаете?
18. logarifm 1105 23.10.14 18:08 Сейчас в теме
(17) PiccaHut001, не загружать полтора миллиона, а загружать в справочник где уже есть поллтора миллиона.
Обслуживание билинговых систем.
21. PiccaHut001 23.10.14 18:54 Сейчас в теме
(18) и в чём тогда выигрыш вашего метода. Загрузить пару тысяч контрагентов, минут 5 максимум.
23. davdykin 25 23.10.14 20:28 Сейчас в теме
(21) PiccaHut001, А вы уверены что 5 минут, я вот думаю совсем нет. Т.к. операция записи самая ресурсоемкая для БД (из использованных в примере) , а тут экономия в 2 раза. Если интересно проверьте на БП 3.0.:) Да у способа довольно узкая область применения, но автору однозначный плюс за пример и описание.
29. PiccaHut001 24.10.14 10:07 Сейчас в теме
(23) davdykin, ага, целых 5 тысяч записей в одну табличку и 5 тысяч в другую. По объёму, мегабайт 20 (ОГО, как МНОГО). Плёвая задача для dbf СУБД 98-2000 годов. 1С 8.3 это ставит в ступор, приходится придумывать специальные приёмы оптимизации. Скажем спасибо борису и его замечательной команде талантливых студентов.
37. wunderland 201 24.10.14 18:40 Сейчас в теме
(29) ради интереса, посмотри сколько таблиц в SQL задействуют эти 2 справочника
82. Altez 257 11.07.20 15:35 Сейчас в теме
(29) Спасибо 1с за детство счастливоеверсионирование объектов, синхронизацию данных с различными планами обмена, журналирование, разделение данных, контроль на уровне записей, БСП, async/await, infostart
Прикрепленные файлы:
47. slazzy 42 27.10.14 11:11 Сейчас в теме
Сильно удивили комментарии, в статье написано, что оно не для гуру, а для новичков, но всё равно не могу не отметить, что
Пример привычной записи:


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

(8) PiccaHut001, утверждение заслуживающее увольнения, ничего личного.

Что до типовых, то метод используется и используется много где. К примеру в БСП(а она сейчас во всех типовых). Метод используется в подсистеме присоединенных файлов. Это АБСОЛЮТНО ТИПОВОЙ СПОСОБ РЕШЕНИЯ ЗАПИСИ СВЯЗАННЫХ ОБЪЕКТОВ. И никак иначе. Удивляет почему на автора накинулись.

Другой вопрос, что вот конкретно в типовых конкретно в контрагентах и договорах это не используется, потому что сама работа в типовой конфе организована по-другому. Вы сначала создаете контрагента, потом договор. Нету физически ситуации, когда вы из интерфейса делаете запись одновременно двух связанных объектов, это прерогатива обменов и загрузок. Но и в типовых это встречается, к примеру зашел в БП 3.0,
Вот кусок кода запись контрагента + контактное лицо,
	Если ДополнительныеСвойства.Свойство("ДанныеКонтактногоЛица")
		И ТипЗнч(ДополнительныеСвойства.ДанныеКонтактногоЛица) = Тип("Структура") Тогда
		
		КонтактноеЛицо = Справочники.КонтактныеЛица.СоздатьЭлемент();
		Если ЭтоНовый() Тогда
			СсылкаНового = ПолучитьСсылкуНового();
			Если НЕ ЗначениеЗаполнено(СсылкаНового) Тогда
				СсылкаНового = Справочники.Контрагенты.ПолучитьСсылку();
			КонецЕсли;
			УстановитьСсылкуНового(СсылкаНового);
			КонтактноеЛицо.ОбъектВладелец = СсылкаНового;
		Иначе
			КонтактноеЛицо.ОбъектВладелец = Ссылка;
		КонецЕсли;
		КонтактноеЛицо.ВидКонтактногоЛица = Перечисления.ВидыКонтактныхЛиц.КонтактноеЛицоКонтрагента;
		ЗаполнитьЗначенияСвойств(КонтактноеЛицо, ДополнительныеСвойства.ДанныеКонтактногоЛица);
		КонтактноеЛицо.Наименование = КонтактноеЛицо.Фамилия 
			+ ?(ЗначениеЗаполнено(КонтактноеЛицо.Имя), " " + КонтактноеЛицо.Имя, "")
			+ ?(ЗначениеЗаполнено(КонтактноеЛицо.Отчество), " " + КонтактноеЛицо.Отчество, "")
			+ ?(ЗначениеЗаполнено(КонтактноеЛицо.Должность), ", " + КонтактноеЛицо.Должность, "");
		КонтактноеЛицо.Записать();
		
		ОсновноеКонтактноеЛицо = КонтактноеЛицо.Ссылка;
		
	КонецЕсли;
Показать



(40) insurgut, всё не совсем так. Конкретно в 1С ситуация с битыми ссылками нормальна в определенных условиях, например в РИБ это вообще в норме вещей. Не надо быть столь категоричным. Другой вопрос, что такая запись и правда имеет смысл в транзации, и обычно так и делается.
An-Aleksey; Rudakov_D; CratosX; TeMochkiN; alexscamp; lex2707; worker1c; vozzhaev; ojiojiowka; monkbest; +10 Ответить
48. PiccaHut001 27.10.14 13:27 Сейчас в теме
(47) slazzy,
(8) PiccaHut001, утверждение заслуживающее увольнения, ничего личного.
Вы серьёзно? У вас на работе все "такие"? Что-же вы забыли в 1С, если программируете в машинных кодах? Интересно, вас не возмущает разница во времени выполнения присваивания целочисленной переменной на ассемблере и 1С. И "лишние" операции, которые 1С делает. Там разница в тысячи раз. Приходится очень серьёзно жертвовать скоростью, чтобы код был понятным. В моём случае, всего 2 раза, и удобство модификации кода стоит того. Вашим утверждениям не хватает того, чтобы вы над ними больше думали. Ничего личного.
Andreeei; +1 Ответить
49. slazzy 42 27.10.14 13:55 Сейчас в теме
(48) PiccaHut001, если для вас выполнить лишнюю запись объекта (самую сложную и длительную операцию в 1С) лишний раз это не проблема, тем самым замедляя транзакцию, вызывая дополнительные блокировки, ухудшая параллельность работы в условиях когда этого можно избежать путем написания 2-3 логичных строк кода, то у меня для вас плохие новости.

К тому же, как я показал выше - в типовых конфигурациях в подобной ситуации ВСЕГДА используется описанный метод. То есть вы откровенно игнорируете правильный подход к программированию в 1С, который настоятельно рекомендуется использовать по многочисленным причинам и используете более корявый и откровенно неправильный и при этом гордитесь этим потому, что ЯКОБЫ ваш код легче читается? Не надо всем рассказывать о своем невежестве.

Но я скажу даже больше. В примере который привел я, вообще нельзя сделать по-другому. Потому что запись связанного объекта выполняется в процедуре ПередЗаписью и повторная запись основного объекта вызовет рекурсивную запись.
50. logarifm 1105 27.10.14 14:24 Сейчас в теме
(49) slazzy, Да о чем тут говорить, люди не понимают, что говорят. У меня стояла задача, при записи накладной вовремя исполнения определенных условий, чтобы автоматически создавалась еще накладная и определенный товар перешол с одной табличной части в другую. при этом чтобы можно было попасть в такие накладные реквизитами. Собственно там много чего надо было сделать, но вот за основу было взято какраз таки УтановитьСсылку() и я не плакал о том, что там будет плохая читабельность кода. Я думал только как сделать это оптимальней и при возникновении ошибки откатится.

52. PiccaHut001 27.10.14 15:07 Сейчас в теме
(49) slazzy, у вас какая-то параллельная реальность: "типовые" конфигурации о которых никто не знает, "типовые" приёмы которыми никто не пользуется, основные проблемы
выполнить лишнюю запись объекта (самую сложную и длительную операцию в 1С)
с которыми никто не сталкивался. Вы точно 1С занимаетесь?
54. slazzy 42 27.10.14 15:13 Сейчас в теме
(52) PiccaHut001, я вам выше привел пример конкретно из типовой БСП и конкретно типовой Бухгалтерии 3.0, аналогичное видел и в УТ11, могу привести пример.
Хватит позориться, ну правда не серьезно это. Вы ещё скажите, что запросы в цикле это типовой прием разработки который удобно читаем и понятен.

Вы лучше приведите мне хотя бы ОДИН ПРИМЕР из типовых, где используется двойная запись. Нет, серьезно, найдите хоть один.
55. PiccaHut001 27.10.14 15:31 Сейчас в теме
(54) slazzy, в "моих" типовых такой проблемы не возникает: контрагент и договор вводятся вручную и отдельно , договор после контрагента.
56. slazzy 42 27.10.14 15:44 Сейчас в теме
(55) PiccaHut001,
tolyan_ekb; Flextor74; zfr475; jif; NazarovV; zoytsa; mrmasson; awk; sashocq; help1Ckr; Bezeus1; monkbest; ojiojiowka; logarifm; +14 Ответить
57. PiccaHut001 27.10.14 16:16 Сейчас в теме
(54) slazzy, неудобно искать, на работе у меня в основном самописки, но (56) меня убедил - открыл УПП 1.3 для Украины, там в справочнике контрагентов есть помощник ввода контрагентов. Вбил туда нового контрагента с контактным лицом и адресом, нажал ОК - запись Контрагента и договора была произведена 2 раза. Скриншот в моём профиле. Кто-нибудь подтвердите, что в русской УПП точно так-же? Дома проверю на более распространённых конфигурациях.
58. monkbest 115 27.10.14 16:41 Сейчас в теме
(57) PiccaHut001, при чем тут ручной ввод?
59. PiccaHut001 27.10.14 16:51 Сейчас в теме
(58) monkbest, вручную вбил в форму помошника ввода контрагента текст "контрагент2" и в соседнее окошко "ДанныеКонтактногоЛица1" нажал записать - контрагент записался 2 раза.
61. slazzy 42 28.10.14 09:37 Сейчас в теме
(57) PiccaHut001, я понимаю, что этот ответ такого как вы не убедит, но полагаю УПП 1.3 это прямой потомок 1.2, сделанного ещё под 8.1 и качество кода в некоторых местах там несколько нетипично для 8.3, тк код напрямую перекочевал в новые версии. Да и завязано там всё на работу с обычными формами. Собственно я в пример приводил сравнительно новые конфигурации, такие как БП 3.0, УТ 11 и прочие. В них везде где возможно пишут правильно. Сути это не меняет
62. PiccaHut001 28.10.14 10:13 Сейчас в теме
(61) slazzy, проверил на последней УПП 1.3, ситуация такая-же, как в (57), обработка помощник "регистрации данных нового клиента" записывает контрагента 2 раза, фото пруфы в моём профиле. В УТ11 я не нашёл аналогичного помощника, проблему с единицами измерения там тоже обошли, смотреть нечего.
Вы лучше приведите мне хотя бы ОДИН ПРИМЕР из типовых, где используется двойная запись. Нет, серьезно, найдите хоть один.
51. insurgut 200 27.10.14 14:57 Сейчас в теме
(47) slazzy, в типовой этот механизм не используется не повсеместно скорее по иной причине. При записи владельца производятся различные проверки (например на уникальность ИНН). Осуществлять создание того же договора (ну или единицы измерения в случае с номенклатурой) не имеет смысла, пока не будет успешна запись владельца.
В остальном я не категоричен, написал, что имеет смысл в транзакции, в случае использования в типовых конфигурациях. Вот только быстрее ли это отработает? Это наверное стоит уже выяснять тестированием. В случае же, когда при записи не осуществляется никаких проверок, и необходимо загрузить тысячи, десятки тысяч объектов в базе, когда не предполагается работа других пользователей - вариант предложенный тут - идеальный.
53. slazzy 42 27.10.14 15:10 Сейчас в теме
(51) insurgut, я очень извиняюсь, но вы несколько неправильно поняли мою мысль. В типовых это ИСПОЛЬЗУЕТСЯ и используется всегда и везде, когда надо синхронно записать 2 набора связанных данных. Пример я привел выше, он взят из типовой :) другой вопрос, что пример рассматриваемый конкретно тут это пример для обмена, то есть внешняя запись двух связанных объектов.

В типовых же подобные действия выполняются крайне редко, там чаще бывает к примеру запись контрагента и внутри этой записи уже запись договора(например), именно такой пример я и привел выше. И там как раз используется подобный метод.


Что до скорости, то две записи всегда быстрее трех записей.
А если про транзакции, то в контексте загрузки связанных данных транзакция в принципе практически обязательна, тк во многом в этом и смысл ускорения. Мы внутри транзакции связываем данные, которые друг без друга не имеют смысла и надо следить за их связанностью, чаще всего, и уже после этого их вместе записываем.

Prog1CZUP31; +1 Ответить
9. pricec 45 23.10.14 13:56 Сейчас в теме
ага, давайте в том же духе, все так заоптимизируем, чтобы потом невозможно было разобраться для чего вообще код написан.


10. dj_serega 383 23.10.14 13:59 Сейчас в теме
Ошибка в коде: СправочникКонтрагенты. Я так понял нужно Справочник.Контрагенты
11. igo1 253 23.10.14 14:48 Сейчас в теме
Это стандарт разработки (если необходимо на основании донной записи сделать другую), а те кто перезаписывают справочник два раза можно сказать учите мат часть
diamond_nsk; wunderland; +2 Ответить
15. monkbest 115 23.10.14 17:14 Сейчас в теме
Круто, я не знал. Единственно, злоупотреблять этим не стоит. Читабельность второго кода -> 0. В данном случае злоупотреблением является применение этого механизма к контрагенту. Ссылку договора сгенерили и сунули её в контрагента, а контрагента мы суем в договор, когда он уже записан, зачем ему предварительно ссылку генерить.
Не то чтобы я хотел придраться, статье "+", просто реально читабельность падает на глазах.
16. logarifm 1105 23.10.14 17:15 Сейчас в теме
(15) monkbest, Читабельность и Оптимизация это разное ;)
Да злоупотреблять не стоит. Тут не так даже я б сказал, просто стоит понимать применяя это. Устранить максимум <Объект не найден>
36. wunderland 201 24.10.14 18:36 Сейчас в теме
(16)(18) - да, 100% когда счет идет на миллионы транзакций, один штрих в коде/запросе может в результате дать "+" или "-" несколько часов выполнения. Обязательно применю, как раз на горизонте очередная нестандартная загрузка :)
43. Aleksey_3 27.10.14 09:27 Сейчас в теме
(15) Более того в типовой БП это работать не будет, потому что разработчики типовых при записи нового контрагента принудительно меняют ссылку (вот хз зачем они так сделали), поэтому я бы поостерёгся таких вот оптимизаторов подпускать к типовым, к этому кладезу граблей и недоразумений
Prog1CZUP31; +1 Ответить
44. PiccaHut001 27.10.14 10:03 Сейчас в теме
(43) Aleksey_3, Респект. Внезапно, Автор оптимизировал, записыватели тысяч контрагентов и миллионов штрихкодов оптимизировали - в итоге получили грабли.
46. logarifm 1105 27.10.14 10:14 Сейчас в теме
(44) PiccaHut001, а этот порыв мысля я даже и не понял
45. logarifm 1105 27.10.14 10:12 Сейчас в теме
(43) Aleksey_3, а я бы пооберегся таких людей которые не разбираются в штатном коде. И вместо того, чтобы найти причину говорят в ответ - ХЗ. Таких программистов я просто уволняю...

Ой и перед этим как ОРАТЬ "ЭТО РАБОТАТЬ НЕ БУДЕТ" изучить как минимум мат.часть, где говорится

ОбменДанными.Загрузка = Истина;

Но такие оруны работать должны только метлами....
jif; CratosX; Prog1CZUP31; ojiojiowka; aleksey.kubovtsov; monkbest; +6 Ответить
60. Aleksey_3 28.10.14 01:45 Сейчас в теме
(45) Ну расскажи, зачем писатели типовых так сделали. Почему для номенклатуры так не сделали?
И где у автора статьи про ОбменДанными.Загрузка = Истина; ?
19. dj_serega 383 23.10.14 18:45 Сейчас в теме
Так что на счет очепятки? СправочникКонтрагенты
20. HiGHT 23.10.14 18:49 Сейчас в теме
22. PiccaHut001 23.10.14 18:55 Сейчас в теме
(20) HiGHT, Конвертация данных - есть такая конфигурация- очередная святыня 1С.
24. asved.ru 35 23.10.14 20:59 Сейчас в теме
А через XDTO еще быстрее :)
androgin; +1 Ответить
25. logarifm 1105 23.10.14 22:35 Сейчас в теме
Да это узкая облать применения. поэтому я и написал. что не следует забывать о таких интересных методах иногда они очень хорошенько спасают ситуацию. Ну насчет читабельности кода есть малость, но это можно например еще в отдельную функцию вынести например чтобы не мешало в общем применении.

Но все-же радует, что эта маленькая статься вызвала такие эмоции. Значит люди интересуются и как обычно пытаются спустить под плинтус новые идеи )))))
26. Rustig 1466 23.10.14 23:23 Сейчас в теме
(0) вечная проблема:
при создании номенклатуры сначала записать ее первый вариант,
затем записать ЕдИзм, присвоив ЕдИзм.Владелец = Ном.Ссылка,
затем снова Ном.ЕдИзм = ЕдИзм.Ссылка.

по-моему автор предложил красивое решение.

(11) если это стандарт разработки, то где-то он должен быть описан?
к тому же я такой "ход конем" в типовых не встречал. есть примеры?
27. zqzq 23 24.10.14 08:27 Сейчас в теме
(26) Rustig, В Конвертации данных используется УстановитьСсылкуНового(). Кстати, поэтому в КД нежелательно в обработчиках эту процедуру использовать, можно поломать стандартную загрузку связанных объектов, сам на эти грабли наступал.
+ В реальном коде бывает полезно делать проверку с помощью ПолучитьСсылкуНового(), чтобы несколько раз не переназначить ссылку.
30. insurgut 200 24.10.14 10:31 Сейчас в теме
Действительно метод достаточно интересный. Однако он уместен только при использовании его в транзакции (либо без нее, но только в случае, когда не существует проверок с отказом при записи). А транзакция сама по себе вроде штука тоже не быстрая. Или заблуждаюсь?
70. alexscamp 28.12.14 20:46 Сейчас в теме
(30) insurgut, вы немного заблуждаетесь. транзакция - это про целостность данных, а не про скорость (чтобы все записалось или ничего не записалось, а не чтобы быстро или медленно).
31. burlakov 67 24.10.14 10:47 Сейчас в теме
просто и эффективно. спасибо Автор. сам как-то не додумался
33. logarifm 1105 24.10.14 15:39 Сейчас в теме
Если посмотреть, что говорит о <объект не найден> 1С, там все просто: это ничем не вредит базе. АБСОЛЮТНО!
А если во время загрузки и произошла ошибка не вижу ни одной проблема найти такие объекты и создать по этим ссылкам. Главное с ровными руками это делать. А если у людей по две левых руки то и транзакция ничем не поможет, к сожалению.
34. Gureev 24.10.14 16:15 Сейчас в теме
Ссы́лочная це́лостность (англ. referential integrity) — необходимое качество реляционной базы данных, заключающееся в отсутствии в любом её отношении внешних ключей, ссылающихся на несуществующие кортежи.

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

Есть правило, и оно должно соблюдаться. Нравится это вам или нет.
Flextor74; den4ik25rus; evillit; anchovy; +4 Ответить
38. logarifm 1105 24.10.14 20:23 Сейчас в теме
(34) Gureev, Это Вы будете заказчику в уши лить эту чушь!
35. SemenovaMarinaV 24.10.14 17:23 Сейчас в теме
39. logarifm 1105 24.10.14 20:29 Сейчас в теме
Здесь не ким образом не нарушается ссылочная целестность. Ибо когда объект не создан и на него ссылаются другие объекты. Еще раз пишу, для тех кто сидит в бронепоезде:

Если посмотреть, что говорит о <объект не найден> 1С, там все просто: это ничем не вредит базе. АБСОЛЮТНО!
А если во время загрузки и произошла ошибка не вижу ни одной проблема найти такие объекты и создать по этим ссылкам. Главное с ровными руками это делать. А если у людей по две левых руки то и транзакция ничем не поможет, к сожалению.
40. insurgut 200 24.10.14 21:42 Сейчас в теме
(39) а никто и не говорит, что при успешном завершении ссылочная целостность не будет нарушена. А что произойдет в случае, если номенклатура, в реквизит которой мы занесли ссылку на единицу измерения запишется успешно, а вот запись единицы остановится с какой-нибудь ошибкой? Тут она (целостность) и будет нарушена.
И понятное дело, что базе это никак не повредит. Но что-то мне подсказывает, что это довольно сильно расходится с основами реляционных баз данных :)
Отсюда и вывод - что метод по сути для единичного узкого применения. Никто не говорит, что он не состоятелен. Просто если его в массы продвигать (в смысле использовать в какой-нибудь рабочей конфигурации, с одновременной работой массы пользователей), заключать его в транзакцию надо. А тут уже не понятно, что быстрее - начало транзакции + 2 записи + фиксация транзакции, либо просто 3 записи.
Prog1CZUP31; zoytsa; anchovy; monkbest; +4 Ответить
41. logarifm 1105 24.10.14 21:47 Сейчас в теме
Ребята, а кто транзакции пишет единично?

Если вы оптимизируете объявляйте счетчики транзакций и фикируйте их пакетами. Вы что это же элементарные вещи.
42. insurgut 200 24.10.14 21:50 Сейчас в теме
(41) я бы назвал это скорее узким применением для решения определенной (по сути единичной) задачи :) Для чего ваш метод и хорош.
63. logarifm 1105 28.10.14 11:55 Сейчас в теме
Поскольку начался неадекватный срач отключил уведомления. Кто хочет задать мне вопрос, пишите просто в личку.
monkbest; xzorkiix; +2 Ответить
64. maldinitaly 29.10.14 11:13 Сейчас в теме
Всем, здравствуйте. Приведенный автором прием рассматривается в курсе по программированию Евгения Гилева (вроде Базовый курс). Автору статьи плюс, за то , что рассказал про этот метод.
65. xzorkiix 33 29.10.14 11:49 Сейчас в теме
5 копеек

1. Обернуть тело метода в транзакцию
2. Получить ТОЛЬКО НовыйДоговорСсылка
3. В договоре указать владельца как ДоговорКонтрагента.Владелец = НовыйКонтрагент.Ссылка;

Но и могут быть грабли при такой логике, если у контрагента например при записи анализируется основной договор - которого при таком методе и нет в ИБ на момент записи.
66. help1Ckr 30.10.14 11:14 Сейчас в теме
(65) xzorkiix, анализ обходится через ОбменДанными.Загрузка = Истина;
WKBAPKA; V_V_V; monkbest; +3 Ответить
68. insurgut 200 31.10.14 22:20 Сейчас в теме
(66) help1Ckr, не вводите людей в заблуждение.
72. WKBAPKA 211 05.01.15 13:22 Сейчас в теме
(66) help1Ckr,

хотел написать. без этого работать не будет )

а вообще да, открыли в статье секрет полишинеля )
67. glek 112 31.10.14 10:13 Сейчас в теме
Хорошая идея. Спасибо автору.
69. INTECH1 16.11.14 22:40 Сейчас в теме
Прикольно, когда человеку мыслящему как-то немного по-другому другой человек начинает что-то объяснять - сам вживую, бывает, наблюдаю в своем офисе. Не знаю, можно ли таких в одну команду набирать, но на Марс их вместе точно не отправишь - поубивают же друг-друга.
Тоже пользуюсь УстановитьСсылкуНового(). Например, в УПП была задача сделать, чтобы Счет на оплату привязывался непосредственно к Реализации (штатно Счет привязывается к Заказу покупателя) - ну, стараюсь делать правки конфигурации такие, чтобы обновлению это не мешало. Значит, добавляем регистр сведений, где будем хранить эту связь, ставим обработчик на Обработку заполнения Счета, созданного на основании Реализации, и в этом обработчике заранее создаем ссылку нового счета и записываем её в регистр. Тогда если Счет в итоге будет записан, то в регистре получим его ссылку. Если не будет записан - ну будет битая ссылка, считаем, что записи нет, перепишем её при повторном создании счета. Не знаю, что скажут Гуру, но работает, и не мешает мне обновлять конфу
71. Storung 01.01.15 22:52 Сейчас в теме
Есть одна особенность о которой автор не указал. Если попытаться записать договор контрагента раньше самого контрагента, то будет ошибка: "Поле Владелец не заполнено или заполнено не верно".
И означает это, что платформа не может проверить корректность владельца, так как подчинение у договора стоит только для Элементов, а объект в систему еще на записан то и проверка ЭтоГруппа не срабатывает.
Корректно отработает только при не иерархических справочниках или при подчинении группа и элементам, либо при установке признака ОбменДанными.Загрузка = Истина.
Ведь никто не запрещает сначала получить ссылку на контрагента, установить ее в договор и записать его, а потом уже самого контрагента.
Тогда откуда столько восторга и холивара на эту тему. Лучше описать особенности работы данного метода, а не "Смотрите какой крутой метод".
Basil_Kudinov; arslanov.rr; e-9; byte.mdfab; Prog1CZUP31; +5 Ответить
73. Storung 11.01.15 21:09 Сейчас в теме
WKBAPKA,
Без этого работать будет и использовать ОбменДанными.Загрузка = Истина НЕ правильно. Например при загрузке справочника происходит обновление полного наименования, но делается это после проверки ОбменДанными.Загрузка. Учитывать все эти нюансы при загрузке будет не верно, так как алгоритм может измениться в процессе обновления.
Потому не вводите людей в заблуждение, просто подчиненный справочник нужно записывать после основного.
75. Prog1CZUP31 29.07.15 17:24 Сейчас в теме
Хорошо что я прочитал до конца про возможные "подводные камни" такой оптимизации (особенно для типовых конфигураций и обход проверок ОбменДанными.Загрузка=Истина
Вот если действительно будет задача по оптимизации таблиц с миллионами строк или создания "билинговых систем" тогда стоим подумать, но для обычных обработок загрузки стоит все-таки поставить "старый" проверенный вариант. Даже для новых систем, критичных ко времени все-таки стоит вынести все в одну процедуру и при-необходимости потом заменить.
76. Resha 18.11.15 19:18 Сейчас в теме
Народ, а по-моему вместо
Справочник.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор)

надо
Справочник.Контрагенты.ПолучитьСсылку()

Иначе может получиться, что 1С "угадает" УИД из справочника. Да, это маловероятно, но в теории возможно.
78. www2000 57 15.11.18 01:15 Сейчас в теме
Исправьте, пожалуйста, НовыйКонтрагентСсылка = СправочникКонтрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор);
79. treedo 122 19.04.19 11:27 Сейчас в теме
Отличная идея! Только действительно нужно в транзакцию поместить что бы завершить эту идею ;)
80. zfr475 19.08.19 18:13 Сейчас в теме
В УТП стоят "заглушки" на подобный метод, при создании Номенклатуры и её ЕдиницИзмерения.
Жаль, не прокатило
84. user1252779 27 06.05.21 11:19 Сейчас в теме
Благодарю автора за статью
Очень помогло для восстановления битой ссылки в ЗУП 8.3 ( Документ.ОтражениеЗарплатывБухУчете)
Делюсь, вдруг кому пригодится.
В табличной части документа НачисленнаяЗарплатаИВзносы испортилась ссылка на ФизЛицо. Предположительно, в процессе синхронизации, с другой базой физик был уничтожен и взамен него был создан новый. В результате в таб.части документа образовалась ссылка <Объект не найден>
Внешней обработкой с кодом из статьи был создан одноименный физик с битой ссылкой взятой из документа
Затем через поиск и объединение дублей изничтожен.

Спасибо автору за публикацию!
85. user1252779 27 06.05.21 11:22 Сейчас в теме
код обработки:
&НаСервере
Процедура ВыполнитьНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическоеЛицо
|ИЗ Документ.ОтражениеЗарплатывБухУчете.НачисленнаяЗарплатаИВзносы
|ГДЕ Ссылка.Ссылка = &Ссылка И
| НомерСтроки = &НомерСтроки
|";

Запрос.УстановитьПараметр( "Ссылка", ДокОтр.Ссылка);
Запрос.УстановитьПараметр( "НомерСтроки", НомерСтроки);
РезультатЗапроса = Запрос.Выполнить();

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаНаФизЛицо = ВыборкаДетальныеЗаписи.ФизическоеЛицо;
КонецЦикла;

НовыйФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
НовыйФизЛицо.УстановитьСсылкуНового( СсылкаНаФизЛицо);
НовыйФизЛицо.УстановитьНовыйКод();
НовыйФизЛицо.Наименование = ФизЛицоНаименование;
НовыйФизЛицо.ФИО = ФизЛицоНаименование;
НовыйФизЛицо.Записать();
Иначе
Сообщить("Что-то не нашла такой строки в этом документе....");
КонецЕсли;

КонецПроцедуры
Показать
Оставьте свое сообщение

См. также

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    56427    tormozit    52    

Базовые принципы работы с регламентными заданиями подсистем БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В очередной публикации рассмотрим некоторые базовые приемы работы с регламентными заданиями в рамках библиотеки стандартных подсистем

22.05.2022    1398    quazare    15    

Еще раз о дополнительных реквизитах и дополнительных сведениях

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций v8 1cv8.cf Россия Бесплатно (free)

Дополнительные реквизиты и сведения существуют давно. Задумка очень хорошая. Суть этих механизмов понятна всем. По этому поводу написано много. Что тут можно сказать нового? Однако бес, как всегда, в деталях. Как создавали реквизиты в объектах типовых конфигураций, так и продолжаем это делать. Почему это происходит? За всех сказать не могу. Могу рассуждать только на своем примере. Являясь убежденным практиком, одно могу сказать вполне определенно. Если что-то на практике недостаточно удобно, то останется оно главным образом в теории... Если не приложить немного усилий.

11.05.2022    1525    user1374747    5    

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье я рассматриваю несколько полезных "классических" функций и процедур для работы с данными, которые уже встроены в БСП и готовы к использованию.

25.04.2022    3539    quazare    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    53377    tormozit    74    

Вывод табличных документов с разной ориентацией страниц в один pdf файл

Универсальные функции v8 Россия Бесплатно (free)

Привожу код для вывода нескольких табличных документов c разной ориентацией страниц в один файл pdf.

06.04.2022    1152    sdjoker    5    

Экспертный кейс. Расследование фатального замедления времени расчета себестоимости в 1С:ERP 2

HighLoad оптимизация Механизмы типовых конфигураций Запросы v8 ERP2 Бесплатно (free)

При выполнении нагрузочного тестирования информационной системы на базе 1С:ERP для одного из клиентов с целью оценки возможности миграции системы на PostgreSQL и Astra Linux мы столкнулись с неприемлемым увеличением времени выполнения расчета себестоимости. Строго говоря, сценарий тестирования закрытия месяца не был выполнен вообще – он не укладывался в таймаут выполнения теста, 24 часа. По прошествии 18 часов всё ещё шло выполнение операции «Распределение затрат и расчет себестоимости». Более 16 часов выполнялся подэтап “Расчет партий и себестоимости. Этап. Расчет себестоимости: РассчитатьСтоимость”. Всё это время выполнялся запрос, который в текущей инфраструктуре клиента (СУБД MS SQL Server) выполняется чуть более 3 минут на аналогичных данных.

25.03.2022    3175    it-expertise    92    

Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)

БСП (Библиотека стандартных подсистем) Универсальные функции v8 Бесплатно (free)

Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так... ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм...

07.03.2022    3538    vandalsvq    0    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Механизмы типовых конфигураций v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    48390    ids79    46    

Ни в ЗУП ногой!? А мне нравится! Часть 1. Главные сложности решения, что отталкивает

Зарплата Кадровый учет Механизмы типовых конфигураций Внедрение ИТ-системы v8 v8::СПР ЗУП2.5 ЗКБУ 1С7:ЗиК ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтоб начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

03.03.2022    4843    biimmap    56    

Убираем параметры из отбора СКД

Универсальные функции СКД v8 v8::СКД Бесплатно (free)

Заметка о некоторых технических нюансах параметров данных и отборов СКД.

17.02.2022    2781    Yashazz    28    

Действия при добавлении своего документа в конфигурацию ERP\КА

Механизмы типовых конфигураций v8 1cv8.cf Бесплатно (free)

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

02.02.2022    2554    Shining_ninja    15    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

14 универсальных функций, с примерами использования - для обычного и управляемого интерфейса

26.02.2016    44191    unichkin    47    

Конвертируем печатную форму pdf в картинку (jpg, gif, png и прочие) на сервере

Универсальные функции v8 1cv8.cf Бесплатно (free)

Была поставлена интересная задача конвертировать печатную форму в файл картинку. По условию задачи клиенту на почту нужно присылать только файл картинку (jpg, gif).

22.12.2021    3008    John_d    23    

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С v8 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    7994    acces969    95    

Готовые механизмы 1С: ЗУП, представления

Механизмы типовых конфигураций Запросы v8 v8::СПР ЗУП3.x БУ Бесплатно (free)

Здесь будет храниться архив запросов, которые могут помочь разработчику правильно строить отчеты и получать данные в 1С: ЗУП. Статью буду периодически дополнять.

03.11.2021    3215    Margo462    19    

Программные перечисления, ч.2: приемы кэширования при разработке Промо

Универсальные функции Механизмы платформы 1С Запросы v8 Бесплатно (free)

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

30.10.2017    28486    unichkin    18    

Взаимодействие с api Честный знак (Молочная продукция)

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    5394    user5300    57    

Из Word в табличный документ

Универсальные функции v8 Платформа 1C v8.2 Бесплатно (free)

Быстро и просто: текст, списки, таблицы. Готовый код

18.08.2021    2201    Yashazz    5    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    25576    unichkin    13    

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия БУ УУ Бесплатно (free)

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021    6817    quazare    4    

Доработка проведения в ERP 2.5 (регистр бухгалтерии Хозрасчетный)

Механизмы типовых конфигураций v8 ERP2 Россия БУ Бесплатно (free)

Покажу точки входа для доработки "типового" проведения документов в ERP для регистра бухгалтерии Хозрасчетный. Расскажу про "неочевидное" поведение системы. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.5.117).

20.05.2021    5227    BuriyLesha    39    

Предотвращение многократного вызова "ПриПолученииДанных" во время поиска в табличном поле в обычных формах

Универсальные функции v8 Бесплатно (free)

Долго искал решение: как при выводе строк заполнить значениями колонки, которые созданы программно, чтобы, не было тормозов при стандартном поиске. И с минимальными изменениями (легко контролируемыми, при обновлении).

07.04.2021    2451    Vlad_CK    9    

Ускорение отладки управляемых форм Промо

Универсальные функции v8 1cv8.cf Бесплатно (free)

Ускорение отладки управляемых форм в больших неповоротливых конфигурациях, когда заказчик просит что-то и сам не знает, что из этого получится.

23.05.2015    15418    moolex    5    

Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

Механизмы типовых конфигураций v8 ERP2 БУ Бесплатно (free)

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

10.01.2021    13950    BuriyLesha    11    

Способы получения данных из ЗУП

Механизмы типовых конфигураций v8 v8::СПР ЗУП3.x Россия БУ Бесплатно (free)

Рассмотрены варианты получения данных в конфигурации Зарплата и управление персоналом 3.1.

31.12.2020    4596    vazelin    3    

Генератор QR кодов для 1С без компонент через HTTP API

Универсальные функции v8 Бесплатно (free)

Самый простой, на мой взгляд, способ получить QR код для 1СV8. Без внешних компонент, как говорится, бесплатно, без смс и регистрации))

17.12.2020    6698    shell_maxim    28    

[8.2] Глобальные переменные в контексте сервера (управляемое приложение) Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Можно ли в 8.2 на сервере хранить ссылку на объект внешней компоненты? Можно! Рассмотрим на примере... Эта статья - отчет на вопрос в http://infostart.ru/forum/forum14/topic29689/

09.12.2009    38502    Душелов    34    

Сохранение настроек

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

22.11.2020    6010    the1    8    

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

Универсальные функции v8 Бесплатно (free)

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

07.10.2020    7676    ellavs    3    

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С v8 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    7764    Neti    47    

Правила жёлтого напильника. Часть 2

Механизмы типовых конфигураций Анализ и проектирование ИТ-систем v8 1cv8.cf Бесплатно (free)

Вторая часть правил внесения изменений в типовые конфигурации 1С

11.08.2020    5268    1c-intelligence    13    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    17245    YPermitin    27    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    19960    RPGrigorev    0    

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

Универсальные функции v8 1cv8.cf Бесплатно (free)

Навеяло от...http://infostart.ru/public/203664/ но с другого бока. Пришли пингвины, заявили... (а база перекурочена предшественниками как черепаха богом) хотим чтоб если есть в документе такой то реквизит, чтоб он всегда был заполнен... или же никогда там не выбирались группы и перечислили наименования справочников при ссылке на которые не должно быть пустот. И что? Я рыжий сидеть дня два прсматривать каждый из почти двух сотен доков? Потому и уродились три подписки на события. Описание в тексте Выбор групп проверяется на событие ПередЗаписью а проверка реквизитов на событии ОбработкаПроверкиЗаполнения

16.10.2013    14291    ser6702    7    

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Механизмы типовых конфигураций v8 ЗУП3.x Россия Бесплатно (free)

В данном обзоре дам описание полезных встроенных функций и процедур в конфигурации "Зарплата и управление персоналом 3.1".

19.07.2020    6914    quazare    8    

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции v8 БП3.0 УТ11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    10052    quazare    5    

Правила жёлтого напильника

Механизмы типовых конфигураций Анализ и проектирование ИТ-систем v8 1cv8.cf Бесплатно (free)

Как вносить изменения в типовые конфигурации при решении задач

19.06.2020    10359    1c-intelligence    67    

Отрицательные страховые взносы Промо

Механизмы типовых конфигураций Запросы Адаптация типовых решений v8 ЗКБУ Бесплатно (free)

Иногда возникает необходимость рассчитать страховые взносы с отрицательной базы, но типовая зарплата сделать этого не позволяет. Предлагаю пример изменения запросов на релизе ЗКБУ 1.0.47.2 и всё будет считаться. Проверено на больших бюджетных организациях.

30.10.2012    12561    Nowa    25    

Форма выбора (подбор) в управляемых формах

Универсальные функции v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    108521    user5300    29    

Как разрешить продажу по нулевой цене, или 100%-ная скидка. Простые примеры (КА 2.4, а также ERP 2.2 и УТ 11.4)

Механизмы типовых конфигураций v8 ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

Акции, бонусы, подарки, бесплатные буклеты... Это ограничено 1С и НК, но это очень хочется иметь в управленческой базе. При этом не хочется снимать программу с поддержки. Легко.

06.05.2020    10422    ne_en    20    

[v8] Несколько решений для работы с периодами и датами

Универсальные функции v8 1cv8.cf Бесплатно (free)

Несколько готовых решений нетривиальных задач.

25.03.2020    3689    1C_Casual    3    

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения. Промо

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Стандартные доработки. Запрет изменения документов “ЗаказовПокупателей”, по которым есть движения. Эта статья описывает процесс доработки типовых 1С конфигураций, для добавления возможности запретить редактировать документы, на основании которых другими документами уже сделаны движения в регистрах накопления. Это позволяет предотвратить часть ошибок, возникающих из-за действий пользователя задним числом.

07.04.2011    27586    milkers    25    

Получаем уровень группировки ячейки табличного документа

Универсальные функции v8 Бесплатно (free)

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

23.03.2020    5836    maxx    16    

Конвертация расширения cfe в конфигурацию сf руками

Механизмы типовых конфигураций v8 1cv8.cf Бесплатно (free)

Как быстро преобразовать расширение в конфигурацию (для дальнейшего переноса в основную конфигурацию, например).

18.03.2020    13001    wtlz    35    

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции v8 Россия Бесплатно (free)

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

04.01.2020    4307    AnatolPopov    7    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    34958    shakmaev    47    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.

25.12.2019    9432    brooho    21    

Автоматическое создание связанного объекта в базе 1С: Документооборот через бесшовную интеграцию

Универсальные функции Механизмы типовых конфигураций v8 ДО ERP2 БП3.0 УТ11 КА2 ЗУП3.x Бесплатно (free)

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

23.12.2019    4659    pavelpribytkin96    1    

Полезности | Дерево значений | Обычные формы |

Универсальные функции v8 Бесплатно (free)

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

04.12.2019    10163    Mellow    7    

Разбор любого JSON-объекта в соответствующую структуру

Универсальные функции v8 1cv8.cf Бесплатно (free)

Данная публикация предназначена разработчикам 1С, которым приходиться разбирать данные формата JSON. Выложенный пример кода создает объект типа Структура, полностью повторяющий структуру данных формата JSON.

13.11.2019    24971    user665435_al.windstorm    15