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

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

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

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

Практика использования существующего типового функционала резервирования товаров в УТ 11 выявила недостатки:

  • отсутствие механизма по контролю за резервами ответственными (нет сводного отчета).
  • отсутствие временных лимитов по резервам и как следствие образование неликвидов (зависшие товары) или недоступность резервирования по актуальным заказам клиентов.
  • два вида резервирования «СоСклада» и «ИзЗаказов» одинаково «минусуют» складской остаток.

Я подумал и пошёл ...шагами.

Шаг 1 - Составление.

Приняты решения:

  • Установить временной лимит для хранения статуса резерва товара (10 дней).
  • По истечении лимита отменять резервирование товаров, как по неактуальным (автоматически).
  • Создать возможность пролонгирования резервов  товаров по заказам (ответственным).
  • Создать отчет для мониторинга остатков сроков по резервам.
  • Разделить доступность остатков при резервировании из наличия и резервирования к дате (СоСклада и ИзЗаказов).


Шаг 2 – Создание скелета.

Созданы объекты:

Регистр сведений «ООО_ПролонгацияРезервов» , где
   измерения: ДатаУстановкиРезерва, ЗаказКлиента, Номенклатура, Склад, ДатаОкончанияРезерва, Ответственный;
   ресурсы: Количество;
   реквизиты: ПричинаПродленияРезерва.

Роль ООО_ ПролонгацияРезервов(для просмотра и изменения менеджерами).

Внешняя обработка «Продлить резервы по заказу»  - Необходима для создания записей в новом регистре сведений «ООО_ПролонгацияРезервов» из формы заказа клиента без вмешательства в типовой код формы документа.

Шаг 3 – Визуализация.

Мониторинг менеджерами и руководством  сроков резервов по созданному внешнему отчету.

Например:

 


 

Ищем сроки резервов запросом по табличным частям «Товары» документов «Заказ клиента», соединяя с  новым регистром сведений («ООО_Пролонгация Резервов»).  Если в регистре данных по срокам нет (не делали продления), то срок равен дата заказа + количество временного лимита (10 дней).

Ответственные мониторят сроки своих резервов, прорабатывают с клиентами актуальность заказанных позиций и при необходимости проваливаются в заказ, актуализируют данные в заказе и жмут кнопку "Продлить резервы по заказу". Дополнительная, но нужная работа (пользователям удобно).

В отчете пытался сделать фишку по сворачиванию группировки с «Номенклатурой».

Удалось через условное оформление – через ограничение максимальной высоты и включением/выключением через параметр «Подробно»(Да/НЕТ).  

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

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

Шаг 4 – Автоматизация (или механизация).

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

В идеале (автоматизация) код помещается в общий модуль (не типовой) и выполняется регламентированным заданием.

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

Пример обработки приведен на рисунке.

 

Пример запроса:

Запрос.Текст = "ВЫБРАТЬ
	               |	ООО_ПролонгацияРезервов.ЗаказКлиента КАК ЗаказКлиента,
	               |	ООО_ПролонгацияРезервов.Номенклатура КАК Номенклатура,
	               |	ООО_ПролонгацияРезервов.Склад КАК Склад,
	               |	МАКСИМУМ ООО_ПролонгацияРезервов.ДатаУстановкиРезерва) КАК ДатаУстановкиРезерва
	               |ПОМЕСТИТЬ ВТ_Пролонгации
	               |ИЗ
	               |	РегистрСведений. ООО_ПролонгацияРезервов КАК ООО_ПролонгацияРезервов
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	ООО_ПролонгацияРезервов.ЗаказКлиента,
	               |	ООО_ПролонгацияРезервов.Номенклатура,
	               |	ООО_ПролонгацияРезервов.Склад
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	               |	СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК ВРезервеСоСкладаОстаток,
	               |	СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказОстаток,
	               |	СвободныеОстаткиОстатки.Склад КАК Склад
	               |ПОМЕСТИТЬ ВТОстатки
	               |ИЗ
	               |	РегистрНакопления.СвободныеОстатки.Остатки(&ТекущаяДата, ) КАК СвободныеОстаткиОстатки
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	СвободныеОстатки.Регистратор КАК Регистратор,
	               |	СвободныеОстатки.Период КАК Период,
	               |	СвободныеОстатки.Номенклатура КАК Номенклатура,
	               |	СвободныеОстатки.Склад КАК Склад,
	               |	СвободныеОстатки.ВРезервеСоСклада КАК ВРезервеСоСклада,
	               |	ЕСТЬNULL(ВТ_Пролонгации.ДатаУстановкиРезерва, СвободныеОстатки.Регистратор.Дата) КАК ДатаУстановки,
	               |	РАЗНОСТЬДАТ(ЕСТЬNULL(ВТ_Пролонгации.ДатаУстановкиРезерва, СвободныеОстатки.Регистратор.Дата), &ДатаАктуальности, ДЕНЬ) КАК РазностьКоличество
	               |ПОМЕСТИТЬ ВТПриходы
	               |ИЗ
	               |	РегистрНакопления.СвободныеОстатки КАК СвободныеОстатки
	               |		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Пролонгации КАК ВТ_Пролонгации
	               |		ПО СвободныеОстатки.Регистратор = ВТ_Пролонгации.ЗаказКлиента
	               |			И СвободныеОстатки.Номенклатура = ВТ_Пролонгации.Номенклатура
	               |			И СвободныеОстатки.Склад = ВТ_Пролонгации.Склад
	               |ГДЕ
	               |	СвободныеОстатки.ВидДвижения = &ВидДвижения
	               |	И СвободныеОстатки.ВРезервеСоСклада > 0
	               |	И РАЗНОСТЬДАТ(ЕСТЬNULL(ВТ_Пролонгации.ДатаУстановкиРезерва, СвободныеОстатки.Регистратор.Дата), &ДатаАктуальности, ДЕНЬ) > 0
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ВТОстатки.Номенклатура КАК Номенклатура,
	               |	ВТОстатки.ВРезервеСоСкладаОстаток КАК ВРезервеСоСкладаОстаток,
	               |	ВТОстатки.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказОстаток,
	               |	ВТОстатки.Склад КАК Склад,
	               |	ВТПриходы.Регистратор КАК Регистратор,
	               |	ВТПриходы.ВРезервеСоСклада КАК ВРезервеСоСклада,
	               |	ВТПриходы.Период КАК Период,
	               |	ЕСТЬNULL(ВТПриходы.Регистратор.Менеджер, &ПустойПользователь) КАК Менеджер,
	               |	ЕСТЬNULL(ВТПриходы.Регистратор.Контрагент, &ПустойКонтрагент) КАК Контрагент,
	               |	ВТПриходы.ДатаУстановки КАК ДатаУстановки,
	               |	ДОБАВИТЬКДАТЕ(ВТПриходы.ДатаУстановки, ДЕНЬ, 10) КАК ДатаСрока
	               |ИЗ
	               |	ВТОстатки КАК ВТОстатки
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПриходы КАК ВТПриходы
	               |		ПО ВТОстатки.Номенклатура = ВТПриходы.Номенклатура
	               |			И ВТОстатки.Склад = ВТПриходы.Склад
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	Регистратор,
	               |	Номенклатура,
	               |	Период УБЫВ";
	Запрос.УстановитьПараметр("ДатаАктуальности", ТекущаяДата() - 3600 * 24 * Объект.КоличествоДнейАктуальностиРезервов );
	Запрос.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Приход);
	Запрос.УстановитьПараметр("ПустойПользователь", Справочники.Пользователи.ПустаяСсылка());
	Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());

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

Шаг 5 – Разделение доступности остатков.

Первая проблема в типовом функционале УТ: Не удается «резервировать на складе» (недоступен вариант), если остаток на складе ещё есть (с учётом других «резервирований на складе»), но количество в заказах с «резервированием к дате» (по заказам поставщикам) превышает имеющийся складской остаток.

На рисунке (пример типового функционала) показано, как конечный остаток в количестве 7 невозможно зарезерировать (не к дате).

 

 

При выборе варианта обеспечения в заказе покупателя вызывается форма перечисления «ВариантыОбеспечения»  - «ВыборВариантаОбеспечения» и варианты возможно выбрать только, если доступное количество больше нуля (а не конечный остаток).

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

Команда «ЗаполнитьОбеспечение»  вызывает форму «ИсполнениеЗаказа" (того-же перечисления «ВариантыОбеспечения») , где присутствуют необязательные флаги «К обеспечению» и «Не обеспечивать», не указав которые можно установить «Отгрузить» и «Резервировать на складе» без контроля остатков.

Решение первого недостатка: покопавшись в коде отладчиком находим функцию «ТаблицаДоступныеОстатки» в модуле менеджера Регистра накопления «ГрафикПоступленияТоваров»,  добавляем пару строк.

Пример изменения типового кода (с комментариями  «Доработка ООО») :

Пока ЕстьЗаписи Цикл

        ЗаполнитьЗначенияСвойств(КлючСтроки, Выборка);
        НарастающийИтог          = Выборка.Остаток;
        МинимальноеЗначение      = НарастающийИтог;
        ИзмениласьЗапись         = Ложь;
        // Цикл по сочетанию номенклатура\характеристика\склад.
        Пока Не ИзмениласьЗапись Цикл
            НарастающийИтог = НарастающийИтог - Выборка.Оборот;
            
            // Доработка ООО
            МинимальноеЗначение_ООО      = НарастающийИтог;   
            // Доработка ООО

            Если МинимальноеЗначение > НарастающийИтог И (Не ТолькоПоложительные Или МинимальноеЗначение > 0) Тогда
                СтрокаТаблицы = ДоступныеОстатки.Добавить();
                ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
                СтрокаТаблицы.ДатаДоступности = Выборка.Период; //доступно на дату.
                СтрокаТаблицы.Количество = МинимальноеЗначение;
                МинимальноеЗначение = НарастающийИтог;
            КонецЕсли;
            // Переход к следующей записи.
            ЕстьЗаписи = Выборка.Следующий();
            ИзмениласьЗапись = Не ЕстьЗаписи Или ОбеспечениеКлиентСервер.ИзменилсяКлюч(КлючСтроки, Выборка);
        КонецЦикла;                          
        Если Не ТолькоПоложительные Или МинимальноеЗначение > 0 
            // Доработка ООО
            ИЛИ МинимальноеЗначение_ООО > 0 
            // Доработка ООО
            Тогда
            СтрокаТаблицы = ДоступныеОстатки.Добавить();
            ЗаполнитьЗначенияСвойств(СтрокаТаблицы, КлючСтроки);
            СтрокаТаблицы.ДатаДоступности = '00010101'; //доступно сейчас.
            
            СтрокаТаблицы.Количество = МинимальноеЗначение;
            
            // Доработка ООО
            Если Справочники.итЗначенияПоУмолчанию.ИспользоватьНовоеРезервирование.ОсновноеЗначение = Истина Тогда
                СтрокаТаблицы.Количество = МинимальноеЗначение_ООО;
            КонецЕсли; 
            // Доработка ООО
        КонецЕсли;


Пример кода отмены резервов:

Процедура ОтменитьРезервыНаСервере(МассивСтроки)

                ЗаказРезерва = МассивСтроки[0];
                ЗаказОбъект = ЗаказРезерва.ПолучитьОбъект();

                НоменклатураСтроки = МассивСтроки[1];
                СтруктураПоиска = Новый Структура;
                СтруктураПоиска.Вставить("Номенклатура", НоменклатураСтроки);
            
                СтрокиТоваров = ЗаказОбъект.Товары.НайтиСтроки(СтруктураПоиска);

                Для Каждого СтрокаТоваров Из СтрокиТоваров Цикл

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


Решение второго недостатка: изменить форму «ИсполнениеЗаказа», установив при открытии «К обеспечению» и ограничив изменение («ТолькоПросмотр»).

Пример на рисунке ниже.

 


 

Результаты.

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

Жаль, что количественной  (статистической) оценки нет, но зарезервированные и неактуальные завалы товаров прекратились, уменьшилась путаница.

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

Послесловие.

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

Обоснованная критика приветствуется.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. any__uta 19.03.20 10:52 Сейчас в теме
спасибо) тема оказалась полезной)))
2. Igorro82IT 41 19.03.20 11:41 Сейчас в теме
(1) Это радует)
Наздоровье!
any__uta; +1 Ответить
3. andryandry 114 19.03.20 22:08 Сейчас в теме
нужная вещь. вы могли бы реализовать решение в виде расширения конфигурации?
4. Igorro82IT 41 20.03.20 07:17 Сейчас в теме
(3) Я и сделал, только для формы "ИсполнениеЗаказа" перечисления «ВариантыОбеспечения», но в остальных объектах не вижу такой необходимости.
Отчёт и обработки могут часто меняются (зачем их обновлять вместе со всей конфигурацией), в модуле регистра накопления добавлено всего несколько строк.
Это же не было продуктом на продажу..
5. andryandry 114 20.03.20 10:22 Сейчас в теме
(4)выложите расширение и отчеты для скачивания за стартмани, ок?
8. shard 258 23.03.20 13:44 Сейчас в теме
10. Igorro82IT 41 23.03.20 14:47 Сейчас в теме
(8) Ознакомился. Когда искал варианты прошлой осенью -не нашел (может по причине- в наименовании нет резервирования).
По сути реализованы шаги 2 и 4 немного с другим подходом, без использования регистра сведений.
11. shard 258 23.03.20 14:57 Сейчас в теме
(10) отчет по товарам в резерве также имеется и периодически применяется, но публикацию делал исключительно про автозакрытие просроченных заказов. История изменения реквизита срока действия заказа кстати ведется при версионировании заказов, но за все время использования алгоритма (с августа 18го года) ни разу не понадобилась. Отчет по срокам резервов тоже никто ни разу не просил, а вот на какую сумму менеджер резервов держит интересовались.
Igorro82IT; +1 Ответить
6. Igorro82IT 41 20.03.20 11:15 Сейчас в теме
Возможно и соберусь, скомпоную всё в один комплект, но не сегодня.
Чтобы пакет был более универсальным нужно учесть варианты, которые у меня просто не используются (учет по характеристикам и др), иначе будет пакет недоделок, который скачавшим придётся адаптировать, доделывать и.. ругаться на меня).
7. malikov_pro 698 22.03.20 16:50 Сейчас в теме
Тема актуальна, благодарю что опубликовали свои наработки.
Сам немного раскапывал типовой механизм обеспечения https://infostart.ru/public/1188857/, до проблемы при резервировании к дате не дошел.
По формам отображения, отчет не всегда удобен, вывожу на форму список номенклатуры, при активизации строки ниже вывожу расшифровку.
Если интересно можно собрать проект в git и насыщать его наработками.
В планах перед снятием резерва уведомлять клиента, это стимулирует продажи.
Прикрепленные файлы:
9. Igorro82IT 41 23.03.20 14:43 Сейчас в теме
(7) Ознакомился с Вашей публикацией.
Решение формы обработки интересно и да - удобнее варианта с отчетом.
До "собирания проекта" я не готов (если только участником).
12. Cyberhawk 127 31.03.20 13:16 Сейчас в теме
В отчете пытался сделать фишку по сворачиванию группировки с «Номенклатурой»
А чем не устроило включение-отключение нижнего уровня группировки (номенклатура или детальные записи) в настройках структуры отчета, либо управление сворачиванием группировок через ПоказатьУровеньГруппировокСтрок?
14. Igorro82IT 41 01.04.20 20:45 Сейчас в теме
(12)
"включение-отключение нижнего уровня группировки (номенклатура или детальные записи) в настройках структуры отчета"
Не устраивает только тем, что нажатий больше делать, чем при выборе в шапке "Да/НЕт" (но это все от лени).

Про "управление сворачиванием группировок через ПоказатьУровеньГруппировокСтрок" не совсем понял - (это же не в контекстном меню выбирать уровень?) Есть возможность "разжевать"?
15. Cyberhawk 127 01.04.20 20:50 Сейчас в теме
(14)
нажатий больше делать, чем при выборе в шапке "Да/НЕт" (но это все от лени)
Заходишь в настройку структуры отчета, ПКМ по группировке нижнего уровня (по той, выводом или невыводом которой хочется управлять) - Свойства элемента пользовательских настроек - флажок Группировка - профит
16. zilot123 05.07.20 17:56 Сейчас в теме
Объясни зачем ты в цикле процедуры ОтменитьРезервыНаСервере записываешь заказ покупателя при каждом изменении строки? Почему не записываешь один раз после редактирования ТЧ
17. Igorro82IT 41 06.07.20 08:31 Сейчас в теме
(16) Лень - двигатель прогресса!
Наполнение базы маленькое - что при тестировании, что в работе на быстродействии не сказалось.
Но согласен- ТАК ДЕЛАТЬ НЕЛЬЗЯ!.
Спасибо за замечание -обязательно исправлю!
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    80729    Serginio    113    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    5663    Neti    7    

Неочевидные нюансы записи управляемой формы

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

Разберем несколько нюансов записи управляемой формы.

02.04.2021    6756    SeiOkami    52    

Полезные примеры СКД, ч.1

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

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    7667    Neti    18    

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    3998    velemir    31    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    22004    rayastar    49    

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

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

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

21.01.2021    2158    herfis    7    

Программное копирование узла/строки дерева значений на управляемой форме (УФ, ДанныеФормыДерево, ДанныеФормыЭлементДерева) в вариантах на клиенте и на сервере

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

1С при интерактивном копировании строки дерева значений в управляемой форме копирует только саму строку, без его всех вложенных узлов/строк, жаль - решим! А также найдем способ передачи ДанныеФормыЭлементДерева с клиента на сервер при вставке дерева из другого элемента справочника.

11.01.2021    845    SizovE    0    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5924    comol    31    

Ускоряем медленный/долгий и тормозной стандартный поиск по динамическому списку, настраиваем его под себя

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

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

14.12.2020    12822    SizovE    2    

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

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

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

30.11.2020    4004    SizovE    3    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

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

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

24.11.2020    916    SizovE    4    

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

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

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

10.12.2016    39278    unichkin    74    

Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

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

Зачастую возникает необходимость ограничить вывод элементов какого-нибудь справочника или перечисления при редактировании поля ввода (отфильтровать доступные для выбора элементы) эта публикация показывает простой и эффективный способ реализации этого.

15.11.2020    4634    Eugen-S    9    

Установка нескольких фильтров/отбора СКД в табличной форме, хранение в табличной части для отправки push/email уведомлений (ОтборКомпоновкиДанных, КомпоновщикНастроек, ДинамическийСписок)

Работа с интерфейсом Практика программирования v8 v8::УФ v8::СКД Бесплатно (free)

Рассмотрим, как организовать установку фильтров/отбора СКД (динамического списка) на push/email уведомления в подсистеме EDIbot (WebApp) для 1С в табличной части "События уведомлений".

02.11.2020    1252    SizovE    0    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    14926    quazare    34    

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

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

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

15.10.2018    33542    tormozit    105    

Использование флажков в динамических списках

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

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

04.08.2020    7763    nekit_rdx    28    

Использование ПоказатьВопрос() в событии НачалоВыбора()

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

На ИТС описано, как избегать использования модальности в событиях ПередЗаписью() и ПередЗакрытием() (можно ознакомиться по ссылке http://its.1c.ru/docs/v8nonmodal/). А что делать, если нужно задать вопрос пользователю в событии НачалоВыбора(). В данной статье приведу пример реализации с использованием асинхронного вызова ПоказатьВопрос(). Статья предназначена в основном для начинающих программистов, недавно столкнувшихся с управляемыми формами.

20.07.2020    1964    biimmap    2    

Открытие управляемой формы 1С 8.3 с измененным несохраненным объектом

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

Как загрузить в управляемую форму программно изменённый несохранённый документ (или элемент справочника).

13.07.2020    3651    plainer    11    

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

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

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

20.09.2012    80537    tormozit    131    

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

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

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

27.05.2020    5926    totchaz    15    

Серверные вызовы, которые нельзя вызывать

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

Не баян, а классика. Рассмотрим особенность платформы настолько же древнюю, как сами УФ.

12.05.2020    8229    SeiOkami    34    

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

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

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

08.05.2020    51518    user5300    18    

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

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

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

11.07.2007    51558    tormozit    51    

Как ограничить поля отбора в динамическом списке и ничего не сломать

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

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

06.05.2020    7259    SeiOkami    3    

Об обновлениях

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

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

12.02.2020    2783    ipoloskov    27    

Детектор завершения согласования для 1С: Документооборот КОРП

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

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

04.02.2020    3549    shiaju    3    

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

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

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

10.09.2017    48273    tormozit    74    

Программная работа с настройками СКД

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

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    49696    ids79    26    

Как вывести итоговый вес и объем на форму документа Заказ клиента. УТ 11.4

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

Всем привет, долго ломал голову, но с помощью тыка и подсказок более опытных программистов, вот что мне удалось достичь и как это я сделал. Открываем конфигуратор - заходим в Документы-Заказ-Клиенту-Формы-ФормаДокумента, все будем делать только здесь, снизу формы две вкладки, в общем сама форма и модуль (как открыть, смотри рисунок - открыть форму).

16.01.2020    6190    VID1234    6    

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

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

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

15.01.2020    35542    John_d    22    

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

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

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

25.04.2019    16859    m-rv    3    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    28104    kuzyara    38    

Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"

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

Переход на управляемые формы перевернул процесс разработки на 1С, заставив программистов менять привычные подходы к описанию логики работы интерфейса. Руководитель компании «Цифровой Кот» Юрий Лазаренко в своем докладе на конференции Infostart Event 2019 Inception рассказал о том, как устроены управляемые формы и как правильно работать с тонким клиентом платформы 1С:Предприятие.

23.12.2019    15836    TitanLuchs    23    

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

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

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

16.12.2019    4395    Rustig    0    

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

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

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

16.04.2019    21558    m-rv    17    

Простейший пример создания бизнес-процессов

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

Простой пример создания бизнес-процессов в несколько шагов. Может пригодиться при первом знакомстве с ними или для решении задач экзамена 1С:Специалист по платформе.

20.11.2019    28121    YPermitin    19    

Изменение макета в карточке номенклатуры(УТ 11, КА 2)

Практика программирования Работа с интерфейсом v8::УФ ERP2 УТ11 КА2 Бесплатно (free)

Краткая памятка по выведению добавленного реквизита в справочнике Номенклатура в стандартную карточку номенклатуры в УТ 11, КА 2, ERP 2.

24.10.2019    5273    darkultro37    4    

Полезные процедуры и функции для программиста

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

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

07.10.2019    35574    HostHost    41    

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

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

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

01.06.2018    33933    m-rv    22    

Таблица значений. Нюансы

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

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

01.10.2019    45618    Yashazz    50    

СКД. Отчеты с картинками

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

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    28211    YPermitin    47    

"Вы всё сломали!". Разбираемся, кто прав, кто виноват

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

О том, как "всё испортил" программист, а на самом деле виноват заказчик.

20.09.2019    6222    RomanCrow13    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    29361    itriot11    34    

СКД не только для отчетов

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

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

18.09.2019    20890    YPermitin    36    

Оповещения боту из 1С за 31 минуту

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

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    18968    feva    43    

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

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

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

06.09.2019    80484    rpgshnik    70    

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

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

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

10.11.2018    40425    ids79    44    

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

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

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

05.09.2019    65844    ids79    55    

Регистры бухгалтерии. Общая информация

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

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    38131    YPermitin    25