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

Публикация № 552536 03.10.16

Приемы и методы разработки - Инструментарий разработчика

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

1. Шаблон областей для модулей объектов, менеджеров, форм

Как многие знают, в типовых конфигурациях код модулей разделен на секции. Это помогает проще ориентироваться в коде. Я проанализировал различные объекты типовых конфигураций и создал заготовки для : 
    модуля формы
    модуля объекта
    модуля менеджера объекта
    общего модуля 
Замечание: конструкция #Область ИмяОбласти доступна под платформой 8.3, начиная с режима совместимости 8.2

Модуль формы
#Область ОбработчикиСобытийФормы



#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы



#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы_ИмяТаблицы



#КонецОбласти

#Область ОбработчикиКомандФормы



#КонецОбласти

#Область СлужебныеПроцедурыИФункции



#КонецОбласти
Модуль объекта
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс



#КонецОбласти

#Область ОбработчикиСобытий



#КонецОбласти

#Область СлужебныеПроцедурыИФункции



#КонецОбласти

#КонецЕсли
Модуль менеджера
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс



#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс



#КонецОбласти

#Область СлужебныеПроцедурыИФункции



#КонецОбласти

#КонецЕсли
Общий модуль
#Область ПрограммныйИнтерфейс



#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс



#КонецОбласти

#Область СлужебныеПроцедурыИФункции



#КонецОбласти

2. Шаблон проведения

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

В модуле объекта заполняем два обработчика

Модуль объекта документа
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
	ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);
	
	Документы.<НашДокумент>.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);
	
	ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
	
	<ОбщийМодуль1>Сервер.Отразить<Регистр1>(ДополнительныеСвойства, Движения, Отказ);
	<ОбщийМодуль1>Сервер.Отразить<Регистр2>(ДополнительныеСвойства, Движения, Отказ);

	
	ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
	
	ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
	
КонецПроцедуры

 

В модуле менеджера выполняем заполнение движений следующим образом

Модуль менеджера документа
Процедура ИнициализироватьДанныеДокумента(ДокументСсылка, ДополнительныеСвойства, Регистры = Неопределено) Экспорт
	
	////////////////////////////////////////////////////////////////////////////
	// Создадим запрос инициализации движений
	
	Запрос = Новый Запрос;
	ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
	
	////////////////////////////////////////////////////////////////////////////
	// Сформируем текст запроса
	
	ТекстыЗапроса = Новый СписокЗначений;
	ТекстЗапросаТаблица<Регистр1>(Запрос, ТекстыЗапроса, Регистры);
	ТекстЗапросаТаблица<Регистр2>(Запрос, ТекстыЗапроса, Регистры);

	
	ПроведениеСервер.ИницализироватьТаблицыДляДвижений(Запрос, ТекстыЗапроса, ДополнительныеСвойства.ТаблицыДляДвижений, Истина);
	
КонецПроцедуры

Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
	
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДанныеДокумента.Дата как Период,
	|	ДанныеДокумента.Организация
	|ИЗ
	|	Документ.<НашДокумент> КАК ДанныеДокумента
	|ГДЕ
	|	ДанныеДокумента.Ссылка = &Ссылка";
	Реквизиты = Запрос.Выполнить().Выбрать();
	Реквизиты.Следующий();
	
	Запрос.УстановитьПараметр("Период",		 Реквизиты.Период);
	Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
		
КонецПроцедуры

Функция ТекстЗапросаВременнаяТаблица<ТабличнаяЧасть1>(Запрос, ТекстыЗапроса)
	
	ИмяРегистра = "ВременнаяТаблица<ТабличнаяЧасть1>";
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	тч.НомерСтроки            КАК НомерСтроки,
	|	тч.Поле1                  КАК Поле1,
	|	тч.Поле2	           КАК Поле2
	|ПОМЕСТИТЬ
	|	ВременнаяТаблица<ТабличнаяЧасть1>
	|ИЗ
	|	Документ.<НашДокумент>.<ТабличнаяЧасть1> КАК тч
	|ГДЕ
	|	тч.Ссылка = &Ссылка
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса;
	
КонецФункции

Функция ТекстЗапросаТаблица<Регистр1>(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "<Регистр1>";
	
	Если НЕ ПроведениеСервер.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли; 
	
	Если НЕ ПроведениеСервер.ЕстьТаблицаЗапроса("ВременнаяТаблица<ТабличнаяЧасть1>", ТекстыЗапроса) Тогда
		ТекстЗапросаВременнаяТаблица<ТабличнаяЧасть1>(Запрос, ТекстыЗапроса);
	КонецЕсли; 
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	&Период                                КАК Период,
	|	&Организация                           КАК Организация,
	|	ТаблицаТовары.НомерСтроки              КАК НомерСтроки,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
	|	ТаблицаТовары.Номенклатура             КАК Номенклатура,
	|	ТаблицаТовары.Количество               КАК Количество
	|ИЗ
	|	ВременнаяТаблица<ТабличнаяЧасть1> КАК ТаблицаТовары
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса;
	
КонецФункции

 

Хочу отметить, что в приведенной схеме сначала табличная часть считывается во временную таблицу, а затем при заполнении движений используется уже эта временная таблица. С одной стороны это исключает повторные обращения к постоянной таблице БД, с другой стороны предоставляет дополнительные удобства (например, можно добавить служебные поля, которые потом использовать). 
Кроме того, такая схема хорошо подходит при использовании автоматизированного тестирования (TDD).

 

3. Шаблон управляемой формы документа, в котором перед проведением требуется задавать вопросы пользователю с запретом модальных вызовов

В типовой конфигурации у формы такого документа есть два служебных реквизита: 

 

Также добавляется служебная команда


В 

Модуль формы документа (команды)
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ОбщегоНазначения.ПровестиИЗакрыть(ЭтаФорма);
	
КонецПроцедуры

 

Обработчики ПередЗаписью() и ПослеЗаписи() выглядит примерно так:

Модуль формы документа (обработчики событий)
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	Если НеВыполнятьПроверкуПередЗаписью Тогда
		НеВыполнятьПроверкуПередЗаписью = Ложь;
		Возврат;
	КонецЕсли;
	
	Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		
		Отказ = Истина;
		ЗадатьВопрос1(ПараметрыЗаписи);
		
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	ОбщегоНазначения.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;

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

 

Кроме того, добавляется  служебная процедура Подключаемый_ЗакрытьФорму(), т.к. закрытие формы в типовых выполняется через обработчик ожидания, который выставляется после записи.

Модуль формы документа
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму() Экспорт
	
	Закрыть();
	
КонецПроцедуры

 

Дальше пишем наш код с проверками. Не забываем обработчики завершения делать экспортными. Я проверки написал так:

Модуль формы документа
&НаКлиенте
Процедура ЗадатьВопрос1(ПараметрыЗаписи)
	Оповещение = Новый ОписаниеОповещения("ЗадатьВопрос1Завершение", ЭтаФорма, ПараметрыЗаписи);
	ТекстВопроса = "Какой-то вопрос 1 ?";
	ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура ЗадатьВопрос1Завершение(Результат, ПараметрыЗаписи) Экспорт
	Если Результат = КодВозвратаДиалога.Да Тогда
		ЗадатьВопрос2(ПараметрыЗаписи);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗадатьВопрос2(ПараметрыЗаписи)
	Оповещение = Новый ОписаниеОповещения("ЗадатьВопрос2Завершение", ЭтаФорма, ПараметрыЗаписи);
	ТекстВопроса = "Какой-то вопрос 2 ?";
	ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура ЗадатьВопрос2Завершение(Результат, ПараметрыЗаписи) Экспорт
	Если Результат = КодВозвратаДиалога.Да Тогда
		ПередЗаписьюЗавершение(ПараметрыЗаписи);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписьюЗавершение(ПараметрыЗаписи)
	
	Результат = ОбщегоНазначения.ОбработатьЗаписьОбъектаВФорме(ЭтаФорма, ПараметрыЗаписи);
	
КонецПроцедуры

Хочу обратить внимание, что процедура ПередЗаписью() на клиенте вызывается два раза. Причем первый раз в ней выставляется Отказ=Истина, и вызывается первая процедура из цепочки вопросов. Если пройдены все необходимые проверки, то ПередЗаписью() вызывается второй раз программно, при этом начинается запись. Все обработчики записи/проведения из модуля объекта и модуля формы вызываются только после второго попадания в процедуру ПередЗаписью()

Файлы к статье

Шаблон 1

 

Шаблон 2
Пустая конфигурация, которая выполняет единственное действие - проведение некоторого документа по описанной схеме.

 

Шаблон 3
Пустая конфигурация, которая только выполняет только одно действие - провести и закрыть.

 

Зачем я написал эту статью?

Возможно, кому-нибудь после прочтения данной публикации придет мысль, что у меня нет собственных идей, и поэтому я пересказываю мысли из типовых конфигураций. НО это не соответствует действительности. На практике я часто сталкиваюсь с ситуацией, что многие разработчики при доработке типовых конфигураций не соблюдают идеологию, заложенную в этих конфигурациях изначально, и придумывают свои способы реализации стандартных действий (например, проведение). При этом зачастую сложность задачи оценивается оптимистично, без учета того, что код будет усложняться при тестировании, демонстрации заказчику, появлении неучтенных моментов и т.д. Это происходит потому, что “вытащить” некоторый механизм из типовой иногда бывает затратно по времени, т.к. там много всего лишнего, связанного со спецификой объекта. Поэтому разработчик понимает, что ему проще придумать свой, пусть неоптимальный механизм, чтобы уложиться в отведенное для задачи время. Из-за этого возникают проблемы на следующих стадиях. Лично мне не очень нравится дорабатывать такие велосипеды. Надеюсь, что после прочтения этой статьи, использовать описанные механизмы будет проще.

Скачать файлы

Наименование Файл Версия Размер
Шаблоны областей модулей

.st 1,94Kb
33
.st 1,94Kb 33 Скачать
Шаблон формы с вопросами перед проведением

.cf 10,47Kb
34
.cf 10,47Kb 34 Скачать
Шаблон проведения документа

.cf 15,07Kb
39
.cf 15,07Kb 39 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 03.10.16 09:33 Сейчас в теме
Я проанализировал различные объекты типовых конфигураций и создал заготовки для :

Всё это описано на ИТС. Можно ничего не анализировать, а просто почитать ИТС. Что то же мало кто делает....
2. Светлый ум 277 03.10.16 11:15 Сейчас в теме
(1) TODD22, чтобы ИТС почитать к нему доступ нужен
mrChOP93; hromovanton; +2 Ответить
3. json 03.10.16 11:27 Сейчас в теме
(1) TODD22,
хотелось бы узнать с какой страницей ИТС вы сравниваете и насколько материал представленный в данной статье совпадает с описанным там. Приведите ссылку на конкретный текст.
Пока предполагаю, что вы путаете шаблон с примером. На ИТС приводятся примеры и методические рекомендации, то есть теория. Я привожу шаблоны, то есть кусочки кода из практики, которые можно вставить при разработке копипастом, изменив несколько деталей. Разница между шаблоном и примером в том, что в примере нужно думать, а в шаблоне вы берете код уже продуманный кем-то другим
toltec; Erase22; Somebody1; Gang031; Maxis; Новиков; +6 Ответить
4. TODD22 18 03.10.16 11:31 Сейчас в теме
(3)
хотелось бы узнать с какой страницей ИТС вы сравниваете и насколько материал представленный в данной статье совпадает с описанным там. Приведите ссылку на конкретный текст.

Про структуру модулей
https://its.1c.ru/db/v8std#content:2149184104:hdoc
TimkoNzt; Igor_K_; the1; +3 Ответить
5. json 03.10.16 11:40 Сейчас в теме
(4) TODD22, на текущий момент у меня нет доступа к указанному вами разделу.
Планирую посмотреть позже, если совпадение действительно существенное, то заменю первый раздел в текущей статье на что-нибудь другое, т.к. не хочу повторять информацию, описанную в других источниках
6. TODD22 18 03.10.16 11:45 Сейчас в теме
(5)
о заменю первый раздел в текущей статье на что-нибудь другое

Лучше тогда не заменить, а дополнить описанием какие разделы в модулях и для чего. Для тех у кого доступа к ИТС нет.
h00k; json; +2 Ответить
22. webester 25 11.06.18 14:06 Сейчас в теме
(5)Вот вам то, что написано(смотрите вложение) если хотите иметь доступ к ИТС легально спросите меня как
Прикрепленные файлы:
456.pdf
24. Hans 2 14.10.19 10:04 Сейчас в теме
20. unichkin 1467 11.01.17 17:17 Сейчас в теме
(1)(2)В ИТС уже несколько лет работает тест-драйв.
Хорошая статья, такие нужны - и как можно больше. Чтобы наконец донести свет в массы:) По моему опыту - 6 из 10 программистов о ИТС тупо не знают. А из оставшихся трое - кладут на все это со словами "мне некогда", и тратят в 10 раз больше времени в попытках разобраться со своим-же кодом...
25. Hans 2 14.10.19 11:37 Сейчас в теме
(20) Тест драйв ни о чем. Просто посмотреть что там есть вообще, или искать решение конкретной задачи. Толк от этого только сиюминутный.
7. pbazeliuk 1916 03.10.16 14:33 Сейчас в теме
(0) В "модуле менеджера объекта" забыли про директивы компиляции, это очень важно для работы конструктора запросов в "Управляемом приложении (Толстый клиент)", а так же для ЦУП.
JohnyDeath; h00k; artbear; +3 Ответить
8. json 03.10.16 23:09 Сейчас в теме
(7) pbazeliuk, замечание справедливо. Исправил в статье
pbazeliuk; +1 Ответить
9. klinval 328 05.10.16 11:33 Сейчас в теме
Вопрос про "3. Шаблон управляемой формы документа, в котором перед проведением требуется задавать вопросы пользователю с запретом модальных вызовов":
1. Для какой конфигурации у вас примеры? Например ОбщегоНазначения.ОбработатьЗаписьОбъектаВФорме например в БП 3.0.44.124 нет.

Замечания:
1. Не обработана ситуация, когда пользователь нажимает крестик. Он нажимает крестик задаётся 3 вопроса (1 стандартный - платформенный), пользователь ожидает, что документ закроется, но он остаётся. У меня есть статься по данной теме Как использовать ПоказатьВопрос в обработчике формы ПередЗаписью там эта ситуация разбирается.
2. Лучше как нибудь по-другому назвать переменную НеВыполнятьПроверкуПередЗаписью. Тоже когда-то называли переменные с НЕ в начале. Потом появлялись конструкции вида:
Если Не НеВыполнятьПроверкуПередЗаписью Тогда

, которые ломали мозг при прочтении... Долго приходится соображать что делать если НеВыполнятьПроверкуПередЗаписью = Ложь. Плюс где-то на ИТС видел рекомендации 1С, что так называть не стоит.
Думаю заменить НеВыполнятьПроверкуПередЗаписью на ОтключитьПроверкуПередЗаписью будет правильней. Логику менять не придётся, только название переменной.
user847462; TODD22; +2 Ответить
10. TODD22 18 05.10.16 11:38 Сейчас в теме
(9) klinval,
НеВыполнятьПроверкуПередЗаписью

Да есть такая рекомендация на ИТС.
Мне тут то же досталась самописная конфигурация там таких "Не НеЗагружено" и тд по 10 штук в одном модуле... сиди мозг ломай....
11. json 05.10.16 11:58 Сейчас в теме
(9) klinval, данный пример из ерпи. Модуль в оригинале называется ОбщегоНазначенияУТКлиент.
Мое мнение такое: если я дорабатываю типовую конфигурацию, то стараюсь максимально следовать принципам, которые в ней используются. Если переменная называется так, и я с этим немного не согласен, то все равно использую подход принятый в системе.
Это совершенно нормально, что не все согласны абсолютно со всеми именами переменных, процедур и т.д.
Если каждый начнет применять собственный подходы (как обычно и происходит), то начинается каша.

По поводу БП - я посмотрю чуть позже, как там реализовано, может быть имеет смысл дополнить статью, подумаю
13. klinval 328 05.10.16 12:44 Сейчас в теме
(11)
Если переменная называется так, и я с этим немного не согласен, то все равно использую подход принятый в системе.

Согласен, что делать то. Но я же не знал, что это вынужденное название из типовой конфы. Вот только получается 1С-ники не следуют своим же правилам...
14. TODD22 18 05.10.16 12:47 Сейчас в теме
(13) klinval,
Вот только получается 1С-ники не следуют своим же правилам...

Когда разбирался в стандартах разработки, я сразу смотрел в типовых(УТ 11 и БП 3). часто встречалось отличие от соглашения по написанию кода.
Там то же люди пишут :)
21. unichkin 1467 11.01.17 19:26 Сейчас в теме
(14)
Когда разбирался в стандартах разработки, я сразу смотрел в типовых(УТ 11 и БП 3). часто встречалось отличие от соглашения по написанию кода.

Смотреть надо в БСП. Я думаю эти огрехи в типовых из-за старого кода - который писался еще в те времена, когда этот момент не был проработан.

(19) По идее, все подобные области должны быть отнесены к разделу "СлужебныеПроцедурыИФункции". Основные разделы модуля регламентированы - именно к ним что-то добавлять не надо. Вот внутри разделов уже можно помещать свое. Скажем, если сложная форма и есть куча обработчиков элементов формы, их можно как-то логически разнести - по страницам например
12. json 05.10.16 12:27 Сейчас в теме
(9) klinval, не согласен с высказанным замечанием, что покрываются не все случаи. Ваше предположение не соответствует действительности. В моем примере кнопка "Х" не доступна.
15. klinval 328 05.10.16 12:48 Сейчас в теме
(12) я скачал ваш CF-ник. Развернул на пустую базу и крестик доступен (см. приложенный файл).
Но допустим туда куда вы разворачивали крестик недоступен почему-то стал. Вы предлагаете другим тоже делать недоступным "Х" на всех стандартных или новых документах, чтобы предложенный функционал покрывал все случаи?
Прикрепленные файлы:
16. json 05.10.16 12:59 Сейчас в теме
(15) klinval, я невнимательно прочитал замечание. Ваша правда.
Чуть позже посмотрю как это обходят в типовых. Исправлю в статье также.
17. klinval 328 05.10.16 13:25 Сейчас в теме
(16) мне Сергей Ожерельев (Поручик) сказал, что
В форме контрагента в бухгалтерии 3.0 последних релизов тоже используется вопрос перед записью примерно по описанной методике.

На тот момент (03.07.2015) так и было, сейчас же не смотрел. Я оттуда код и взял, т.к. сам до этого не мог обойти эту ситуацию. У меня способ изложен в п.5 статьи.

По поводу покрытия на 100% когда "перед проведением требуется задавать вопросы ": к сожалению это невозможно. В той-же типовой БП вот с чем я столкнулся:
В обработчик формы «ПередЗаписью» программа не заходит, если: 1) пользователь нажал на кнопку «Пометить на удаление / снять пометку»; 2) если пользователь нажал на не проведённом документе кнопку «ДТ/КТ». И это не всё: если вы на форме документа создали всё, как я написал, и пользователь из формы списка перепроведёт документ – то никаких вопросов программа ему не задаст. Необходимо все интересующие вас кнопки на форме списка заменять на свои и отслеживать действия пользователя. Ещё у документа может быть не одна форма документа, а несколько (например, документ ПоступлениеТоваровУслуг в БП 3.0, где 3 формы: общая, товары и услуги). В каждой форме документа надо написать много кода…

+ Можно провести документ с формы обработки (внешней или внутренней)... Некоторые моменты ещё можно обойти, но слишком трудозатратно. Да на 100% покрытия обычно и не требуется.
18. json 05.10.16 21:31 Сейчас в теме
(17) klinval, спасибо за подробное описание. Замечание абсолютно справедливо. Посмотрел решение в типовой.
Добавил вот такой код:
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;

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

Теперь поведение корректное. Обновил в тексте публикации и в примере
19. vandalsvq 1198 17.11.16 09:26 Сейчас в теме
Я бы в структуру областей модуля формы добавил еще немного областей

#Область УправлениеФормой - здесь сконцентрированы все методы управления свойствами элементов формы (в спойлере пример процедур)
Методы управления свойствами элементов формы

#Область ЗавершениеНемодальныхВызовов - хотя это спорный момент, кому то нравится по коду распиханные экспорты, мне лично собранные в одном месте
#Область СлужебныеПроцедурыИФункции_БСП - здесь все методы для подсистем БСП которые находятся в форме, причем выделенные в отдельные области вроде Печать, Свойства и т.д.
23. rpgshnik 3101 26.09.18 04:29 Сейчас в теме
Оставьте свое сообщение

См. также

Проверка ведения учета (универсальная) Промо

Инструментарий разработчика Анализ учета Платформа 1С v8.3 Запросы Абонемент ($m)

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

2 стартмани

11.08.2020    7453    33    vozhd    4    

Функции "слоупока": как заставить открываться "Все функции" в 97 раз быстрее!

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Наверное, каждый программист 1С (да и не только программист), открывая «Функции для технического специалиста» (ранее «Все функции») на массивных конфигурациях вроде ERP 2.4 и т.п., в своей жизни много раз задавался вопросом – почему же они так долго открываются?? Действительно, в зависимости от мощностей сервера «Все функции» могут открываться от 20 секунд до 2 минут! «Ну, слишком много объектов в конфигурации, огромное количество констант, справочников, документов, регистров… – Отвечали себе страдающие пользователи. – Пока программа обойдёт в цикле все метаданные, пока построит дерево… Тут ничего не поделаешь…». И все они были не правы! Я провёл собственное расследование, которое показало, что 97% времени построения дерева метаданных тратится на…

1 стартмани

09.03.2022    14109    63    XilDen    74    

Программное формирование существующих печатных форм

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

17.12.2021    5618    16    RocKeR_13    3    

Универсальный редактор данных (УРД)

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    11203    177    Adeptus    53    

Тестирование проводок в ЕРП и КА Промо

Инструментарий разработчика Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бухгалтерский учет Абонемент ($m)

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

1 стартмани

02.09.2020    5482    28    JohnConnor    7    

HTTP-клиент

Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Абонемент ($m)

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    10522    34    SpaceOfMyHead    46    

Подсистема "Показатели объектов"

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    11138    6    pila86    16    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    15069    28    huxuxuya    11    

Навигатор по конфигурации базы 1С 8.3 Промо

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.89 от 04.08.2022

3 стартмани

28.10.2018    52498    471    ROL32    72    

Консоль кода для управляемых форм

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

17.07.2020    36620    523    salexdv    394    

Внешний регламент для 1С

Инструментарий разработчика Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    12974    12    moolex    12    

Конвейер проверки качества кода

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    46253    33    Stepa86    46    

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю...

1 стартмани

01.09.2012    72541    1403    AnryMc    46    

Markdown-editor в 1С (с сохранением в HTML)

Инструментарий разработчика Управляемые формы Конфигурации 1cv8 Абонемент ($m)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019    16650    30    riposte    6    

Запуск 1С под любым пользователем (без необходимости указания пароля)

Пароли Инструменты администратора БД Инструментарий разработчика Платформа 1С v8.3 Управление правами Конфигурации 1cv8 Абонемент ($m)

Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).

1 стартмани

02.07.2019    35631    407    sapervodichka    0    

Модель объекта

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    20646    2    vadim1980    5    

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

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.

1 стартмани

24.05.2012    90300    973    moolex    157    

Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.

1 стартмани

03.06.2019    46753    12    ripreal1    92    

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

13.05.2019    45922    189    Diversus    44    

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    30378    22    slozhenikin_com    37    

Консоль запросов с графом (Анализатор сложных запросов) Промо

Инструментарий разработчика Управляемые формы Запросы Конфигурации 1cv8 Абонемент ($m)

Консоль запросов для анализа запросов с большим количеством временных таблиц и вложенных запросов. Отображает структуру взаимосвязей временных таблиц в виде графа. Позволяет быстро передвигаться по тексту запроса и получать результат выполнения подзапросов. Единственная консоль запросов, которая позволяет выводить результат выполнения вложенных запросов и любой части объединения запроса. Удобное получение данных запроса из отладчика включая временные таблицы. Текст запроса в структурированном виде (можно свернуть, развернуть текст подзапроса). И еще много другого, чего вы не найдете в других консолях запросов. Поддержка УФ и ОФ. Версия 0.9.1 от 18.10.2019 (поддержка WebKit).

10 стартмани

03.05.2017    111956    529    manuel    294    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Склад и ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    70445    280    informa1555    239    

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    26197    27    RomikR    11    

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    61546    599    Eugen-S    36    

Консоль Внедренца v.3.6.2

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами - загрузка данных из табличного документа.

1 стартмани

27.08.2018    45627    499    evvakra    42    

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    143485    3310    Evg-Lylyk    796    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    42031    35    informa1555    30    

Консоль HTTP-запросов с генерацией кода

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    38489    369    leongl    20    

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    28036    33    33lab    5    

Заполняем по шаблону (по умолчанию)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

08.02.2018    39770    23    mvxyz    17    

Программное формирование форматированной строки в стиле html+inline CSS

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.11.2017    51573    54    bonv    13    

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

При обновлении платформы 1С:Предприятие 8 предыдущие версии не удаляются. Со временем количество неиспользуемых версий платформы растет. Они занимают место на диске. Для решения этой проблемы предназначена программа OneCleaner. Она позволяет быстро удалить неиспользуемые версии платформы, а также почистить кэш метаданных и удалить ненужные информационные базы данных.

1 стартмани

14.11.2017    33973    102    bonv    15    

Закрываем всплывающие сообщения платформы

Инструментарий разработчика Управляемые формы Абонемент ($m)

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

1 стартмани

10.11.2017    18459    13    RomaH    8    

Трансформатор 1С - SQL

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка для представления SQL запросов в терминах 1С, с возможностью захвата SQL запросов трассировкой.  Поддерживается также форматирование текста запроса через интернет сервис. Работает в управляемых и обычных формах, в том числе на веб-клиенте.

1 стартмани

28.06.2017    48854    419    Synoecium    54    

Набор подсистем "Умные таблицы"

Инструментарий разработчика Платформа 1С v8.3 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    43322    112    Silenser    34    

Автокликер для 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

03.04.2017    41798    86    slava_1c    67    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

13.03.2017    45614    129    romasna    54    

Сценарное тестирование в помощь программисту 1С

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

11.11.2016    35616    61    grumagargler    62    

Управление задачами: Канбан доска

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Конфигурация "Управление задачами" с использованием БСП. Канбан доска. Открытый код.Загрузка изменений из хранилища конфигураций 1С и связь с задачами. Проект выложен на github (ссылка в публикации). Управляемые формы. Рассылка уведомлений.

1 стартмани

02.10.2016    91270    716    BlizD    330    

Конструктор-тестер http запросов в 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    53794    338    hlopik    19    

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен)

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Беларусь Бухгалтерский учет НДС Абонемент ($m)

Подсистема включает документы и обработки для автоматического обмена данными с порталом ИМНС через web-сервис. Присутствует возможность заполнения данными типовых операций за период, учёта входящих документов, учёта произвольных исходящих документов. Приложены обработки для запуска задания планировщика на автоматический обмен данными.

1 стартмани

28.07.2016    42164    21    c1nil    4    

Навигатор по структуре и данным баз 1С 8

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Просмотр структуры и данных информационных баз 1С:Предприятие 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    37756    153    o.nikolaev    17