Как проводятся документы в типовых конфигурациях от 1С

Публикация № 1097936

Разработка - Практика программирования

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

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

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

Совсем вкратце он выглядит примерно так:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
...
    Документы.РеализацияТоваровУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства); // тут мы инициализируем таблицы для регистров
...
    ЗаказыСервер.ОтразитьЗаказыКлиентов(ДополнительныеСвойства, Движения, Отказ); // так выполняем запись
...
    ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ); // тут выполняется контроль
...
КонецПроцедуры

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

Свойства проведения документа.

Во-первых документы должны быть со следующими настройками режима проведения:

Режим проведения обязательно должен быть "Разрешить", а оперативное проведение чаще всего "Запретить". Удаление движения: "Не удалять автоматически" означает, что в "Обработке удаления" документа будут описаны процедуры, в которых явно будет прописано удаление движений при отмене проведения.

Схема проведения в событии "Обработка проведения".

Давайте для примера возьмем документ РегистрацияТранспортныхСредств (В ЕРП И УТ он должен быть). Не будем разбирать на примере документа РеализацияТоваровУслуг или других основных документах, т.к. они достаточно нагружены различными процедурами, которые будут отвлекать от нашей схемы проведения документа.

Сама обработка проведения нашего документа выглядит так:

 

К самой схеме проведения относятся процедуры:

1. ИнициализироватьДополнительныеСвойстваДляПроведения;
2. ИнициализироватьДанныеДокумента;
3. ПодготовитьНаборыЗаписейКРегистрацииДвижений;
4. ЗагрузитьТаблицыДвижений;
5. ЗаписатьНаборыЗаписей;
6. ОчиститьДополнительныеСвойстваДляПроведения;

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

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

Они являются специфичными для документа и могут отсутствовать в других документах.

 Давайте разберем по очереди каждую из этих процедур схемы проведения.

1.

Эта процедура инициализирует общие структуры, используемые для проведения документа.
Изменяется свойство ДокументОбъекта ДополнительныеСвойства в которое помещаются свойства:

"ТаблицыДляДвижений" - в него будут записываться таблицы, которые будут загружаться в регистр сведений (о чем речь пойдет далее);
"ДляПроведения" - будут содержаться свойства и реквизиты документы, используемые для проведения: "СтрукутраВременныеТаблицы" - записывается МенеджерВременныхТаблиц, записывается "Режим проведения" - режим проведения нашего документа, "МетаданныеДокумента" - метаданные документа и "Ссылка" - ссылка на текущий документ;

Теперь мы инициализировали данные, которые сможем использовать для проведения.

2.

Эта процедура одна из самых основных.

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

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

В конце этой процедуры перебираются все колонки РезультатаЗапроса и устанавливаются параметры в Запрос. Наши будущие таблицы движений, которые будут помещены в свойство "ТаблицыДляДвижений", будут использовать эти параметры.

В Функции ЗначенияПараметровПроцедения устанавливаются параметры в Запрос, которые берутся не из реквизитов

Теперь вернемся в процедуру ИнициализироватьДанныеДокумента и увидим несколько однотипных процедур:

По параметрам этих процедур видно, что они одинаковые. И выполняют одинаковую цель - добавляют в тексты запросов для каждого из регистров, по которым будут сформированы движения, которые будут отражены в регистрах.
Названия у них, как правило: "ТекстЗапроса" + "Таблица" + ИмяРегистра, где ИмяРегистра - имя регистра, движения которого будут формироваться этим запросом.

На мой взгляд первые 2 процедуры отступают от общепринятого стандарта формирования таких процедур, и там явно не хватет "ТекстЗапросаТаблица".

Разберем одну из такий процедур (функций):

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

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

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

(Имена псевдонимов в Тексте запроса и Имена Измерений(Ресурсов, Реквизитов) регистров должны совпадать.

(Имена псевдонимов в Тексте запроса и Имена Измерений(Ресурсов, Реквизитов) регистров должны совпадать.

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

 

3.

Данная процедура, как следует из ее описания выполняет 2 основных функции:
1. Очищает наборы записей от старых записей (в настоящее время все менее актуальна, т.к. чаще работают на тонких клиентах, а не на толстых);

2. Взводит флаг записи у регистров, по которым есть ТаблицыДляДвижений с количеством записей более 0. По сути смысл процедуры в строке Объект.Движения[ИмяРегистра].Записывать = Истина.

Также в этой процедуре удаляются регистры, по которым документ является регистратором, но движения пишутся не из модуля документа или отложенно, к примеру, регламентными заданиями.

4.

Загружаются Таблицы для движений из свойства "ТаблицыДляДвижений". По сути самая главная строчка - это Движения[ИмяРегистра].Загрузить(Таблица.Значение). Обратите внимание, что разработчики решили повторно взвести флаг Записывать = Истина, хотя его уже установили на 3 этапе схемы проведения. Все таблицы для проведения должны начинаться с слова "Таблица".

В данном случае загружаются таблицы в цикле, хотя могут также встречаться сразу несколько однотипных процедур с именами "Отразить" + ИмяРегистра, где ИмяРегистра - имя регистра, по которому отражаются движения.

5.

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

6.

Завершающая техническая процедура в которой по факту происходит закрытие МенеджераВременныхТаблиц.

Схема проведения в событии "Обработка  удаления проведения".

Схема удаления проведения похожа на обычную схему проведения, только в ней основных процедур не 6 (процедур в обработке проведения "Отразить" + ИмяРегистра (3) может быть несколько), а 4 необходимых только для удаления движений. Тут вызываются процедуры только общего модуля ПроведениеСерверУТ. Если сравнивать с обработкой проведения, то в обработке удаления проведения будут использоваться процедуры 1-3-5-6, ИнициализироватьДанныеДокумента(2) и ОтразитьДвиженияДокумента(4) отсутствуют.

Схема проверки Контролей при проведении документов.

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

Схема контроля при проведении:

1. СформироватьСписокРегистровДляКонтроля;
2. ВыполнитьКонтрольРезультатовПроведения;

1.

В процедуре видно, что если РежимЗаписи документа = Проведение, то добавляется 2 регистра, по которым будет проходить контроль. В Дополнительные свойства "ДляПроведения" вставляется свойство "РегистрыДляПроведения" с массивом регистров для контроля.

2.

Процедура ВыполнитьКонтрольРезультатовПроведения выполняет контроли по различным регистрам конфигурации.

Тут следует обратить внимание на процедуру ЕстьИзмененияВТаблице, в ней определяется по флагу, есть ли изменения в таблице регистра, если есть, то контроль будет выполняться. Есть ли изменения по данному регистру определяется в самом регистре в модуле набора записей в процедурах ПередЗаписью и ПриЗаписи. ПередЗаписью берутся данные, которые были до, а ПриЗаписи как правило через ОБЪЕДЕНИТЬ ВСЕ берется разница движений, и если разница между движениями есть, то взводится флаг ДвижениеСвободныеОстаткиИзменение, который и проверяется.

Далее добавляются запросы контроллей в один большой пакет запросов, а также в МассивКонтролей добавляются контроли, по которым будут проводится контроли.

В конце процедуры выполняется ПакетЗапросов, и если в есть не пустые результаты запроса из массива результатов, то из МассивКонтролей берется ИмяКонтроля и далее в много условном операторе Если ИначеЕсли ... КонецЕсли для каждого контроля выполняется своя процедура отработки сообщений об ошибках.

Надеюсь в этой статье мне удалось немного упростить ознакомление с типовой схемой проведения для тех, кто только встретился с этим механизмом.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. GROOVY 2555 24.07.19 23:58 Сейчас в теме
Там как бы много авторов https://its.1c.ru/db/pubmanagedui
А так выглядят материалы для типографии:
https://drive.google.com/drive/folders/0B2f7eow3JbLZcVhZOWtNN2ZUOHFydjVRM2s5MmxLZ­w?usp=sharing
:)
user774630; VooDOOPRo; creatermc; pbabincev; EMelihoff; sm.artem; +6 2 Ответить
5. skv_79 217 25.07.19 09:13 Сейчас в теме
(1) Да, авторов много, но Хрусталева шла первой в моей редацкии, поэтому запомнилось :). Да, согласен, это моя первая статья и наверно она очень далека от типографских стандартов.
2. bulpi 178 25.07.19 08:43 Сейчас в теме
Автор,
англоязычные люди не зря придумали аббревиатуру ИМХО.
конечно намного лучше и правильнее использовать типовой подход "Проведения документов" при выполнении процедуры проведения.

Вот тут вместо "конечно" напрашивается "ИМХО". Я бы плюс поставил, полезная статья. Но безапелляционно утверждать, что этот БРЕД БРЕДЯЦКИЙ (ИМХО, конечно) - это образец для подражания - .... слов нет.
rovenko.n; philya; +2 2 Ответить
6. skv_79 217 25.07.19 09:16 Сейчас в теме
(2) Вся эта статься - ИМХО, мое видение как это работает в типовых.
Трактор; +1 Ответить
3. DoctorRoza 25.07.19 08:50 Сейчас в теме
Ну такое нужно знать, как Отче Наш.
4. Aftee 25.07.19 09:09 Сейчас в теме
Увидев заголовок статьи, радостно подумал, что наконец-то смогу приблизится к пониманию алгоритмов проведения документов в ЗУП 3.1. Увы... Схема проведения - возможно, но остальное... Либо разбираемый пример в статье слишком простой (как большинство разбираемых примеров, так уж завелось), и в других документах дела обстоят "немного иначе", либо зависит от конфигурации (хотелось бы думать, что второе).
Summer_13; philya; begemot; acanta; +4 Ответить
7. skv_79 217 25.07.19 09:18 Сейчас в теме
(4) С ЗУП дела не имел, поэтому не могу сказать как там проводятся, эта статья для ЕРП и УТ. И для нее взяты самые простые документы в конфигурации, т.к. статья написана для ознакомления (читать начинающего работать с типовыми конфигурациями) со схемой проведения.
24. philya 83 31.07.19 10:11 Сейчас в теме
(7) как-как... ЗУП прекрасна. Глубина стека вызовов уровней в 10-15. Множественные вызовы функций из одной строки, которые просто вызывают следующую функцию. Запросы в 100 килобайт текста. Несколько почти одинаковых запросов по списку сотрудников.

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

Вспоминаем ЗУП 7.7, которая с меньшим числом свистелок, но фантастической скоростью считала ту же самую зарплату и плачем. )
Power_0N; erplab; raider-rec@ya.ru; WellMaster; Yashazz; rintik; maxopik2; Cерый; vlad3190; akimych; Silenser; +11 Ответить
28. CMK0001 02.08.19 12:53 Сейчас в теме
8. PLAstic 263 25.07.19 10:03 Сейчас в теме
(4) Пример вполне классический для УТ11. Поверхностно рассмотрен механизм контролей, в остальном достаточно для понимания.
20. Бубузяка 62 28.07.19 13:21 Сейчас в теме
(4)
либо зависит от конфигурации

В БП несколько по другому, но, в целом, подход такой же. Через МВТ набираются таблицы значений.
9. PLAstic 263 25.07.19 10:05 Сейчас в теме
Я бы рекомендовал:
1) Вернуть шрифт в стандартный для статей. Мне показалось, он мелкий и пришлось увеличивать до 120% масштаб.
2) В картинках убрать чёрный курсив и выделить имена процедур красной рамкой. Очень плохо читается.
3) Загрузить текст в ворд и исправить орфографию и пунктуацию.

В остальном нормальная статья. Добавил себе, буду новичкам скидывать.
WellMaster; AlbinaAAA; Summer_13; Darklight; cleaner_it; +5 Ответить
10. DBOdin_Lab 25.07.19 10:07 Сейчас в теме
Знать это все хорошо и правильно.
Но давайте взглянем на эту технику проведения под иным углом.
Мы все хотим быстрого проведения. Самые большие задержки возникают от обращений к базе данных. А теперь давайте посчитаем, сколько запросов к базе данных выполняется в процессе проведения (не считая записи результирующих движений):
1. Чтение реквизитов шапки документов;
2. Чтение табличных частей;
3. Запись временных таблиц (не зря же используется МенеджерВременныхТаблиц);
4. Чтение из временных таблиц;

Но если подумать, то все (или почти все) нужные нам данные уже есть в объекте. Можно заполнить движения без дополнительных обращений к базе.

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

А вы что думаете?
Yashazz; philya; +2 1 Ответить
11. dhurricane 25.07.19 10:21 Сейчас в теме
(10)
или почти все
Мне кажется, что как раз из-за того, что очень часто обращения к БД не избежать, получение реквизитов выполняется всегда запросом.

можно избежать просто проверив модифицированность объекта
Продолжите, пожалуйста, свою мысль. Как именно избежать? Что предполагается делать после проверки?
12. DBOdin_Lab 25.07.19 11:05 Сейчас в теме
(11)
Продолжите, пожалуйста, свою мысль. Как именно избежать? Что предполагается делать после проверки?


В обработке проведения нужно проверить модифицированность объекта, и если она Истина, то вызвать исключение с описанием ошибки.
Дальше программисту нужно устранить в ПриЗаписи и в подписках изменение объекта.
13. dhurricane 25.07.19 12:03 Сейчас в теме
(12) Думаю, что ситуация, когда объект модифицируется в обработчиках "ПриЗаписи" или "ОбработкаПроведения", является нештатной, и скорее всего это осознанный шаг, на который пошел разработчик. Следовательно и исключение бросать бессмысленно - разработчик его просто "отключит".

Полагаю, тут удобство именно в том, что далеко не все есть в табличных частях и реквизитах, и часто требуется запросом получить дополнительную информацию. Плюс есть возможность используя один и тот же программный интерфейс отразить движения документа без его перезаписи, т.е. без получения объекта, используя одну ссылку.
15. DBOdin_Lab 25.07.19 13:10 Сейчас в теме
(13)
Плюс есть возможность используя один и тот же программный интерфейс отразить движения документа без его перезаписи, т.е. без получения объекта, используя одну ссылку.


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

Как бы мне хотелось увидеть когда-нибудь групповое перепроведение без записи!
21. Бубузяка 62 28.07.19 13:27 Сейчас в теме
(15) Если перепроведение подразумевает только "толкание" регистров, то документ записывать не надо. Вызываем в модуле менеджера "ПодготовитьПараметрыПроведения" и получаем набор таблиц необходимых для подготовки вспомогательных данных и формирования движений. Далее вызываем методы модуля менеджера документа или программный интерфейс общих модулей. Таким образом можно "двинуть" только те регистры, что требуются.
14. baracuda 2 25.07.19 12:46 Сейчас в теме
годно, только много букв. надеюсь осилю этот текст
16. triviumfan 24 25.07.19 20:55 Сейчас в теме
Была похожая тема: https://infostart.ru/public/1026226/
И ещё одна, не могу найти.
17. json 2760 26.07.19 07:59 Сейчас в теме
18. pasha_2001 26.07.19 16:42 Сейчас в теме
Вопрос в тему: В процедурах ТекстОтраженияВРеглУчете() где идет выборка для проводок часто можно видеть в запросе ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт, ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетДт,
Каким образом и где подбираются корректные значения в данные строки?
19. Rashid80 28 28.07.19 09:51 Сейчас в теме
А потом 1с поменяет эти правила (разумеется в типовых документах она все исправит)... И ваши корректные проведения вдруг окажутся некорректными. Пока это не объявлено как интерфейс или api - это риск.
Периодически натыкаюсь что экспортные процедуры общих модулей поменяли перечень параметров или стали не экспортными
sevushka; raider-rec@ya.ru; Chai Nic; Summer_13; philya; Darklight; +6 Ответить
25. philya 83 31.07.19 10:15 Сейчас в теме
(19) Еще бывает, что их просто удаляют. Поэтому стараюсь не ленится и вытаскивать код из общих модулей во внешние обработки целиком - потом возвращать работоспособность проще.
Rashid80; +1 Ответить
29. Summer_13 07.08.19 15:03 Сейчас в теме
22. Бубузяка 62 28.07.19 13:39 Сейчас в теме
Считаю, что это полезная статья.
Она для тех, кто только начинает поддержку и сопровождение типовых конфигураций или решил закончить со свободным творчеством.
1. Если писать в стиле, принятом в типовом решении, тогда ваши последователи легко освоят ваше творчество.
2. У 1С есть ресурсы на исследование и оптимизацию процессов, связанных с изменением данных в транзакции, у меня таких ресурсов нет. Поэтому я следую стандартам разработки и повторяю приемы поставщика.

Про риски. После обновления должно выполняться минимальное тестирование. Хотя бы на открытие форм и проведение документов. Этот процесс снизит риск лишиться работы.
33. Yashazz 3582 25.12.19 17:44 Сейчас в теме
(22) Если писать втрое проще прямо в модуле объекта и прямо нужные движения, то освоят ещё легче. А 1С очередной раз наворотила адскую хрень и когда их собственные спецы окончательно в ней запутаются, очередной раз устроит всем на "радость" полный рефакторинг.

И это автор ещё не касался генерации проводок БУ/НУ в ЕРП и КА, которые вообще вынесены в фоновку и неописуемо "прекрасны" при попытке их менять и отлаживать.
23. Darklight 24 30.07.19 13:44 Сейчас в теме
За статью спасибо. Но, сам механизм, конечной. бредовый. Нет, идея правильная - разделять настройки, требования, сбор данных, действия и контроль на отдельные блоки это здравая идея. Но то, как архитектурно это построено и как реализован - это кошмар. Куча лишнего кода, нерациональное использование памяти, куча циклов, повторяющиеся условия, разбросанные по куче модулей алгоритмы - это бред. И даже унификация это бреда внутри одного документа страдает. И что-то я не увидел секции наложения управляемых блокировок (ну там где остатки не контроллируются постфактум)

На мой взгляд - описание проведения должно быть более декларативным, по чётко-выделенным секциям, желательно в особой текстовой (XML?) схеме, cодержащей:

1. Требования к получению настроек (общих (обычно функциональные опции), организации (учетная политика), документа (внутренние опции и режимы))
2. Требования к получению источников данных (таблицы и поля),и их блокировки
3. Описание алгоритмов преобразования источников в движения (обычно построчные - т.е. принимающие строку к обработке)
4. Требования к источникам данных (дополнительные фильтры, настроенные исходя из текущий настроек п.1)
5. Описание ожидаемых выходных данных - наборов движений
6. Описание схемы обработки данных: ветвления условий (если таковы есть для конкретных данных) и связанные с ними алгоритмы обработки
7. Описание текстов шаблонов возможных ошибок (если общие не годятся)
8. Требования контроля данных
9. Описание алгоритмов постобработки (если требуются)

Так вот, эти секции схемы должны заполняться операциями, зарегистрированными по документу, т.е. документ может совершать целый набор разных операций (как совершенно отличных, зависящих от режима), так и связанных (выполняемых вместе/последовательно).
Каждая операция должна должна иметь своё заполнение каждой вышеназванной секции - повторяющиеся требования - сворачиваются, требования с разными условиями - объединяются (а условия будут наложены уже при обработке), источники данных объединяются (я имею в виду, в первую очередь, объединение полей, но таблицы тоже могут объединяться через "ОБЪЕДЕНИТЬ ВСЕ" при наличии сложных условий "ИЛИ" - это уже задача внутреннего оптимизатора генератора финальной схемы, который, правда, должен операться на возможные хинты, оставленные архитектором схемы)

Ну и в итоге - на основе финальной схемы (кстати, учитывающей и операции и модификации, расположенные в расширениях) должна произойти кодогенерация алгоритма выполнения проведения документа, по заданному шаблону (для разных событий модуля документа - свои блоки кодогенерации, с расстановкой управляемых блокировок).
Правда, финальных схем может быть и несколько - если у документа есть несколько различных режимов поведения или схемы сильно отличаются в зависимости от учетной политики - тогда у документа должна быть небольшая доп секция условий ветвления - для выбора нужной схемы (вернее сгенерированного алгоритма, ей соотествующего) в начале проведения.
Так же, по хорошему, при кодогенерации должны быть получены все значения функциональных опций - должны быть проверены все ветки условий, на них основанные - всё что "ЛОЖЬ" - должно быть выброшено из кодогенерации, и соответственно - выброшено из обработки алгоритмами (например, не используемые поля таблиц). Если знаения опций различны для разных организаций - то генерируются раздельные схемы для каждой организации (ну, либо опция должна иметь пометку проверки только в рантайм).

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

Вот такое моё виденье того, как должно выглядеть современное проведение документов. Основаное на предварительно выполненных этапах:
1. Регистрация операций
2. Декларирование схемы (для каждой операции, и получение финальной схемы)
3. Кодогегенерация алгоритмов проведения (но основе финальной схемы или набора финальных схем)
4. Выполнение оптимизированного алгоритма, с минимальным числом циклов и обращений к базе данных

То есть - что-то типа ещё более продвинутой компоновки данных, но для проведения! Где исхначально есть несколько схем, которые перед кодогенерацией (не только запросов, но и алгоритмов обрабтки) ещё и объединяются в единую схему, с оптимизацией и выкидыванием лишнего.

P.S.
Кстати, операции, при декларировании своих схем - могли бы ещё ссылаться на другие схемы и шаблоны, установленные в конфигурации, например на различные шаблоны отражения регл проводок.

P.P.S.
И само собой, должен быть какой-то автоматизированный мастер-конструктор, позволяющий визуально (хотя поддержка макро-скрипта тоже не помешала бы) настраивать секции схемы для каждой операции (независимо, хотя сама опрация может имеить прописанные зависимости от другой операции, и элементы, наследуемые из неё, при этом может их расширять)
Yashazz; EMelihoff; Chai Nic; philya; +4 Ответить
26. skv_79 217 31.07.19 18:16 Сейчас в теме
(23)Интересная мысль про новую "Схему СКД" для проведения документов. Но вот мне кажется 1С сейчас сконцентрированы на другом: расширения, EDT. Про движения, наверно, вспомнят еще не скоро... Скажем так, сейчас в 1С развиваются те технологии, монетизация который достаточно высока. А обычном программисте, который пишет там свои движения, никто особо и не думает :)
27. Darklight 24 01.08.19 10:30 Сейчас в теме
(26)Не согласен с тем, что компания 1С сейчас не думает о программистах. Как раз со времён выхода 1С: Предприятие 8.3 очень даже думает. Не так много, как хотелось бы (вот, язык - вообще не развивается), но тут во много всё ограничивается консервативным настроем руководства (а может и ведущих архитекторов) компании, на то как должна развиваться платформа, в т.ч. в части конфигурирования, и внешнего вида для пользователей (и тут переход на УФ и управляемое приложение уже был гигантским скачком, надо заметить - что фактически этот скачок пока так и не завершён - и его можно смело считать не особо успешным).

А то, о чём я написал в (23) возможно только во одном из сценариев (или одном, плавно перетекающим в другой):

1. Представление совершенно нового продукта с иной архитектурой - а-ка 1С: Предприятие 9 - крайне маловероятный сценарий на ближайшие десятилетия

2. Создание расширения (плагина) для IDE EDT (хм... кстати, не только для EDT - такой плагин можно было бы создать для многих редакторов, поддерживающих редактирование 1С, например для Visual Studio Code - но в них в таком плагине нет большого смысла, без других плагинов, которые есть в составе EDT) – которое (расширение IDE) могло бы управлять новыми видами элементов проекта - генерируя классические выходные метаданные для загрузки в платформу (и в конфигуратор; без поддержки оных самим конфигуратором) - сценарий интересный, но трудно представить что кто-то за него возьмётся в ближайшие лет десять, по крайней мере, пока EDT не станет популярнее, чем конфигуратор (и не будет ему ни в чём ступать, по крайней мере при разработке управляемых приложений, ну разве что в скорости EDT наверняка всегда будет медленнее, классического конфигуратора)

3. Создание внешнего препроцессора для конфигурации (для классического конфигуратора, или для EDT - это не важно), который на основе, скажем, XML схем будет их объединять, совершать кодогенерацию и встраивать результат в целевую конфигурацию (через загрузку файлов) - этот сценарий проще 2-го, такой препроцессор сделать не очень сложно, но, хорошо бы ещё иметь визуальный редактор для XML схем - в принципе это всё можно налабать на 1С, а для препроцессора хорошо подойдёт OneScript движок). Другое дело, что таким решением пользоваться будет менее удобно (чем встроенным в IDE) - как минимум возникает две конфигурации (хотя можно и одной обойтись - тут много вариантов как это всё организовать), одна из которых будет являться исходником, а вторая - целевой после генерирования – либо рабочей, либо тестовой, либо посредником между ними. Но вряд ли это будет популярное решение из-за его извращённости

4. Ограничится только библиотечным фреймворком внутри конфигурации. Этот вариант сильно урезан по возможностям, в первую очередь по оптимизации, но основные принципы ( по крайней мере для алгоритмов проведения) предложенного мной решения вполне реализуемы просто ручным разнесением алгоритмов по заданным секциям модулей, и соблюдением определённых правил (API) такого фреймворка. Это сценарий, близкий к тому, что сейчас делается в типовых конфигурация 1С, просто подразумевает более продвинутую структуру чётких правил и требований по их соблюдению. И главное - ориентированность на модульность исходных данных и то, что их "фабричное" состояние не является финальным, и конченый потребитель может их расширять и модифицировать в широком диапазоне, не изменяя напрямую код поставщика. Тут очень хорошо подойдёт парадигма аспектно-ориентированного программирования (ну или хотя бы применение стратегии DI - Внедрение зависимостей) - чего так не хватает конфигурациям 1С (ну а если бы стратегию АОО поддерживал язык платформы 1С, как, например, нативно поддерживает язык Eiffel или AspectJ (многие другие языки поддерживают хотя бы DI через библиотеки), было бы вообще очень круто).
Тут так же хорошо бы иметь какой-то визуальный генератор хотя бы начального шаблона - правил - который проще было бы уже потом соблюдать.
Эта стратегия не сложна - и вполне реализуем уже в этом десятилетии

5. Комбинированный вариант 3. и 4. Здесь препроцессор встроен в рантайм. То есть - настройка схемы осуществляется в XML (ну или ином формате, это не важно, в виде макетов), которые сохраняются в конфигурации (алгоритмы так же сохраняются в конфигурации но в общих модулях, в схеме - только ссылки на них), а при проведении документа - схема XML "интерпретируется" на лету так же на лету происходит некоторая кодогенерация (в основном запросов, ну и некоторых коллекций) и через оператор "Выполнить" осуществляется запуск нужных алгоритмов в нужной последовательности в универсальном алгоритме обработки проведения, с применением стратегии DI - Внедрение зависимостей, с помощью которой в алгоритмы передаются некоторые сгенерированные части кода и данных.
Этот вариант очень хорош для тестирования, и несильно требовательного к производительности "продакшена" - а ну а для релизов в рабочие базу - лучше автоматически конвертировать-таки конфигурации, например, через вариант 3.
Это тоже не шибко сложный вариант, но он один из самых ограниченных по возможностям. Его можно сделать где-то за год, а базовые рабочие реализации получить за пару тройку месяцев

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

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


P.S.
Ну а вообще, говоря о сборке документов из операций, я имел в виду не только проведение. Но и формирование печатных форм, авто сборку интерфейсов форм, да и, вообще, сборку всего объекта метаданного (включаемая элементы хранения данных и прав доступа к ним). То есть предложенное мной решение - это прямая дорого к стратегии модульных конфигураций, имеющих принципиальное отличие структуры редактируемой конфигурации от конфигурации ИБ (конфигурация ИБ должна генерироваться путём сборки редактируемой конфигурации из множества отдельных составляющих, с отключением неиспользуемых элементов и блоков кода, и применением автогенерации, как алгоритмов, так и даже элементов метаданных; а в идеале ещё и с выполнением макроскриптов преобразований существующих метаданных и выражений кода и генерации новых по заданным шаблонам, параметрам, значениям функциональных опций, и анализу метаданных конфигурации).
Это всё возможно только в стратегия 1. и 2. (ну в 3. тоже возможно, но эта стратегия всё-таки подразумевает применение более простого препроцессора - так что в ней это всё только с ограничениями - а иначе - лучше переходить к стратегии 2.)

P.P.S.
Но да, это всё слишком круто для нынешнего платформы 1С Предприятие 8 - и компания 1С на это вряд ли решится в ближайшие десятилетия - они и так неплохо зарабатывают. Вот когда они нащупают пути расширения бизнеса - особенно в другие странны, тогда они, возможно, будут разрабатывать новый продукт - а-ля 1С: Предприятие 9, который изначально будут закладывать так, чтобы ему было чем потягаться с западными конкурентами. Вот там, возможно, и развернётся борьба за притязательного клиента, где нужно будет завлекать оригинальными фишками и не пасовать перед фишками, уже доступными в конкурирующих продуктах. Вот тогда, уже может и спадёт пелена консерватизма... Ну это уже не при братьях Нуралиевых случится...
Доживём?
35. Yashazz 3582 25.12.19 17:49 Сейчас в теме
(27) Люто плюсую. Плюс стопицот просто.
34. Yashazz 3582 25.12.19 17:47 Сейчас в теме
(23) Вот да. Мне тоже порой кажется, что некоторые фрагменты, найденные мучительными исканиями в ходе переделок БСП, надо бы методически унифицировать и воткнуть в платформу. В идеале некая 1С 9.0 вообще должна иметь промежуточный "слой" кода и абстракций, идеологически подобный нынешним предопределённым, которые есть как средства платформы, но можно менять. И контроль доступа, включая РЛС, и предполагаемые блокировки и дедлоки хотелось бы мониторить средствами платформы.
30. Summer_13 07.08.19 15:08 Сейчас в теме
Возможно я плохо смотрю,но не могу найти примера именно формирования таблицы движений из какой-то табличной части.Мне вот это более интересно.
31. skv_79 217 07.08.19 15:13 Сейчас в теме
(30) п.2 схемы проведения:
По параметрам этих процедур видно, что они одинаковые. И выполняют одинаковую цель - добавляют в тексты запросов для каждого из регистров, по которым будут сформированы движения, которые будут отражены в регистрах.
Названия у них, как правило: "ТекстЗапроса" + "Таблица" + ИмяРегистра, где ИмяРегистра - имя регистра, движения которого будут формироваться этим запросом.
32. Cyberhawk 124 02.09.19 17:08 Сейчас в теме
В Дополнительные свойства "ДляПроведения" вставляется свойство "РегистрыДляПроведения"
Походу опечатка
Оставьте свое сообщение

См. также

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    62383    user700211_a.straltsou    29    

Несколько групп для одной номенклатуры в УТ 11

Механизмы оперативного учета Учет ТМЦ v8 v8::ОУ УТ11 Россия УУ Бесплатно (free)

В статье опишу вариант доработки УТ 11 для использования нескольких групп для одной номенклатуры.

23.09.2020    701    malikov_pro    2    

Модуль логиста: как обычная доработка стала тиражным решением

Управление взаимоотношениями с клиентами (СRM) Монитор заказов Розничная торговля Управление услугами и сервисом v8::ОУ 1cv8.cf УУ Бесплатно (free)

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

18.08.2020    1803    RAU IT    2    

Состояния заказов клиентов

Оптовая торговля Монитор заказов v8::ОУ УТ11 Россия УУ Бесплатно (free)

Конфигурация «Управление торговлей, редакция 11 (11.4.11.104)». Регистр сведений «Состояния заказов клиентов». Описание и устройство.

27.05.2020    3871    totchaz    15    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    26142    itriot11    27    

Английский интерфейс для 1С: Управление торговлей. Перенос перевода из 1С: ERP

Работа с интерфейсом v8::ОУ УТ11 Россия УУ Бесплатно (free)

Полноценный англоязычный интерфейс для 1С: Управление торговлей. Я передаю идею, а пользоваться или нет, решайте сами. Надеюсь, эта статья ускорит появление продукта 1C:Trade Management 11.

05.05.2020    2301    _Ramzes    7    

5 шагов по изменению резервирования товаров в УТ 11.4

Оптовая торговля Практика программирования v8::ОУ v8::УФ УТ11 Россия УУ Бесплатно (free)

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

19.03.2020    4717    Igorro82IT    16    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    26728    John_d    22    

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    12836    m-rv    1    

Подсистема учета характеристик. Стремление к совершенству

Чистка базы Практика программирования v8 v8::ОУ v8::ПВХ УТ10 УУ Бесплатно (free)

Цель - почистить задвоенность характеристик и предотвратить дальнейшее ее появление.

16.12.2019    4165    Rustig    0    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    56276    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    52950    ids79    54    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37843    unichkin    74    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    92360    ids79    56    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    59264    AlbinaAAA    28    

Чеки ККМ для расчетов с ИП по безналу. Новые обязательные реквизиты в чеке

Практика программирования ККМ Оптовая торговля Оптовая торговля Разработка v8 v8::ОУ УТ11 УУ Бесплатно (free)

Новые требования законодательства по пробитию чеков ККМ при расчетах с индивидуальными предпринимателями по безналу. Нюансы подключения интеграционной компоненты ДТО 10.5.0 на примере кассы ККТ АТОЛ 11Ф и конфигурации 1С УТ 11.4. Необходимые доработки типовой конфигурации УТ 11.4 для вывода на печать новых обязательных реквизитов: покупатель, ИНН, ГТД, страна происхождения.

22.07.2019    16122    ids79    16    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

15.10.2018    31051    tormozit    104    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16210    m-rv    2    

Как настроить правильную техподдержку (helpdesk, service desk на коленке)

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени v8 УУ Бесплатно (free)

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

24.04.2019    19428    siddy    0    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20610    m-rv    17    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    78547    tormozit    131    

Excel vs 1С: битва с неожиданным исходом

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    37147    bolefirenko    119    

Остатки в подборе товаров в документ продажи по нескольким складам

Практика программирования Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ Разработка v8 v8::ОУ УТ11 УУ Бесплатно (free)

Остатки в подборе товаров в документ продажи по нескольким складам без включенной опции «Реализация товаров с нескольких складов».

12.03.2019    6207    klepser    5    

Информирование пользователя. Работа с объектом «СообщениеПользователю»

Практика программирования Разработка v8::УФ 1cv8.cf Бесплатно (free)

Различные варианты и нюансы использования объекта СообщениеПользователю и другие способы информирования пользователя: без привязки к какой-либо форме и с выводом сообщения в отдельном окне.

15.02.2019    58043    ids79    50    

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

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

11.07.2007    49106    tormozit    44    

Создание акта сверки для Управления торговлей с факсимиле

Практика программирования Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность Разработка v8 v8::ОУ УТ11 Россия УУ Бесплатно (free)

Создание обработки на основании встроенной печатной формы для формирования акта сверки взаиморасчётов с факсимиле.

11.02.2019    5523    zemskov    4    

Добавление ставки НДС 20% на старой УТ 11.0 за 2 шага

Практика программирования v8::ОУ v8::УФ УТ11 Оптовая торговля, дистрибуция, логистика Россия НДС Бесплатно (free)

Предлагаю Вам небольшую инструкцию по добавлению ставки НДС 20% в старую "необновляемую" конфигурацию "Управление торговлей 11.0".

02.01.2019    17654    aximo    13    

Задача 1.13 1С:Специалист - запрос для отчета по стеллажам

Практика программирования Решение задач на 1С:Специалист v8::ОУ Россия Бесплатно (free)

Описание подводных каменей отчета по стеллажам (задача 1.13 1С:Специалист) и способов их преодоления.

24.12.2018    7527    user913680    1    

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

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    45570    tormozit    74    

Некорректно заполняются значения по умолчанию при создании документа. 1С: УТ

Адаптация типовых решений v8 v8::ОУ УТ11 Россия Бесплатно (free)

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

21.11.2018    6973    yupi71    11    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

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

14.11.2018    96781    GeterX    121    

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

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

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

10.11.2018    35793    ids79    40    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    31360    m-rv    21    

Метрики, графики, статистика = Prometheus + Grafana

Инструментарий разработчика v8 v8::ОУ Россия Бесплатно (free)

Снятие метрик из базы данных 1С с хранением в Phrometheus и красивое оформление на основе Grafana. Или как мы создавали комфортные условия административному персоналу на отдельно взятом складе.

23.10.2018    19810    freewms    75    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    71468    stas_ganiev    75    

Фискальный чек из 1С:Управление торговлей 10.3

Практика программирования Кассовые операции Кассовые операции v8::ОУ УТ10 Россия Бесплатно (free)

Способ в фискальном чеке из документа "Реализация товаров и услуг" УТ 10.3. печатать "полный расчет" и "наличные".

16.10.2018    8438    rch    2    

Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час

Практика программирования Инструментарий разработчика v8::СКД Бесплатно (free)

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

03.09.2018    46082    SergeyN    26    

Из Excel в 1С запросом

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

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

14.08.2018    20300    m-rv    5    

Разные хм... неожиданности при работе с УТ 11 и платформой

Практика программирования Адаптация типовых решений v8 v8::ОУ УТ11 УУ Бесплатно (free)

По мере обнаружения буду писать сюда тонкости работы с УТ 11 и платформой, больше для себя, но, может, кому-то еще пригодится... Для нескольких вопросов предложены варианты обхода.

09.08.2018    18073    Kutuzov    30    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29619    grumagargler    28    

Согласование цен по заказу

Бухгалтерский учет Ценообразование, анализ цен Практика программирования Ценообразование, анализ цен v8 v8::ОУ УТ10 УУ Бесплатно (free)

Согласование цен по заказу покупателя - менеджер указывает цену с признаком "На согласование". Руководитель визирует "Согласовано". Полный контроль над ценами в два клика. Отдел продаж - 20 менеджеров, 1 руководитель.

03.07.2018    9854    Rustig    21    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    28636    olegtymko    47    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    24434    slozhenikin_com    20    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    18337    Rustig    9    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    23519    V.Stavinsky    11