<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Pugachev Sergey</title><generator>teletype.in</generator><description><![CDATA[Специалист по автоматизации и дворник.
Санкт-Петербург]]></description><image><url>https://img2.teletype.in/files/d7/c9/d7c975b9-90d1-41a9-8e96-9d5f2e92ccb8.png</url><title>Pugachev Sergey</title><link>https://endif.pro/</link></image><link>https://endif.pro/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/endif?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/endif?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Tue, 21 Jul 2026 13:03:32 GMT</pubDate><lastBuildDate>Tue, 21 Jul 2026 13:03:32 GMT</lastBuildDate><item><guid isPermaLink="true">https://endif.pro/w0LuiI5ts2p</guid><link>https://endif.pro/w0LuiI5ts2p?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/w0LuiI5ts2p?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Типовое внедрение адресного хранения в 1C:ERP или архитектурная ересь во благо бизнеса</title><pubDate>Fri, 10 Jul 2026 00:37:13 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/5e/49/5e49f0d9-2657-4de1-8197-3b764110fbda.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/4d/8c/4d8c3e5e-b517-4f7a-9d1f-b75836ace9cd.png"></img>Компания, на склады которой мы пришли для внедрения адресного хранения остатков, несколько лет жила на &quot;простом складе&quot;: проведение накладной или реализации не сопровождалось складскими ордерами, и все до определенного момента были счастливы.]]></description><content:encoded><![CDATA[
  <p id="o4cf">Перевод работы складской логистики компании с &quot;простого склада&quot; на адресное хранение (WMS) после нескольких лет работы в системе - это всегда контролируемый хаос. Когда финансовые документы (накладные, реализации) годами проводились без складских ордеров, все были счастливы. Но при бурном росте производства и складских пространств неизбежно встает вопрос: <em>«Где, черт возьми, на самом деле находится этот материал?»</em></p>
  <p id="zTBm">Если перед вами стоит задача быстро развернуть адресное хранение на работающей базе и при этом не парализовать работу сотрудников, используйте следующую пошаговую инструкцию.</p>
  <figure id="SUiP" class="m_column">
    <img src="https://img1.teletype.in/files/4d/8c/4d8c3e5e-b517-4f7a-9d1f-b75836ace9cd.png" width="1112" />
  </figure>
  <h3 id="IJMQ"><strong>Подготовка плацдарма</strong></h3>
  <p id="h3at">Первым делом требуется описать топологию будущего склада с ячейками. Садимся вместе с производственниками и кладовщиками, и на бумаге расчерчиваем будущий склад с ячейками: где у нас будут ряды, где стеллажи, сколько в них ярусов и полок.</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Qosa">Примите во внимание тот факт, что для 1С: ERP (УТ/КА/УХ - не суть важно) ячеистый склад - это не просто набор полок для хранения, а <em>строгий логистический конвейер</em>. Когда вы будете переносить вашу топологию с бумаги в систему, то структура склада потребует от вас <em>ОБЯЗАТЕЛЬНОГО </em>наличия <em>по крайней мере одной</em> зоны приемки и зоны отгрузки (ячеек с типом &quot;<strong>Отгрузка</strong>&quot; и типом &quot;<strong>Приемка</strong>&quot;). </p>
    <p id="u5ee">Логика здесь простая - ТМЦ просто <em>не может</em> перемещаться сразу же в ячейки стеллажей, минуя зону приемки (контроля качества поступивших товаров/материалов), а <em>обязывает</em> проходить через транзитные зоны.</p>
  </section>
  <ul id="4lSE">
    <li id="ApnM"><strong>Ячейки с типом &quot;Приемка&quot; - </strong>это виртуальный или реальный пандус. Сюда товар падает в момент проведения <em>Приходного ордера</em>, и именно отсюда кладовщик будет забирать его для размещения в адресные ячейки.</li>
    <li id="4TpD"><strong>Ячейки с типом &quot;Отгрузка&quot;:</strong> это ворота на выход со склада. Сюда товар перемещается из зоны хранения при сборке заказа, чтобы дожидаться передачи клиенту или погрузки в транспортное средство для перемещения.</li>
  </ul>
  <p id="ka43">Резюмируя, даже если в реальности у вас кладовщик принимает коробку и сразу ставит ее на полку, в 1С вам придется создать эти две служебные ячейки-зоны, иначе складские ордера просто не проведутся.</p>
  <p id="1clZ">Графически данный процесс можно визуализировать с помощью блок-схемы ниже (реальный пример с проекта):</p>
  <figure id="BRq1" class="m_column">
    <img src="https://img1.teletype.in/files/cc/41/cc41cc90-3a6a-4b91-a401-c6f86306aca2.png" width="1506" />
  </figure>
  <p id="uHJJ">Как только топология склада будет ясна и понятна, требуется произвести вашему складу &quot;пересадку мозга&quot;, т.е. объяснить самой 1С, что этот склад больше не работает по-старому, и произвести настройки ордерной схемы документооборота в системе в карточке вашего склада:</p>
  <figure id="qI9D" class="m_column">
    <img src="https://img1.teletype.in/files/cf/41/cf4154a4-a186-488c-ba9a-8b90bb87c715.png" width="1622" />
  </figure>
  <p id="3wEP">Заходим в карточку склада (вкладка &quot;<em>Ордерная схема и структура</em>&quot;) и переключаем два судьбоносных параметра:</p>
  <ul id="Iutf">
    <li id="gE2b"><strong>Включаем ордерную схему документооборота</strong> (ставим галки &quot;<em>при поступлении</em>&quot; и &quot;<em>при отгрузке</em>&quot;). </li>
  </ul>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="2ccK">Это тот самый момент невозврата. С этой секунды мы жестко разрываем финансовый и складской учет. Проведение накладной бухгалтером больше не двигает реальный товар, а лишь создает распоряжение для склада. Теперь без ордера товар со склада не уйдет и на склад не попадет.</p>
  </section>
  <ul id="VW9p">
    <li id="oCyB"><em>В поле &quot;Ячейки&quot; выбираем значение &quot;<strong>Использовать для хранения остатков номенклатуры&quot;</strong>. </em></li>
  </ul>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="UUsJ">Это главный триггер адресного склада. Если выбрать вариант &quot;<em>для справочного размещения</em>&quot;, то ячейки станут просто текстовыми наклейками на стеллажах, которые ни к чему не обязывают. А нам нужен строгий количественный учет остатков в каждой конкретной ячейке.</p>
  </section>
  <p id="GxKH">И вот только после того, как карточка склада записана с этими настройками, система разрешает нам перейти к генерации топологии.</p>
  <h3 id="ilOk">Генерация топологии склада</h3>
  <p id="jbzO">Вбивать сотни ячеек вручную - удел мазохистов, поэтому самый простой и надежный способ описать топологию склада в системе 1С:ERP - использовать встроенную обработку &quot;<em>Генерация топологии склада</em>&quot;. Работает она быстро и просто, главное - правильно задать матрицу.</p>
  <p id="MOfQ">В подсистеме &quot;<em>Склад и доставка</em>&quot; в разделе &quot;<em>Сервис</em>&quot; ищем данную обработку и запускаем.</p>
  <figure id="z366" class="m_column">
    <img src="https://img4.teletype.in/files/f0/69/f0697e36-a50b-47d3-9083-d7ce6ab696ac.png" width="1438" />
  </figure>
  <p id="pJDW">Здесь задается структура адресов (ряды, стеллажи, ярусы...), но ваша радость была бы не полной, если бы 1С не потребовала заполнить два важнейших аналитических реквизита: <em>Типоразмер </em>и <em>Область хранения</em>.</p>
  <p id="YQMR"><strong>Как это должно работать в идеальном мире:</strong></p>
  <ul id="JH7f">
    <li id="2tYH"><strong>Типоразмер ячейки:</strong> система должна знать точные физические габариты каждой полки (высота, ширина, глубина, грузоподъемность). Это нужно, чтобы умный алгоритм сам понимал, что, например, &quot;<em>этот материал на верхний ярус не влезет, а вот сюда встанут ровно две паллеты&quot;</em>.</li>
    <li id="2NX1"><strong>Область хранения:</strong> Это логическое объединение ячеек с одинаковыми правилами. Например, отдельная зона для скоропортящихся товаров (в холодильники), отдельная зона для тяжелого негабарита (напольное хранение), отдельная для мелочевки и т.д.</li>
  </ul>
  <p id="3UKg"><strong>Суровая реальность:</strong> </p>
  <p id="MRqQ">Если на старте задачи в ваши планы категорически не входит измерять рулеткой каждый стеллаж и взвешивать каждую коробку, да и время на реализацию ограничено, а вместо этого вам нужен быстрый и рабочий адресный склад, где люди просто знают, куда им идти за конкретным материалом, то тогдаединственным выходом является создание типоразмера &quot;<em>Без ограничения</em>&quot; (как видно на скриншоте), у которого не заданы габариты, а также создать всего одну универсальную область хранения на весь склад.</p>
  <p id="ymoK">Данного &quot;изящного&quot; действия будет достаточно, чтобы ядро модуля адресного склада взлетело, и обработка сгенерировала вам полторы сотни (или сколько вам нужно?) ячеек с нужными настройками, позволив отложить сложные логистические расчеты весов и объемов до лучших времен (или навсегда), а кладовщики получат то, что им и нужно - понятные адреса ячеек без лишнего геморроя. </p>
  <p id="nMFn">Хорошая новость заключается в том, что если вам в моменте потребуется расчертить ваш адресный склад на области хранения или описать типоразмеры ваших ячеек, то это без боли можно будет сделать позднее.</p>
  <h3 id="rNiN">Упаковки преткновения</h3>
  <p id="PMa3">В обычной жизни бухгалтерии или менеджеров товар чаще всего измеряется, закупается и принимается в базовых единицах измерения: штуках, метрах, литрах, килограммах. Но когда мы включаем адресное хранение остатков, то у системы просыпается логистическое эго. Программа заявляет: &quot;<em>Я не могу положить абстрактную штуку на конкретную полку. Дайте мне физический объект! В чем лежит эта ваша штука? В коробке? На паллете? В пакете?&quot;</em></p>
  <p id="eqOo">Важная архитектурная особенность любого адресного склада:</p>
  <ul id="KSZQ">
    <li id="Xtfm">Товар <em>обязан </em>иметь заполненную упаковку в складском документе;</li>
    <li id="lZCI">Без упаковки 1С просто блокирует транзакцию, не позволяя ни положить товар в ячейку, ни забрать его оттуда.</li>
  </ul>
  <p id="j0TM">Здесь требуется сделать стратегический выбор: либо заставить сотрудников склада замерять и заводить реальные коробки для тысяч старых позиций, либо использовать фиктивные упаковки.</p>
  <p id="jGSS">Раз уж мы договорились на предыдущем шаге использовать безразмерные ячейки, то потребуются такие же фиктивные упаковки:</p>
  <ul id="Rjin">
    <li id="ptTr">Создаются универсальные наборы упаковок (например, один общий набор, где 1 штука равна 1 упаковке без указания точных габаритов и веса).</li>
    <li id="XCFa">Через обработку &quot;<em>Групповое измерение реквизитов</em>&quot; установить значение реквизита &quot;<em>Использовать упаковки</em>&quot; в старых карточках номенклатуры и привязать к ним этот универсальный набор.</li>
  </ul>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="WF88"><strong>Опыт из реального кейса:</strong> </p>
    <p id="CImS">Бухгалтеры и кладовщики, оформляя документы по старинке, постоянно забывали заполнять колонку &quot;Упаковка&quot;, либо заполняли ордера не упаковками, а базовыми единицами измерения. Документы не проводились, сыпались красные ошибки, градус нервозности повышался.</p>
  </section>
  <p id="CWKb">Именно эта боль и стала главным катализатором для написания нашего скрипта. Мы поняли, что заставлять людей вручную прокликивать упаковки в каждой строке - это саботаж работы склада. Нам нужен был механизм, который делал бы это автоматически.</p>
  <p id="7Th4">Более того, включать упаковки во всем справочнике номенклатуры - далеко не всегда целесообразно, ведь в системе может быть множество различных складов, в т.ч. не ордерных и без ячеек, где упаковки в номенклатурных карточках не нужны вовсе. </p>
  <p id="lEPC">Для этого в документе &quot;Приходный ордер на товары&quot;, ровно как и в документе &quot;Расходный ордер на товары&quot; была прикручена автоматизация в виде простой команды на форме, при нажатии на которую алгоритм пробегался по всей табличной части ордера, включал и заполнял внутри каждой номенклатурной позиции упаковки (если не было включено), и заполнял упаковку во всей табличной части документа. В итоге мы получили около идеальное решение: система автоматизирует данные только тогда и только для тех товаров, которые физически пересекают границу нашего адресного склада.</p>
  <pre id="vbV5" data-lang="javascript">&amp;НаКлиенте
Процедура ВключитьУпаковкиКоманда(Команда)
	
	Если Объект.Товары.Количество() = 0 Тогда
		Возврат; 
	КонецЕсли;
	
	Для Каждого СтрокаТЧ Из Объект.Товары Цикл
		Если СтрокаТЧ.Количество = 0 Тогда
			ПоказатьПредупреждение(Неопределено, &quot;В таблице есть товары с незаполненным количеством!&quot; + Символы.ПС + &quot;Сначала укажите количество, а затем нажимайте кнопку.&quot;);
			Возврат; 
		КонецЕсли;
	КонецЦикла;	
	
	ВключитьУпаковкиНаСервере();
	
КонецПроцедуры</pre>
  <pre id="OQVa" data-lang="javascript">&amp;НаСервере
Процедура ВключитьУпаковкиНаСервере()
	
	Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ОрдерОбъект = Объект.Ссылка.ПолучитьОбъект();
	Иначе
		ОрдерОбъект = РеквизитФормыВЗначение(&quot;Объект&quot;);
	КонецЕсли;
	
	МассивОбработанных = Новый Массив; 
	
	Для Каждого СтрокаТЧ Из ОрдерОбъект.Товары Цикл
		СсылкаНоменклатура = СтрокаТЧ.Номенклатура;
		Если Не ЗначениеЗаполнено(СсылкаНоменклатура) ИЛИ СсылкаНоменклатура.ЭтоГруппа Тогда
			Продолжить;
		КонецЕсли;
		
		Если МассивОбработанных.Найти(СсылкаНоменклатура) &lt;&gt; Неопределено Тогда
			Продолжить;
		КонецЕсли;
		МассивОбработанных.Добавить(СсылкаНоменклатура);
		
		ИмяЕдиницы = СокрЛП(СсылкаНоменклатура.ЕдиницаИзмерения.Наименование);
		НаборДляЗаписи = Справочники.НаборыУпаковок.НайтиПоНаименованию(ИмяЕдиницы);
		
		Если Не ЗначениеЗаполнено(НаборДляЗаписи) Тогда
			Продолжить;
		КонецЕсли;
		
		Если СсылкаНоменклатура.ИспользоватьУпаковки = Ложь ИЛИ СсылкаНоменклатура.НаборУпаковок &lt;&gt; НаборДляЗаписи Тогда
			ОбъектНом = СсылкаНоменклатура.ПолучитьОбъект();
			ОбъектНом.ИспользоватьУпаковки = Истина;
			ОбъектНом.НаборУпаковок = НаборДляЗаписи;
			ОбъектНом.ОбменДанными.Загрузка = Истина;
			Попытка ОбъектНом.Записать(); Исключение КонецПопытки;
		КонецЕсли;
	КонецЦикла;
	
	МассивНаборов = Новый Массив;
	Для Каждого СтрокаТЧ Из ОрдерОбъект.Товары Цикл
		Набор = СтрокаТЧ.Номенклатура.НаборУпаковок;
		Если ЗначениеЗаполнено(Набор) И МассивНаборов.Найти(Набор) = Неопределено Тогда
			МассивНаборов.Добавить(Набор);
		КонецЕсли;
	КонецЦикла;
	
	Если МассивНаборов.Количество() &gt; 0 Тогда
		Запрос = Новый Запрос;
		Запрос.Текст = 
			&quot;ВЫБРАТЬ
			|	УпаковкиЕдиницыИзмерения.Владелец КАК Набор,
			|	УпаковкиЕдиницыИзмерения.Наименование КАК НаименованиеУпаковки,
			|	МИНИМУМ(УпаковкиЕдиницыИзмерения.Ссылка) КАК Упаковка
			|ИЗ
			|	Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиЕдиницыИзмерения
			|ГДЕ
			|	УпаковкиЕдиницыИзмерения.Владелец В(&amp;МассивНаборов)
			|	И УпаковкиЕдиницыИзмерения.ПометкаУдаления = ЛОЖЬ
			|СГРУППИРОВАТЬ ПО
			|	УпаковкиЕдиницыИзмерения.Владелец,
			|	УпаковкиЕдиницыИзмерения.Наименование&quot;;
			
		Запрос.УстановитьПараметр(&quot;МассивНаборов&quot;, МассивНаборов);
		ТаблицаУпаковок = Запрос.Выполнить().Выгрузить();
		
		Для Каждого СтрокаТЧ Из ОрдерОбъект.Товары Цикл
			Если Не ЗначениеЗаполнено(СтрокаТЧ.Упаковка) И ЗначениеЗаполнено(СтрокаТЧ.Номенклатура.НаборУпаковок) Тогда
				ПараметрыПоиска = Новый Структура(&quot;Набор, НаименованиеУпаковки&quot;, СтрокаТЧ.Номенклатура.НаборУпаковок, СтрокаТЧ.Номенклатура.ЕдиницаИзмерения.Наименование);
				НайденныеСтроки = ТаблицаУпаковок.НайтиСтроки(ПараметрыПоиска);
				
				Если НайденныеСтроки.Количество() &gt; 0 И ЗначениеЗаполнено(НайденныеСтроки[0].Упаковка) Тогда
					СтрокаТЧ.Упаковка = НайденныеСтроки[0].Упаковка;
					Попытка СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.Количество; Исключение КонецПопытки;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	ОрдерОбъект.ОбменДанными.Загрузка = Истина; 
	ОрдерОбъект.Записать(РежимЗаписиДокумента.Запись);
	
	ЗначениеВРеквизитФормы(ОрдерОбъект, &quot;Объект&quot;);
	
КонецПроцедуры</pre>
  <h3 id="C7Rw">Ввод остатков на рабочей базе несколько лет спустя</h3>
  <p id="39sM">Реализовать адресное хранение остатков на новой, чистой и девственной базе - задача несложная. Но если ваша организация успешно работает в ERP/УТ/КА уже несколько лет и ведет складской учет, то все становится значительно сложнее - просто включить адресное хранение и откинуться на спинку кресла нельзя, ведь весь учтенный на складе товар отсутствует в складских регистрах системы адресного хранения. </p>
  <p id="WcoD">На данном этапе требуется зафиксировать точку старта работы по новой логике, и для этого в системе 1С:ERP есть специальный документ &quot;<em>Ввод начальных остатков товаров после перехода на адресную систему хранения</em>&quot;. </p>
  <figure id="UW4Q" class="m_column">
    <img src="https://img2.teletype.in/files/97/f7/97f75ffc-30ed-459a-b53f-2f4cf2cebc69.png" width="1627" />
  </figure>
  <p id="o4OD">Идея простая: выгрузить текущие остатки организации в этот документ, указать для них дефолтную ячейку (например, &quot;Зону приемки&quot;, чтобы склад хотя бы начал видеть товар на балансе), нажать кнопку &quot;Провести&quot; и пойти пить кофе, однако при попытке проведения документ, скорее всего, выплюнет вам простыню ошибок - 1С наотрез отказывается распределять товар по ячейкам. </p>
  <p id="IQDw">Причина всё та же: упаковки. Поскольку ваша база велась несколько лет без адресной системы хранения, у 99% старых номенклатурных карточек использование упаковок было отключено. А адресный склад, как мы уже поняли, не умеет работать с базовыми единицами хранения - ему требуются упаковки. </p>
  <p id="lRi0">Вышеописанный алгоритм (тот самый, что мы использовали в ордерах) исправления упаковок необходимо масштабировать и применить (например, через внешнюю обработку) к табличной части ввода остатков перед его проведением. Это позволит &quot;приземлить&quot; всю многолетнюю историю остатков склада в WMS за пару секунд.</p>
  <h3 id="hpxu"><strong>Финансы против адресного хранения - как мы потрепали нервы бухгалтерии ордерным складом, но потом извинились.</strong></h3>
  <p id="EFXQ">Учитывая тот факт, что до включения адресного хранения ваша компания жила несколько лет, и отгрузка товара со склада организации проводилась буквально одной кнопкой - &quot;Провести и закрыть&quot;, то после включения данный бизнес-процесс значительно усложняется.</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mdKo"><strong>Опыт из реального кейса:</strong> </p>
    <p id="yZFY">Проведение финансового документа - это лишь распоряжение для склада. Чтобы товар реально уехал, нужно:</p>
    <ul id="EO3C">
      <li id="2TO8">Зайти в рабочее место кладовщика;</li>
      <li id="ZcTO">Создать на основании реализации &quot;Расходный ордер&quot;;</li>
      <li id="FtxQ">На основании ордера создать &quot;Задание на отбор&quot;;</li>
      <li id="5QOC">Кладовщик должен выполнить отбор (как физически, так и в системе);</li>
      <li id="uQMR">Перевести документ отбора в статус &quot;Выполнено без ошибок&quot;;</li>
      <li id="dGCs">Перевести ордер в статус &quot;К отгрузке&quot;, а затем &quot;Отгружен&quot;.</li>
    </ul>
    <p id="5mfa">Для бухгалтерии и менеджеров это превратилось в бесконечный кликомарафон, а рабочие чаты просто взорвались от гнева. </p>
  </section>
  <p id="0vzX">Мы поняли: если не вернуть людям их любимую одну кнопку, проект автоматизации просто саботируют. Нам нужно было извиниться перед юзерами единственным понятным для них способом - <em>дать им инструмент автоматизации, который сделает всю цепочку за них</em>. По одной кнопке. Прямо из ордера.</p>
  <p id="DlfN"><strong>В Приходном ордере (Приемка):</strong> бухгалтер или кладовщик просто нажимает кнопку. Скрипт проверяет карточки номенклатуры, включает упаковки (о чем мы писалии чуть выше), а затем автоматически создает <em>Задание на размещение</em>. Программа сама берет товар из транзитной &quot;Зоны приемки&quot; и перемещает его в выбранную пару мгновениями ранее в диалоговом окне ячейку. Ордер сам переключается в статус &quot;Принят&quot;. Для пользователя это заняло две секунды и один клик.</p>
  <pre id="M75h" data-lang="javascript">&amp;НаСервере
Процедура СформироватьРазмещениеНаСервере(ЦелеваяЯчейкаРазмещения)
	
	ОрдерОбъект = РеквизитФормыВЗначение(&quot;Объект&quot;);
	
	ЯчейкаПриемкиФакт = ОрдерОбъект.ЗонаПриемки;
	Если Не ЗначениеЗаполнено(ЯчейкаПриемкиФакт) Тогда
		ВызватьИсключение &quot;В Приходном ордере не заполнена &quot;&quot;Зона приемки&quot;&quot;!&quot;;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ЦелеваяЯчейкаРазмещения) Тогда
		ВызватьИсключение &quot;Не выбрана целевая ячейка для размещения товаров!&quot;;
	КонецЕсли;
	
	ЗаданиеОбъект = Документы.ОтборРазмещениеТоваров.СоздатьДокумент(); 
	ЗаданиеОбъект.ВидОперации = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение; 
	ЗаданиеОбъект.Склад       = ОрдерОбъект.Склад;
	ЗаданиеОбъект.Дата        = ОрдерОбъект.Дата; 
	ЗаданиеОбъект.ЗонаПриемки = ЯчейкаПриемкиФакт; 
	
	ЗаданиеОбъект.Комментарий = &quot;Создано автоматически на основании документа: Приходный ордер на товары &quot; 
								+ ОрдерОбъект.Номер + &quot; от &quot; + Формат(ОрдерОбъект.Дата, &quot;ДЛФ=D&quot;); 
								
	Для Каждого СтрОрдера Из ОрдерОбъект.Товары Цикл
		
		СтрОтбор = ЗаданиеОбъект.ТоварыОтбор.Добавить();
		СтрОтбор.Номенклатура     = СтрОрдера.Номенклатура;
		СтрОтбор.Характеристика   = СтрОрдера.Характеристика;
		СтрОтбор.Серия            = СтрОрдера.Серия;
		СтрОтбор.Назначение       = СтрОрдера.Назначение;
		СтрОтбор.Упаковка         = СтрОрдера.Упаковка;
		СтрОтбор.Ячейка           = ЯчейкаПриемкиФакт; 
		СтрОтбор.Количество       = СтрОрдера.Количество;
		СтрОтбор.КоличествоУпаковок = СтрОрдера.КоличествоУпаковок;
		СтрОтбор.КоличествоОтобрано = СтрОрдера.Количество;
		СтрОтбор.КоличествоУпаковокОтобрано = СтрОрдера.КоличествоУпаковок;
		
		СтрРазмещение = ЗаданиеОбъект.ТоварыРазмещение.Добавить();
		СтрРазмещение.Номенклатура     = СтрОрдера.Номенклатура;
		СтрРазмещение.Характеристика   = СтрОрдера.Характеристика;
		СтрРазмещение.Серия            = СтрОрдера.Серия;
		СтрРазмещение.Назначение       = СтрОрдера.Назначение;
		СтрРазмещение.Упаковка         = СтрОрдера.Упаковка;
		СтрРазмещение.Ячейка           = ЦелеваяЯчейкаРазмещения; 
		СтрРазмещение.Количество       = СтрОрдера.Количество;
		СтрРазмещение.КоличествоУпаковок = СтрОрдера.КоличествоУпаковок;
		СтрРазмещение.КоличествоРазмещено = СтрОрдера.Количество;
		СтрРазмещение.КоличествоУпаковокРазмещено = СтрОрдера.КоличествоУпаковок;
		
	КонецЦикла;
	
	ЗаданиеОбъект.Статус = Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок;
	
	Попытка
		ЗаданиеОбъект.Записать(РежимЗаписиДокумента.Проведение);
	Исключение
		ВызватьИсключение &quot;Ошибка при проведении Задания на размещение! Ошибка: &quot; + ОписаниеОшибки();
	КонецПопытки;
	
	ОрдерДляЗакрытия = ОрдерОбъект.Ссылка.ПолучитьОбъект();
	ОрдерДляЗакрытия.Статус = Перечисления.СтатусыПриходныхОрдеров.Принят;
	
	ОрдерДляЗакрытия.Комментарий = &quot;Автоматически сформировано складское задание на размещение № &quot; + ЗаданиеОбъект.Номер;
	
	Попытка
		ОрдерДляЗакрытия.Записать(РежимЗаписиДокумента.Проведение);
	Исключение
		ВызватьИсключение &quot;Ошибка при финальном проведении Приходного ордера! Ошибка: &quot; + ОписаниеОшибки();
	КонецПопытки;
	
	ЗначениеВРеквизитФормы(ОрдерДляЗакрытия, &quot;Объект&quot;);
	
КонецПроцедуры</pre>
  <p id="35ZE"><strong>В Расходном ордере (Отгрузка):</strong> тут мы написали свой собственный мини-WMS движок. По нажатию кнопки система делает прямой запрос к регистру <em>ТоварыВЯчейках</em>, анализирует остатки на складе (исключая транзитные зоны отгрузки и приемки), распределяет списываемое количество по ячейкам хранения по убыванию остатка, сама создает документ &quot;<em>Отбор размещение товаров&quot;</em> со статусом &quot;<em>Выполнено без ошибок</em>&quot; и переводит ордер в статус &quot;<em>Отгружен</em>&quot;.</p>
  <pre id="Wpi5" data-lang="javascript">&amp;НаСервере
Процедура СформироватьОтборНаСервере()
    
    ОрдерОбъект = РеквизитФормыВЗначение(&quot;Объект&quot;);
    ЯчейкаОтгрузкиФакт = ОрдерОбъект.ЗонаОтгрузки;
    
    Если Не ЗначениеЗаполнено(ЯчейкаОтгрузкиФакт) Тогда
        ВызватьИсключение &quot;В Расходном ордере не заполнена «Зона отгрузки»! Заполните её перед отгрузкой.&quot;;
    КонецЕсли;
    
    Если ОрдерОбъект.Статус = Перечисления.СтатусыРасходныхОрдеров.Подготовлен Тогда
        ОрдерОбъект.Статус = Перечисления.СтатусыРасходныхОрдеров.КОтбору;
        ОрдерОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
    
    ЗаданиеОбъект = Документы.ОтборРазмещениеТоваров.СоздатьДокумент();
    ЗаданиеОбъект.ВидОперации 			  = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Отбор; 
    ЗаданиеОбъект.Склад       			  = ОрдерОбъект.Склад;
    ЗаданиеОбъект.ЗонаОтгрузки 			  = ЯчейкаОтгрузкиФакт; 
    ЗаданиеОбъект.Распоряжение 			  = ОрдерОбъект.Ссылка;
    ЗаданиеОбъект.Дата        			  = ОрдерОбъект.Дата;
	ЗаданиеОбъект.Исполнитель			  = ПользователиСлужебный.АвторизованныйПользователь();
	ЗаданиеОбъект.Ответственный 		  = ПользователиСлужебный.АвторизованныйПользователь();
	ЗаданиеОбъект.ДатаНачалаВыполнения    = ОрдерОбъект.Дата;
	ЗаданиеОбъект.ДатаОкончанияВыполнения = ОрдерОбъект.Дата;
	
    МассивНоменклатуры = ОрдерОбъект.ОтгружаемыеТовары.ВыгрузитьКолонку(&quot;Номенклатура&quot;);
    
    ЗапросОстатков = Новый Запрос;
    ЗапросОстатков.Текст = 
        &quot;ВЫБРАТЬ
        |    ТоварыВЯчейках.Номенклатура,
        |    ТоварыВЯчейках.Характеристика,
        |    ТоварыВЯчейках.Назначение,
        |    ТоварыВЯчейках.Серия,
        |    ТоварыВЯчейках.Ячейка,
        |    ТоварыВЯчейках.ВНаличииОстаток КАК ОстатокВЯчейке
        |ИЗ
        |    РегистрНакопления.ТоварыВЯчейках.Остатки(
        |        ,
        |        Ячейка.Владелец = &amp;Склад 
        |        И Номенклатура В (&amp;МассивНоменклатуры)
        |        И Ячейка.ТипСкладскойЯчейки &lt;&gt; ЗНАЧЕНИЕ(Перечисление.ТипыСкладскихЯчеек.Приемка)
        |        И Ячейка.ТипСкладскойЯчейки &lt;&gt; ЗНАЧЕНИЕ(Перечисление.ТипыСкладскихЯчеек.Отгрузка)
        |    ) КАК ТоварыВЯчейках
        |ГДЕ
        |    ТоварыВЯчейках.ВНаличииОстаток &gt; 0
        |УПОРЯДОЧИТЬ ПО
        |    ОстатокВЯчейке УБЫВ&quot;;
        
    ЗапросОстатков.УстановитьПараметр(&quot;Склад&quot;, ОрдерОбъект.Склад);
    ЗапросОстатков.УстановитьПараметр(&quot;МассивНоменклатуры&quot;, МассивНоменклатуры);
    ТаблицаЯчеек = ЗапросОстатков.Выполнить().Выгрузить();
    
    ТекстОшибкиНехватки = &quot;&quot;; 
    
    Для Каждого СтрОрдера Из ОрдерОбъект.ОтгружаемыеТовары Цикл
        ОсталосьСобрать = СтрОрдера.Количество;
        
        ПараметрыОтбораСтрок = Новый Структура;
        ПараметрыОтбораСтрок.Вставить(&quot;Номенклатура&quot;, СтрОрдера.Номенклатура);
        ПараметрыОтбораСтрок.Вставить(&quot;Назначение&quot;,   СтрОрдера.Назначение);
        
        СтрокиСТоваром = ТаблицаЯчеек.НайтиСтроки(ПараметрыОтбораСтрок);
        
        Для Каждого СтрЯчейки Из СтрокиСТоваром Цикл
            Если ОсталосьСобрать &lt;= 0 Тогда Прервать; КонецЕсли;
            Если СтрЯчейки.ОстатокВЯчейке &lt;= 0 Тогда Продолжить; КонецЕсли;
            
            БеремИзЯчейки = Мин(ОсталосьСобрать, СтрЯчейки.ОстатокВЯчейке);
            
            Если СтрОрдера.Количество = 0 Тогда БеремУпаковок = 0;
            Иначе БеремУпаковок = (БеремИзЯчейки / СтрОрдера.Количество) * СтрОрдера.КоличествоУпаковок; КонецЕсли;
            
            СтрОтбор = ЗаданиеОбъект.ТоварыОтбор.Добавить();
            ЗаполнитьЗначенияСвойств(СтрОтбор, СтрОрдера);
            СтрОтбор.Ячейка = СтрЯчейки.Ячейка; 
            СтрОтбор.Количество = БеремИзЯчейки;
            СтрОтбор.КоличествоУпаковок = БеремУпаковок; 
            СтрОтбор.КоличествоОтобрано = БеремИзЯчейки;
            СтрОтбор.КоличествоУпаковокОтобрано = БеремУпаковок;
            
            СтрРазмещение = ЗаданиеОбъект.ТоварыРазмещение.Добавить();
            ЗаполнитьЗначенияСвойств(СтрРазмещение, СтрОрдера);
            СтрРазмещение.Ячейка = ЯчейкаОтгрузкиФакт; 
            СтрРазмещение.Количество = БеремИзЯчейки;
            СтрРазмещение.КоличествоУпаковок = БеремУпаковок;
            СтрРазмещение.КоличествоРазмещено = БеремИзЯчейки;
            СтрРазмещение.КоличествоУпаковокРазмещено = БеремУпаковок;
            
            ОсталосьСобрать = ОсталосьСобрать - БеремИзЯчейки;
            СтрЯчейки.ОстатокВЯчейке = СтрЯчейки.ОстатокВЯчейке - БеремИзЯчейки;
        КонецЦикла;
        
        Если ОсталосьСобрать &gt; 0 Тогда
            ТекстОшибкиНехватки = ТекстОшибкиНехватки + Символы.ПС + &quot;— &quot; + СтрОрдера.Номенклатура + &quot; (не хватает: &quot; + ОсталосьСобрать + &quot;)&quot;;
        КонецЕсли;
    КонецЦикла;
    
    Если ЗначениеЗаполнено(ТекстОшибкиНехватки) Тогда
        ВызватьИсключение &quot;Следующие товары не найдены в ячейках хранения (возможно, они еще лежат в Зоне приемки):&quot; 
            + ТекстОшибкиНехватки + Символы.ПС + Символы.ПС 
            + &quot;Сначала выполните размещение этих товаров на стеллажи!&quot;;
    КонецЕсли;
    
    ЗаданиеОбъект.Статус = Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок; 
    ЗаданиеОбъект.Записать(РежимЗаписиДокумента.Проведение);
    
    Для Каждого СтрОрдера Из ОрдерОбъект.ОтгружаемыеТовары Цикл
        СтрОрдера.Действие = Перечисления.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить; 
    КонецЦикла;
    
    ОрдерОбъект.Статус = Перечисления.СтатусыРасходныхОрдеров.Отгружен; 
    ОрдерОбъект.Записать(РежимЗаписиДокумента.Проведение);
    
    ЗначениеВРеквизитФормы(ОрдерОбъект, &quot;Объект&quot;);

КонецПроцедуры</pre>
  <figure id="RkTq" class="m_column">
    <img src="https://img3.teletype.in/files/e8/d7/e8d74428-ed2f-4bdf-ae33-6a983b4ab45f.png" width="1595" />
  </figure>
  <p id="8jwz">При разработке автоматизации важно учитывать, что типовой механизм 1С:ERP по умолчанию работает через консолидацию отгрузок - система пытается объединить множество расходных ордеров под общие распоряжения, чтобы выдать кладовщику одно сводное задание на сборку товаров для целого рейса или зоны.</p>
  <h3 id="EE8Y">Краткие итоги:</h3>
  <p id="xU8U">Следуя этой методике, вы сможете развернуть полноценный WMS-контур, не ломая привычные бизнес-процессы компании.</p>
  <ul id="J8tq">
    <li id="5ccj">Склад перейдет на адресное хранение <strong>без остановки отгрузок</strong> ни на один день;</li>
    <li id="eSPt">Бухгалтерия и менеджеры сохранят бизнес-процесс <strong>в один клик</strong> и не будут саботировать учет;</li>
    <li id="Lz2o">Кладовщики увидят в отчетах <strong>четкие адреса полок и остатки</strong> вместо интуитивного поиска товаров.</li>
  </ul>
  <p id="z5zC">Да, такой подход частично обходит канонические механизмы консолидации заданий по ролям и использует &quot;костыли&quot; в виде безразмерных ячеек и фиктивных упаковок. Но помните: автоматизация пишется для людей и непрерывности бизнеса. Иногда, чтобы система реально заработала, архитектору нужно проявить инженерную наглость и упростить избыточную логику платформы.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/bKR42mCQYSw</guid><link>https://endif.pro/bKR42mCQYSw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/bKR42mCQYSw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Справка-расчет рублевых сумм документа в валюте для документа Реализация услуг и прочих активов</title><pubDate>Wed, 01 Apr 2026 09:51:51 GMT</pubDate><category>1С</category><description><![CDATA[<img src="https://img1.teletype.in/files/05/f7/05f7cf0b-9484-4604-8c57-a3792c90c174.png"></img>Потребовалось разработать внешнюю печатную форму для конфигурации 1С ERP 2.5.22. В конфигурациях 1С:Управление торговлей 11, 1С:Комплексная автоматизация 2 и 1С:ERP 2 такой формы нет.]]></description><content:encoded><![CDATA[
  <p id="Ptl0">Потребовалось разработать внешнюю печатную форму для конфигурации 1С ERP 2.5.22. В конфигурациях 1С:Управление торговлей 11, 1С:Комплексная автоматизация 2 и 1С:ERP 2 такой формы нет. </p>
  <p id="Jgks">Для подключения печатной формы не нужно вносить изменений в типовую конфигурацию.<br />Для подключения требуется выполнить следующие шаги:</p>
  <ul id="MDK6">
    <li id="XzBw">Открыть меню &quot;НСИ и администрирование&quot; - &quot;Печатные формы и обработки&quot;- &quot;Дополнительные отчеты и обработки&quot;</li>
    <li id="Qa65">Нажать на кнопку &quot;Создать&quot;, выбрать файл обработки. Все необходимые поля заполнятся автоматически</li>
    <li id="I3al">Нажать &quot;Записать и закрыть&quot;</li>
    <li id="7xfq">После этого, в документе &quot;Реализация услуг и прочих активов&quot; в меню &quot;Печать&quot; появится пункт &quot;Справка-расчет Рублевые суммы документа в валюте (РУиПА)&quot;</li>
  </ul>
  <figure id="mGt8" class="m_column">
    <img src="https://img1.teletype.in/files/c0/67/c0674c2b-73bc-47e8-881b-eb62624d9e70.png" width="825" />
  </figure>
  <p id="jThx">Скачать: <a href="https://disk.yandex.ru/d/ancWKxf3RgGtsA" target="_blank">https://disk.yandex.ru/d/ancWKxf3RgGtsA</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/so5tJiSdRu0</guid><link>https://endif.pro/so5tJiSdRu0?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/so5tJiSdRu0?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Программный отбор при открытии отчета СКД</title><pubDate>Thu, 26 Mar 2026 23:23:21 GMT</pubDate><description><![CDATA[Взято с сайта ИТС.]]></description><content:encoded><![CDATA[
  <pre id="zwLM" data-lang="arduino">УсловияОтбора = Новый Структура(&quot;&lt;ИмяПараметра&gt;&quot;, &lt;ЗначениеПараметра&gt;); // Тут может быть как параметр, так и отбор.
ПараметрыФормы = Новый Структура(&quot;Отбор, СформироватьПриОткрытии&quot;, УсловияОтбора, Истина);
ОткрытьФорму(&quot;Отчет.&lt;ИмяВашегоОтчета&gt;.ФормаОбъекта&quot;, ПараметрыФормы);</pre>
  <p id="zrMh">Взято с сайта ИТС.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/dhlRO_nraSq</guid><link>https://endif.pro/dhlRO_nraSq?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/dhlRO_nraSq?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Мокрые шнурки</title><pubDate>Wed, 25 Feb 2026 10:33:18 GMT</pubDate><description><![CDATA[А вас тоже дико раздражает и вызывает омерзение завязывание мокрых шнурков зимой? А ты уже находишься в состоянии, когда одет и обут, и чтобы помыть руки нужно снова разуваться.]]></description><content:encoded><![CDATA[
  <p id="ZTOL">А вас тоже дико раздражает и вызывает омерзение завязывание мокрых шнурков зимой? А ты уже находишься в состоянии, когда одет и обут, и чтобы помыть руки нужно снова разуваться. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/1-6k_HCmGp6</guid><link>https://endif.pro/1-6k_HCmGp6?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/1-6k_HCmGp6?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Настройка нумерации документов в 1С</title><pubDate>Thu, 05 Feb 2026 14:16:39 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bb/80/bb80bdf4-4bad-4b28-a949-503ead572365.png"></media:content><category>1С</category><description><![CDATA[<img src="https://img2.teletype.in/files/10/78/10780120-5d51-4169-ba21-af1f59c58299.png"></img>Не секрет, что в автоматическая нумерация документов реализована в каждой конфигурации 1С. Структура стандартного номера состоит из следующего шаблона:]]></description><content:encoded><![CDATA[
  <p id="lTtj">Не секрет, что в автоматическая нумерация документов реализована в каждой конфигурации 1С. Структура стандартного номера состоит из следующего шаблона:</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="XVhO"><strong>ААББ-ВВ000001, </strong>где:</p>
  </section>
  <ul id="yw7e">
    <li id="UOL9"><strong>АА</strong> - префикс организации (если в информационной базе ведется учет по нескольким организациям, то у каждой организации может быть свой префикс);<br /><strong>ББ</strong> - префикс информационной базы;</li>
    <li id="MJai"><strong>ВВ</strong> - дополнительный префикс, который может быть назначен администратором;</li>
    <li id="fky5"><strong>000001</strong> - номер объекта в информационной базе</li>
  </ul>
  <p id="FGFC">Как правило, нумерация сквозная, и является уникальной в пределах одного года. Более тонкую настройку нумерации (периодичности) можно изменить в конфигураторе в свойствах самого объекта метаданных на вкладке &quot;Нумерация&quot;:</p>
  <figure id="SM49" class="m_original">
    <img src="https://img2.teletype.in/files/10/78/10780120-5d51-4169-ba21-af1f59c58299.png" width="585" />
  </figure>
  <p id="Hp1q">По умолчанию, дополнительный пользовательский префикс не формируется, и для его изменения есть два основных способа, которые мы рассмотрим ниже.</p>
  <h3 id="XHhC">Изменение префикса организации</h3>
  <p id="3pid">Префикс организации задается непосредственно в карточке организации, вне зависимости от используемой конфигурации: </p>
  <figure id="76V2" class="m_custom">
    <img src="https://img4.teletype.in/files/f9/24/f92451c6-cf1b-4905-8524-49655b4295b8.png" width="701" />
  </figure>
  <p id="ntgw">Рекомендуем устанавливать префикс таким образом, чтобы из этих двух символов было понятно, о какой организации идёт речь. Например:</p>
  <ol id="MCLu">
    <li id="IAnA">&quot;Ёлочный базар ООО&quot; - <strong>ЁБ</strong></li>
    <li id="VG4y">&quot;Железо Оптом ООО&quot; - <strong>ЖО</strong></li>
    <li id="Pgyd">&quot;Хромированные утюги ООО &quot; - <strong>ХУ</strong></li>
  </ol>
  <p id="l7BX">После изменения префикса организации, нумерация документов будет выглядеть следующим образом: </p>
  <figure id="2Sm1" class="m_original">
    <img src="https://img2.teletype.in/files/95/86/9586eb86-e415-4513-8be8-53b425490a3a.png" width="707" />
  </figure>
  <h3 id="Y1kS"><strong>Изменение префикса информационной базы</strong></h3>
  <p id="YZ7b">Обычно третий и четвёртый символ заполняют при настройке синхронизации баз - это удобно, ведь документы, пришедшие из другой информационной базы, визуально не смешиваются, т.к. имеют другой индекс ИБ.</p>
  <p id="Lwdn">Заходим в настройку синхронизации информационных (раздел &quot;НСИ и администрирование&quot;) баз и можем поменять префикс:</p>
  <figure id="mbnT" class="m_original">
    <img src="https://img2.teletype.in/files/d7/26/d7267523-541d-4c03-b93d-d81b1d014332.png" width="734" />
  </figure>
  <p id="9yY9">Если префикс информационной базы не указан, то используется префикс по умолчанию &quot;00&quot; (ноль-ноль).</p>
  <p id="XnR6">Рекомендации по префиксу информационной базы такие: </p>
  <ul id="e3B0">
    <li id="9vbu"><strong>УТ </strong>- для конфигурации &quot;1С: Управление торговлей&quot;;</li>
    <li id="3uPC"><strong>БП </strong>- для конфигурации &quot;1С: Бухгалтерия предприятия&quot;;</li>
    <li id="ciIf"><strong>ЗК </strong>- для конфигурации &quot;1С: Зарплата и управление персоналом&quot;;</li>
    <li id="gnRs"><strong>УП </strong>- для конфигурации &quot;1С: ERP Управление производственным предприятием&quot;;</li>
    <li id="4i6M"><strong>КА </strong>- для конфигурации &quot;1С: Комплексная автоматизация&quot;;</li>
    <li id="qKid"><strong>ДО </strong>- для конфигурации &quot;1С: Документооборот&quot;</li>
  </ul>
  <h3 id="HqdD"><strong>Изменение пользовательского префикса</strong></h3>
  <p id="YVc8">Довольно часто спрашивают, а как, собственно, установить пользовательский префикс у документов, которые не имеют настройки префикса?</p>
  <p id="wLmi">На самом деле, очень просто.</p>
  <p id="y1ps">Если конфигурация позволяет произвести настройку префикса, то рекомендую делать это именно в настройках программы. Например, в 1С: КА, 1С: ERP и 1С: УТ можно установить префиксы у счет-фактур:</p>
  <figure id="Un2c" class="m_original">
    <img src="https://img3.teletype.in/files/ed/7c/ed7cc784-3e37-4fec-92d4-ae65e2781c2b.png" width="784" />
  </figure>
  <p id="xDMl">Но чаще всего данной манипуляции бывает недостаточно, и если, допустим, вы хотите у документа &quot;Счет-фактура налогового агента&quot; установить префикс &quot;НУ&quot;, чтобы документ имел номер, например, ТДКА-НУ00001, то такой настройки в системе нет. Но делается это достаточно просто.</p>
  <p id="Almp">Откроем нашу базу в режиме &quot;Конфигуратор&quot; и в дереве объектов метаданных найдём тот документ, которому мы решили присвоить новый префикс в системе, и сразу переходим в модуль объекта:</p>
  <figure id="eQ5b" class="m_original">
    <img src="https://img2.teletype.in/files/d4/46/d446d6d1-51fe-44dc-a631-4d2c917a3593.png" width="742" />
  </figure>
  <p id="SjrN">В модуле объекта документа находим процедуру-обработчик &quot;ПриУстановкеНовогоНомера&quot;, щелкаем по наименованию процедуры правой кнопкой мыши и выбираем &quot;Добавить в расширение&quot; -&gt; тип вызова &quot;Вызывать вместо (с контролем)&quot;. Экранируем строчку со старым префиксом, используя вставки #Удаление, #КонецУдаления, и добавляем свою строчку с помощью #Вставка и #КонецВставки (см. рисунок ниже)</p>
  <figure id="ZfqL" class="m_original">
    <img src="https://img2.teletype.in/files/d8/f3/d8f3b49b-52d8-47ea-9b8d-765f7d2f2f58.png" width="695" />
  </figure>
  <p id="riFw">Используя данные вставки (удаления) мы как бы &quot;удаляем&quot; старый код, а вставками ниже (вставка/конец вставки) мы добавляем свой код, который и отрабатывает в конечном итоге. В данном конкретном примере я указал в качестве префикса Счет-фактуры налогового агента &quot;НУ&quot;.</p>
  <p id="JSnc">Таким образом, мы оставляем нашу конфигурацию на поддержке, аккуратно скорректировав поведение префиксации с помощью механизма расширений. Данный способ не подойдёт для информационных баз, размещенных в облачном сервисе &quot;Фреш&quot; и ему подобных.</p>
  <p id="YP1w"></p>
  <p id="rGpT">Если было полезно - безумно рад, делитесь данной информацией с коллегами.</p>
  <p id="Vm4v">Если вам потребуется помощь - пишите.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/IWYwNaiuWb9</guid><link>https://endif.pro/IWYwNaiuWb9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/IWYwNaiuWb9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Билет 15, бухгалтерский учет (1С СПЕЦ)</title><pubDate>Wed, 28 Jan 2026 09:46:23 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/63/18/63185d7c-b04f-41e5-999c-1d74cee4f8ca.png"></media:content><category>1С</category><description><![CDATA[<img src="https://img3.teletype.in/files/28/a1/28a17e93-ffdf-424f-9819-fe4e8bbfef24.png"></img>Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность вести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.]]></description><content:encoded><![CDATA[
  <h2 id="gOEk">Задача:</h2>
  <p id="HUsc">Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность вести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.</p>
  <p id="bWlF">Требуется реализовать возможность ведения учета товаров в разрезе мест хранения и партий товаров. Под партией товара понимается документ, регистрирующий его (товара) поступление.</p>
  <p id="5fSB">В документе «Приходная накладная» склад указывается в табличной части для каждой строки и формируются следующие проводки:</p>
  <p id="NC5Y"><em>Дт «Товары» - Кт «Поставщики» на количество и сумму закупаемого товара.</em></p>
  <p id="n8Bq">Продажа товара производится со склада и регистрируется документом «Расходная накладная», cклад указывается в реквизите самого документа. При заполнении документа партия товара не указывается. При проведении производится проверка достаточности количества на указанном складе продаваемого товара.</p>
  <p id="K8yQ">Документ «Расходная накладная» реализует следующие проводки:</p>
  <p id="kUT1"><em> Дт «Прибыли и убытки» - Кт «Товары» на количество и сумму себестоимости;</em></p>
  <p id="p0WI"><em> Дт «Покупатели» - Кт «Прибыли и убытки» на сумму в продажных ценах.</em></p>
  <p id="X7AK">При продаже товара списание партий этого товара производится либо по дисциплине LIFO («последним пришел, первым ушел»), либо FIFO («первым пришел, первым ушел»). Какая из дисциплин будет использоваться, определяется в начале года и в течение года не меняется.</p>
  <p id="ddwH">Себестоимость товара рассчитывается в разрезе партий на складе для данного товара.</p>
  <p id="ntKG">Используя план видов характеристик необходимо предоставить возможность пользователю добавить произвольное количество дополнительных характеристик к каждому товару (материал, цвет, страна-производитель и т.д.)</p>
  <p id="Pt2d">Необходимо построить отчет о продажах товаров. Дополнительно данные в отчете должны быть сгруппированы по выбранной характеристике.</p>
  <p id="EhAQ">Продажи товаров за период с 01.01.2014 по 31.01.2014</p>
  <figure id="Wrxz" class="m_original">
    <img src="https://img3.teletype.in/files/28/a1/28a17e93-ffdf-424f-9819-fe4e8bbfef24.png" width="865" />
  </figure>
  <h2 id="aTsV">Решение:</h2>
  <p id="bDXS">Для начала, требуется создать и настроить в каркасной конфигурации регистр бухгалтерии &quot;Управленческий&quot;.</p>
  <p id="32QT">Создаем новый документ «Операция». У него не будет ни реквизитов, ни табличных частей. На закладке <em>Движения </em>запрещаем проведение документа и указываем, что документ является регистратором для регистра бухгалтерии «Управленческий».</p>
  <figure id="F0SB" class="m_original">
    <img src="https://img2.teletype.in/files/d9/ae/d9ae956a-f271-4d9c-a7ed-d21da96b0047.png" width="496" />
  </figure>
  <p id="ybfu">Создаем форму документа «Операция».</p>
  <p id="CkUO">В редакторе формы на закладке <em>Реквизиты </em>из коллекции <em>Движения </em>перетаскиваем набор записей регистра бухгалтерии «Управленческий» на закладку <em>Элементы</em>. При появлении вопроса «Добавить колонки...» отвечаем «Да».</p>
  <figure id="t4BN" class="m_original">
    <img src="https://img4.teletype.in/files/7c/5e/7c5e8744-9aee-4500-a20e-9750bd2f7804.png" width="1002" />
  </figure>
  <p id="FjLF">Важный момент: так как колонки автоматически добавляются в соответствии со структурой регистра бухгалтерии, то нужно сначала выполнить настройку регистра бухгалтерии и только после этого создавать документ «Операция», т.к. в противном случае окажется, что на форме будет не хватать колонок для ввода данных.</p>
  <p id="bXQW">Например, если сначала создать документ «Операция», а потом в регистре бухгалтерии добавить измерение «Организация», то в документе «Операция» организацию указать не будет возможности. Нужно будет вернуться в форму документа «Операция» и доработать ее.</p>
  <figure id="HmB6" class="m_original">
    <img src="https://img4.teletype.in/files/b7/c5/b7c5d3e8-4774-46be-9e86-e4fb7eeb0339.png" width="1266" />
  </figure>
  <p id="bpJL">По кнопке &quot;Записать&quot; проводки запишутся в регистр бухгалтерии. Убедимся в этом, открыв форму списка регистра бухгалтерии &quot;Управленческий&quot;.</p>
  <figure id="8XSC" class="m_original">
    <img src="https://img4.teletype.in/files/32/93/3293ccaf-8b6a-42f4-8642-43344e0eda76.png" width="1265" />
  </figure>
  <p id="8rD9">Документ «Операция» готов, и для сдачи экзамена больше ничего и не требуется. Однако, в реальной жизни пользоваться таким документом не очень удобно, и есть смысл произвести еще парочку простых, но очень полезных доработок.</p>
  <p id="7CBd">Как правило, период (дата) в проводке всегда совпадает с датой документа-регистратора, поэтому имеет смысл реализовать алгоритм в модуле объекта документа &quot;Операция&quot;, который будет заполнять эти данные автоматически. В обработчик события &quot;ПередЗаписью&quot; добавим следующий код:</p>
  <pre id="IsJn">Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Для Каждого Проводка Из Движения.Управленческий Цикл
        Проводка.Период = Дата;
    КонецЦикла;
КонецПроцедуры</pre>
  <h2 id="cYRR">Особенности документа &quot;Операция&quot;:</h2>
  <p id="cpZR">Если вам требуется отменить участие документа &quot;Операция&quot; в учете, то установка пометки удаления не отменяет его проводки. Можете убедиться в этом сами - поставьте пометку удаления у созданного вами документа и проверьте, что по регистру бухгалтерии &quot;Управленческий&quot; проводки остались на месте.</p>
  <p id="kDkp">Для решения данной задачи можно воспользоваться свойством записи регистра бухгалтерии <em>Активность</em>. Записи со снятой активностью физически остаются в таблице движений регистра бухгалтерии, но в таблицы итогов регистра бухгалтерии такие записи не включаются. Соответственно, отключив активность движений документа, исключим его влияние на состояние учета.</p>
  <p id="Qbod">Реализуем синхронизацию пометки удаления документа «Операция» и значений активности движений документа. При установке пометки удаления будем отключать активность движений, при снятии пометки удаления будем включать активность движений. Автоматическое заполнение периода в движениях также будем выполнять:</p>
  <p id="nqLl">Для этого в модуле объекта документа «Операция» добавим программный код:</p>
  <pre id="RYGz">Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Активность = Не ПометкаУдаления;    
    
    Проводки = Движения.Управленческий;
       
    Если  Не Проводки.Записывать Тогда
        Проводки.Прочитать();
    КонецЕсли;
    
    НужноЗаписывать = Проводки.Записывать;
    
    Для Каждого Проводка Из Проводки Цикл
        
        Если Проводка.Период &lt;&gt; Дата Тогда
            Проводка.Период = Дата;
            НужноЗаписывать = Истина;
        КонецЕсли;
        
        Если Проводка.Активность &lt;&gt; Активность Тогда
            Проводка.Активность = Активность;
            НужноЗаписывать = Истина;
        КонецЕсли;
        
    КонецЦикла;
    
    Проводки.Записывать = НужноЗаписывать;  

КонецПроцедуры</pre>
  <p id="WByB">Код требуется разместить именно в модуле объекта, чтобы данный алгоритм корректно отрабатывал даже при работе из списка документов, т.е. даже если документ не открыт пользователем.</p>
  <h2 id="Z53O">Приходная накладная:</h2>

]]></content:encoded></item><item><guid isPermaLink="true">https://endif.pro/6jcNERV_kwH</guid><link>https://endif.pro/6jcNERV_kwH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif</link><comments>https://endif.pro/6jcNERV_kwH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=endif#comments</comments><dc:creator>endif</dc:creator><title>Привет, мир!</title><pubDate>Tue, 07 Sep 2021 21:33:32 GMT</pubDate><description><![CDATA[Ничего умнее не придумал.]]></description><content:encoded><![CDATA[
  <hr />
  <p id="LBPV">Ничего умнее не придумал.</p>

]]></content:encoded></item></channel></rss>