Ответы в темах
-
АвторЗаписи
-
31 октября 2026 в 16:03 в ответ на: Можно ли переделать структуру регистров, добавив регистр сведений «Продажи»? #38941
Да, так переделать можно. Более того, для этой задачи это будет более аккуратная архитектура:
— регистр накопления
ОстаткиНоменклатурыхранит только складские остатки и себестоимость;
— регистр сведенийПродажихранит оборотные данные для первого отчета;
— отчет по остаткам строится по регистру накопления;
— отчет по продажам строится по регистру сведений.Но есть важный нюанс по формулировке задания.
Если в условии буквально сказано, что оба отчета должны строиться по регистру
ОстаткиНоменклатуры, то использование отдельного регистра сведений формально отступает от требования. Если же экзаменатор допускает вспомогательный регистр для хранения продаж, такой вариант нормальный и логичный.Для учебной задачи я бы предложил именно эту структуру.
—
# 1. Итоговая структура
## Регистр накопления
1С (Код)1ОстаткиНоменклатурыВид:
1С (Код)1ОстаткиИзмерения:
1С (Код)123НоменклатураСкладПартияРесурсы:
1С (Код)12КоличествоСебестоимость—
## Регистр сведений
1С (Код)1ПродажиНастройки:
1С (Код)123ПериодическийПериодичность: В пределах секундыПодчинение регистратору: ДаИзмерение:
1С (Код)1НоменклатураРесурсы:
1С (Код)123КоличествоСебестоимостьСуммаПродажиРегистраторами регистра сведений сделать:
1С (Код)12РасходнаяНакладнаяКорректировкаРегистровКорректировкаРегистровдобавляется регистратором только в том случае, если пользователь должен иметь возможность вручную корректировать данные продаж. Если документ корректировки работает только с регистром остатков, достаточно оставить регистратором толькоРасходнаяНакладная.—
# 2. Регистр накопления «ОстаткиНоменклатуры»
## Измерения
1С (Код)123НоменклатураСкладПартияТипы:
1С (Код)12345678НоменклатураСправочникСсылка.НоменклатураСкладСправочникСсылка.СкладыПартияДокументСсылка.ПриходнаяНакладнаяПартия будет ссылкой на приходную накладную.
Например:
| Номенклатура | Склад | Партия | Количество | Себестоимость |
|—|—|—|—:|—:|
| Куртка | Основной | Приходная накладная № 1 | 10 | 1000 |
| Куртка | Основной | Приходная накладная № 2 | 5 | 600 |## Ресурсы
1С (Код)12КоличествоСебестоимостьТипы:
1С (Код)12345КоличествоЧисло, 15, 3СебестоимостьЧисло, 15, 2В этом регистре не будет данных о выручке и количестве продаж. Только складской остаток.
—
# 3. Регистр сведений «Продажи»
Создать регистр сведений:
1С (Код)1Продажи## Настройки регистра
1С (Код)123Периодичность: В пределах секундыПодчинение регистратору: ДаРежим записи: НезависимыйУ регистра сведений, подчиненного регистратору, платформа автоматически использует:
—
Период;
—Регистратор;
—Номер строки.Пользователь самостоятельно создает только измерение
Номенклатура.## Измерения
1С (Код)1НоменклатураТип:
1С (Код)1СправочникСсылка.Номенклатура## Ресурсы
1С (Код)123КоличествоСебестоимостьСуммаПродажиТипы:
1С (Код)12345678КоличествоЧисло, 15, 3СебестоимостьЧисло, 15, 2СуммаПродажиЧисло, 15, 2Склад в регистр продаж добавлять не обязательно, потому что в отчете продаж по фотографии склад не выводится.
Если в будущем потребуется отчет продаж по складам, тогда
Складнужно добавить измерением регистра сведений.—
# 4. Что хранится в регистре «Продажи»
## Продажа товара
Например, продано 3 штуки товара на сумму 500, себестоимость 320.
В регистре сведений:
| Номенклатура | Количество | Себестоимость | СуммаПродажи |
|—|—:|—:|—:|
| Куртка | 3 | 320 | 500 |## Продажа услуги
Например, оказана услуга доставки в количестве 1 на сумму 331.
В регистре сведений:
| Номенклатура | Количество | Себестоимость | СуммаПродажи |
|—|—:|—:|—:|
| Доставка | 1 | 0 | 331 |Таким образом, услуги не попадают в регистр остатков, но попадают в регистр продаж.
—
# 5. Проведение приходной накладной
Приходная накладная записывает данные только в регистр накопления
ОстаткиНоменклатуры.Для товара:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859Процедура ОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Склад) ТогдаОтказ = Истина;Сообщить("Не указан склад.");Возврат;КонецЕсли;Движения.ОстаткиНоменклатуры.Записывать =Истина;Для каждого СтрокаТовара Из Товары ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТовара.Номенклатура) ТогдаОтказ = Истина;Сообщить("Не указана номенклатура.");Возврат;КонецЕсли;Если СтрокаТовара.Количество <= 0 ТогдаОтказ = Истина;Сообщить("Количество должно быть больше нуля.");Возврат;КонецЕсли;Если СтрокаТовара.Номенклатура.ВидНоменклатуры =Перечисления.ВидыНоменклатуры.Услуга ТогдаПродолжить;КонецЕсли;Движение =Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =ВидДвиженияНакопления.Приход;Движение.Период = Дата;Движение.Номенклатура =СтрокаТовара.Номенклатура;Движение.Склад = Склад;Движение.Партия = Ссылка;Движение.Количество =СтрокаТовара.Количество;Движение.Себестоимость =СтрокаТовара.Сумма;КонецЦикла;КонецПроцедурыУслуги в приходной накладной не формируют остатки.
—
# 6. Проведение расходной накладной
При проведении расходной накладной нужно:
1. определить метод списания;
2. списать товар изОстаткиНоменклатуры;
3. рассчитать себестоимость проданных товаров;
4. записать продажи товаров и услуг в регистр сведенийПродажи.В регистр накопления попадают только складские движения товаров.
В регистр сведений попадают продажи товаров и услуг.
—
# 7. Списание товара
Получение остатков по партиям остается практически таким же, как в предыдущем варианте.
Для FIFO:
1С (Код)12345678910111213141516171819ЗапросОстатки = Новый Запрос;ЗапросОстатки.Текст ="ВЫБРАТЬ| Остатки.Номенклатура,| Остатки.Склад,| Остатки.Партия,| Остатки.КоличествоОстаток КАК Количество,| Остатки.СебестоимостьОстаток КАК Себестоимость|ИЗ| РегистрНакопления.ОстаткиНоменклатуры.Остатки(| &Момент,| Номенклатура = &Номенклатура| И Склад = &Склад| ) КАК Остатки|ГДЕ| Остатки.КоличествоОстаток > 0|УПОРЯДОЧИТЬ ПО| Остатки.Партия.Дата,| Остатки.Партия";Для LIFO заменить сортировку:
1С (Код)123|УПОРЯДОЧИТЬ ПО| Остатки.Партия.Дата УБЫВ,| Остатки.Партия УБЫВДля метода средней себестоимости порядок партий не влияет на стоимость единицы, но партии по-прежнему используются для распределения количества.
—
# 8. Движения по регистру накопления при продаже товара
Для товара движение в регистре
ОстаткиНоменклатурыформируется по каждой партии:1С (Код)123456789101112131415161718Движение =Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =ВидДвиженияНакопления.Расход;Движение.Период = Дата;Движение.Номенклатура =ВыборкаТоваров.Номенклатура;Движение.Склад = Склад;Движение.Партия =СтрокаОстатка.Партия;Движение.Количество =КоличествоИзПартии;Движение.Себестоимость =СтоимостьИзПартии;В регистр накопления не записывается сумма продажи.
—
# 9. Формирование записей регистра «Продажи»
После списания товаров нужно сформировать записи регистра сведений.
## Создание набора записей
1С (Код)123456789101112НаборЗаписейПродажи =РегистрыСведений.Продажи.СоздатьНаборЗаписей();НаборЗаписейПродажи.Отбор.Регистратор.Использование =Истина;НаборЗаписейПродажи.Отбор.Регистратор.Значение =Ссылка;НаборЗаписейПродажи.Прочитать();НаборЗаписейПродажи.Очистить();Почему сначала выполняются
Прочитать()иОчистить():— при перепроведении документа нужно удалить старые записи;
— если пользователь изменил количество, цену или номенклатуру, старые продажи не должны остаться;
— набор записей должен содержать только актуальные данные документа.—
## Запись продажи товара
После расчета себестоимости товара:
1С (Код)123456789101112131415ЗаписьПродажи =НаборЗаписейПродажи.Добавить();ЗаписьПродажи.Период = Дата;ЗаписьПродажи.Номенклатура =ВыборкаТоваров.Номенклатура;ЗаписьПродажи.Количество =ВыборкаТоваров.Количество;ЗаписьПродажи.Себестоимость =СебестоимостьТовара;ЗаписьПродажи.СуммаПродажи =ВыборкаТоваров.Сумма;Так как регистр подчинен регистратору, дополнительно устанавливать
Регистраторобычно не требуется. Он определяется платформой при записи набора с отбором по регистратору. Если в конкретной версии платформы поле доступно для записи, можно установить:1С (Код)1ЗаписьПродажи.Регистратор = Ссылка;Но в обычном наборе записей регистратора достаточно установить через отбор.
—
# 10. Запись услуг в регистр «Продажи»
Услуги не обрабатываются алгоритмом списания.
Их необходимо выбрать из табличной части документа и записать в регистр сведений.
1С (Код)1234567891011121314151617ЗапросУслуги = Новый Запрос;ЗапросУслуги.Текст ="ВЫБРАТЬ| РасходнаяНакладнаяТовары.Номенклатура,| СУММА(РасходнаяНакладнаяТовары.Количество)| КАК Количество,| СУММА(РасходнаяНакладнаяТовары.Сумма)| КАК Сумма|ИЗ| Документ.РасходнаяНакладная.Товары| КАК РасходнаяНакладнаяТовары|ГДЕ| РасходнаяНакладнаяТовары.Ссылка = &Ссылка| И РасходнаяНакладнаяТовары.Номенклатура.ВидНоменклатуры =| &ВидНоменклатурыУслуга|СГРУППИРОВАТЬ ПО| РасходнаяНакладнаяТовары.Номенклатура";Параметры:
1С (Код)123456ЗапросУслуги.УстановитьПараметр("Ссылка", Ссылка);ЗапросУслуги.УстановитьПараметр("ВидНоменклатурыУслуга",Перечисления.ВидыНоменклатуры.Услуга);Запись:
1С (Код)123456789101112131415161718192021ВыборкаУслуг =ЗапросУслуги.Выполнить().Выбрать();Пока ВыборкаУслуг.Следующий() ЦиклЗаписьПродажи =НаборЗаписейПродажи.Добавить();ЗаписьПродажи.Период = Дата;ЗаписьПродажи.Номенклатура =ВыборкаУслуг.Номенклатура;ЗаписьПродажи.Количество =ВыборкаУслуг.Количество;ЗаписьПродажи.Себестоимость = 0;ЗаписьПродажи.СуммаПродажи =ВыборкаУслуг.Сумма;КонецЦикла;В конце:
1С (Код)1НаборЗаписейПродажи.Записать();—
# 11. Важное замечание о времени регистра «Продажи»
Периодичность регистра:
1С (Код)1В пределах секундынужна для того, чтобы записи можно было получать за произвольный период с точностью до секунды.
Например, отчет задает:
1С (Код)12Начало: 01.12.2017 00:00:00Конец: 31.12.2017 23:59:59В запросе к регистру сведений используется поле
Период:1С (Код)12|ГДЕ| Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериодаСам по себе регистр сведений не имеет виртуальной таблицы
Обороты, как регистр накопления. Поэтому отчет будет читать записи напрямую и агрегировать их черезСУММА.—
# 12. Полный фрагмент обработки проведения расходной накладной
Общая структура будет такой:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455Процедура ОбработкаПроведения(Отказ, РежимПроведения)Если Не ЗначениеЗаполнено(Склад) ТогдаОтказ = Истина;Сообщить("Не указан склад.");Возврат;КонецЕсли;МетодСписания =ПолучитьМетодСписанияНаДату(Дата,Отказ);Если Отказ ТогдаВозврат;КонецЕсли;Движения.ОстаткиНоменклатуры.Записывать =Истина;НаборЗаписейПродажи =РегистрыСведений.Продажи.СоздатьНаборЗаписей();НаборЗаписейПродажи.Отбор.Регистратор.Использование =Истина;НаборЗаписейПродажи.Отбор.Регистратор.Значение =Ссылка;НаборЗаписейПродажи.Прочитать();НаборЗаписейПродажи.Очистить();ОбработатьПродажуТоваров(МетодСписания,НаборЗаписейПродажи,Отказ);Если Отказ ТогдаВозврат;КонецЕсли;ЗаписатьПродажуУслуг(НаборЗаписейПродажи,Отказ);Если Отказ ТогдаВозврат;КонецЕсли;НаборЗаписейПродажи.Записать();КонецПроцедурыВспомогательная процедура
ОбработатьПродажуТоваровдолжна:— получить сгруппированные товары;
— проверить остатки;
— определить партии;
— рассчитать себестоимость;
— сформировать движения расхода поОстаткиНоменклатуры;
— добавить одну запись вНаборЗаписейПродажипо каждой номенклатуре.—
# 13. Отчет «Продажи товаров»
Теперь этот отчет строится по регистру сведений:
1С (Код)1Продажи## Запрос отчета
1С (Код)12345678910111213141516171819|ВЫБРАТЬ| Продажи.Номенклатура.ВидНоменклатуры| КАК ВидНоменклатуры,| Продажи.Номенклатура| КАК Номенклатура,| СУММА(Продажи.Количество)| КАК Количество,| СУММА(Продажи.Себестоимость)| КАК Себестоимость,| СУММА(Продажи.СуммаПродажи)| КАК Продажа|ИЗ| РегистрСведений.Продажи КАК Продажи|ГДЕ| Продажи.Период МЕЖДУ| &НачалоПериода И &КонецПериода|СГРУППИРОВАТЬ ПО| Продажи.Номенклатура.ВидНоменклатуры,| Продажи.НоменклатураПараметры:
1С (Код)12НачалоПериодаКонецПериодаГруппировки СКД:
1С (Код)12ВидНоменклатурыНоменклатураРесурсы:
1С (Код)123КоличествоСебестоимостьПродажаВ результате будет получена структура:
1С (Код)123456ТоварыКуртка замшеваяПортсигарУслугиДоставкаДля услуг поле
Себестоимостьбудет равно нулю.—
# 14. Отчет «Остатки товаров»
Этот отчет по-прежнему строится по регистру накопления:
1С (Код)1ОстаткиНоменклатуры## Запрос
1С (Код)1234567891011121314151617181920|ВЫБРАТЬ| Остатки.Номенклатура| КАК Номенклатура,| Остатки.Склад| КАК Склад,| Остатки.Партия| КАК Партия,| Остатки.КоличествоОстаток| КАК Количество,| Остатки.СебестоимостьОстаток| КАК Стоимость|ИЗ| РегистрНакопления.ОстаткиНоменклатуры.Остатки(| &Период,| Номенклатура.ВидНоменклатуры =| &ВидНоменклатурыТовар| ) КАК Остатки|ГДЕ| Остатки.КоличествоОстаток <> 0| ИЛИ Остатки.СебестоимостьОстаток <> 0Параметры:
1С (Код)12ПериодВидНоменклатурыТоварГруппировки:
1С (Код)123НоменклатураСкладПартияРесурсы:
1С (Код)12КоличествоСтоимость—
# 15. Документ «КорректировкаРегистров»
Документ корректировки работает с регистром накопления
ОстаткиНоменклатуры.Табличная часть:
1С (Код)1ДвиженияОстатковПоля:
1С (Код)123456ВидДвиженияНоменклатураСкладПартияКоличествоСебестоимостьПроведение:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637Процедура ОбработкаПроведения(Отказ, РежимПроведения)Если ПустаяСтрока(Комментарий) ТогдаОтказ = Истина;Сообщить("Не заполнен комментарий.");Возврат;КонецЕсли;Движения.ОстаткиНоменклатуры.Записывать =Истина;Для каждого СтрокаДвиженияИз ДвиженияОстатков ЦиклДвижение =Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =СтрокаДвижения.ВидДвижения;Движение.Период = Дата;Движение.Номенклатура =СтрокаДвижения.Номенклатура;Движение.Склад =СтрокаДвижения.Склад;Движение.Партия =СтрокаДвижения.Партия;Движение.Количество =СтрокаДвижения.Количество;Движение.Себестоимость =СтрокаДвижения.Себестоимость;КонецЦикла;КонецПроцедурыЕсли корректировка должна влиять также на отчет продаж, тогда в документ нужно добавить отдельную табличную часть
Продажии формировать записи регистра сведенийПродажи. Но для условия задачи это не требуется.—
# 16. Переходы между методами списания
Механизм не меняется.
В регистр сведений
УчетнаяПолитикавводятся записи:1С (Код)12301.01.2017 FIFO01.07.2017 Средняя01.09.2017 LIFOПри проведении документа используется запись, действующая на его дату.
Регистр продаж на выбор метода не влияет. В нем просто записывается рассчитанная при проведении себестоимость.
Например, если документ проведен методом FIFO, в регистр
Продажизаписывается себестоимость FIFO.Если документ проведен методом средней, в регистр
Продажизаписывается себестоимость по средней.Поэтому отчет продаж не пересчитывает себестоимость повторно. Он получает уже рассчитанное значение из регистра сведений.
—
# 17. Преимущества такого варианта
## Регистр накопления простой
В нем только необходимые складские данные:
1С (Код)12КоличествоСебестоимость## Продажи не влияют на остатки
Продажи хранятся отдельно и не создают лишних ресурсов в регистре накопления.
## Услуги обрабатываются естественно
Услуги не имеют склада и партии, но могут иметь:
1С (Код)123КоличествоСебестоимость = 0Сумма продажи## Себестоимость фиксируется на момент проведения
Это важно. Если позже изменится учетная политика, старые продажи не изменятся, потому что в регистре
Продажиуже сохранена фактическая себестоимость, рассчитанная при проведении документа.## Перепроведение работает корректно
Перед записью продаж по документу старые записи регистра сведений удаляются:
1С (Код)12НаборЗаписейПродажи.Прочитать();НаборЗаписейПродажи.Очистить();Затем записывается актуальный набор.
—
# 18. Что нужно сказать на экзамене
Корректная формулировка архитектуры:
> Регистр накопления
ОстаткиНоменклатурыпредназначен для хранения складских остатков товаров по складам и партиям. В нем хранятся ресурсыКоличествоиСебестоимость. Для формирования отчета по продажам используется периодический регистр сведенийПродажи, подчиненный регистраторам. В него при проведении расходной накладной записываются количество, рассчитанная себестоимость и сумма продажи по каждой номенклатуре. Услуги в регистр остатков не попадают, а в регистр продаж записываются с нулевой себестоимостью. Метод списания определяется по региструУчетнаяПолитикана дату документа.Такое решение технически корректно и существенно проще варианта с четырьмя ресурсами в одном регистре.
Единственное формальное ограничение: если экзаменатор требует, чтобы отчет по продажам обязательно строился именно по регистру накопления
ОстаткиНоменклатуры, тогда отдельный регистр сведений использовать нельзя. Если такого жесткого требования нет, предложенный вариант является вполне рабочим.31 октября 2026 в 15:22 в ответ на: Какой должен быть тип измерения «Партия» в регистре и почему? #38939### 2. Нужна ли именно такая структура регистра?
Не обязательно. Структура регистра зависит от того, что в вашей задаче считается партией.
Если партия означает:
> конкретное поступление товара по конкретной приходной накладной,
то измерение
Партияможно сделать типом:1С (Код)1ДокументСсылка.ПриходнаяНакладнаяНапример, структура регистра накопления может быть такой:
Измерения:
— Номенклатура
— Склад
— ПартияРесурсы:
— Количество
— СтоимостьВ этом случае одна приходная накладная является одной партией или, точнее, источником партии.
Например:
| Номенклатура | Склад | Партия | Количество |
|—|—|—|—:|
| Телефон | Основной склад | Приходная накладная № А-001 | 10 |
| Телефон | Основной склад | Приходная накладная № А-015 | 7 |Даже если товар один и тот же, это две разные партии, потому что они поступили по разным документам.
В коде проведения поступления:
1С (Код)1Движение.Партия = Ссылка;где
Ссылкаявляется ссылкой на текущую приходную накладную.Для расходного документа партия должна быть указана той же ссылкой на документ поступления, из которого товар списывается:
1С (Код)1Движение.Партия = СтрокаТаблицы.Партия;где
СтрокаТаблицы.Партиядолжна содержать ссылку на приходную накладную.—
### Когда типа
ДокументСсылка.ПриходнаяНакладнаябудет недостаточноЕсли партия может появляться не только из приходной накладной, например:
— из документа производства;
— из документа оприходования;
— из возврата покупателя;
— из инвентаризации;
— из другого вида поступления,то тип
ДокументСсылка.ПриходнаяНакладнаяокажется слишком узким.В этом случае есть несколько вариантов.
#### Вариант 1. Общий справочник «Партии»
Создается справочник, например
ПартииТоваров.У него могут быть реквизиты:
— Номенклатура;
— ДатаПоступления;
— ДокументПоступления;
— Серия;
— СрокГодности;
— Производитель;
— НомерПартии.Тогда измерение регистра
Партияимеет тип:1С (Код)1СправочникСсылка.ПартииТоваровЭто более универсальный вариант.
Одна запись справочника будет соответствовать одной партии:
1С (Код)1234Партия 000001Номенклатура: ТелефонДата поступления: 15.10.2026Документ поступления: Приходная накладная № А-001А в движении регистра будет храниться ссылка на элемент справочника:
1С (Код)1Движение.Партия = ПартияОбъект.Ссылка;#### Вариант 2. Составной тип ссылки
Можно сделать измерение
Партиясоставного типа:— ДокументСсылка.ПриходнаяНакладная;
— ДокументСсылка.ОприходованиеТоваров;
— ДокументСсылка.ВозвратОтПокупателя.Но это менее удобно. В запросах, отборе и алгоритмах списания придется учитывать несколько типов ссылок. Для учебной или небольшой конфигурации допустимо, но для полноценного учета обычно удобнее отдельный справочник партий.
#### Вариант 3. Использовать серию номенклатуры
Если в конфигурации уже есть сущность «Серия номенклатуры», и именно серия является партией, тогда измерение можно сделать ссылкой на справочник серий.
Это подходит, например, когда партия определяется не документом поступления, а номером партии производителя:
1С (Код)123Товар: МукаСерия: ПАРТИЯ-2026-001Срок годности: 01.03.2027В таком случае партия может приходить несколькими документами, но оставаться одной и той же серией.
—
### 3. Почему
Движение.Партия = Ссылка, а неДвижение.Партия = Дата?Потому что
ПартияиДатаявляются разными понятиями.—
Датаотвечает на вопрос: когда произошло движение.
—Партияотвечает на вопрос: к какому конкретному запасу относится движение.Если в качестве партии использовать дату, вы фактически говорите:
> все товары одного вида, поступившие в одну дату, относятся к одной партии.
Это может быть правильным только в очень простой модели учета.
Например, если товар поступил 15.10.2026, можно было бы записать:
1С (Код)1Движение.Партия = ДатаПоступления;Но тогда у измерения
Партиядолжен быть типДата, а неДокументСсылка.ПриходнаяНакладная.Однако у такого подхода есть проблемы.
#### Проблема 1. В один день могут быть разные поступления
Например:
— приходная накладная № А-001 от 15.10.2026;
— приходная накладная № А-002 от 15.10.2026.Это могут быть разные поставщики, разные цены и разные фактические партии. Если записывать в качестве партии только дату, обе партии сольются:
1С (Код)1Телефон + Основной склад + 15.10.2026В результате система не сможет различить, из какой именно поставки был списан товар.
#### Проблема 2. Дата не содержит информации о документе
По значению
15.10.2026невозможно определить:— поставщика;
— документ поступления;
— закупочную цену;
— количество в конкретной поставке;
— срок годности;
— серию;
— номер партии производителя.Ссылка на документ содержит эту связь напрямую:
1С (Код)1Движение.Партия = Ссылка;Позже можно получить дату партии так:
1С (Код)1ДатаПартии = Движение.Партия.Дата;То есть дата партии не теряется. Она хранится в самом документе поступления.
#### Проблема 3. Дата документа может быть изменена
Если пользователь изменит дату приходной накладной, при использовании даты в качестве идентификатора партия фактически изменится. Это создает проблемы при сопоставлении старых движений.
Ссылка на документ остается тем же идентификатором:
1С (Код)1Приходная накладная № А-001Меняется ее дата, но не сама ссылка.
#### Проблема 4. Для списания нужен конкретный источник
При FIFO, FEFO или ручном выборе партии нужно списывать товар из конкретного источника.
Например, есть остатки:
| Партия | Дата | Количество |
|—|—|—:|
| Приходная накладная № А-001 | 01.10.2026 | 10 |
| Приходная накладная № А-002 | 15.10.2026 | 20 |При продаже 12 штук система должна списать:
— 10 штук из партии № А-001;
— 2 штуки из партии № А-002.Для этого в расходных движениях должны быть указаны именно ссылки на партии:
1С (Код)12345Движение.Партия = Партия1;Движение.Количество = 10;Движение.Партия = Партия2;Движение.Количество = 2;Если в регистре хранится только дата, при совпадении дат или нескольких поступлениях за день определить источник будет невозможно.
—
### Что тогда означает дата движения?
У регистра накопления уже есть системное поле
Период. При проведении документа платформа обычно устанавливает его по дате документа.Например:
1С (Код)123Период: 15.10.2026 10:30:00Регистратор: Приходная накладная № А-001Партия: Приходная накладная № А-001Получается:
—
Периодпоказывает хронологию движения;
—Регистраторпоказывает документ, который сформировал движение;
—Партияпоказывает источник товара.Для приходного документа регистратор и партия могут совпадать:
1С (Код)12Регистратор = Приходная накладная № А-001Партия = Приходная накладная № А-001А для расходного документа они будут разными:
1С (Код)12Регистратор = Реализация товаров № Р-005Партия = Приходная накладная № А-001Это принципиально важно. Документ реализации формирует движение, но источником списываемого товара является приходная накладная.
—
### Рекомендуемый вариант для вашей задачи
Если задача учебная и партия определяется каждой приходной накладной, используйте:
Регистр накопления
ОстаткиТоваров:Измерения:
1С (Код)123НоменклатураСкладПартияТип измерения
Партия:1С (Код)1ДокументСсылка.ПриходнаяНакладнаяРесурсы:
1С (Код)12КоличествоСтоимостьПри поступлении:
1С (Код)12345Движение.Номенклатура = СтрокаТоваров.Номенклатура;Движение.Склад = Склад;Движение.Партия = Ссылка;Движение.Количество = СтрокаТоваров.Количество;Движение.Стоимость = СтрокаТоваров.Стоимость;При списании:
1С (Код)12345Движение.Номенклатура = СтрокаТоваров.Номенклатура;Движение.Склад = Склад;Движение.Партия = СтрокаТоваров.Партия;Движение.Количество = -СтрокаТоваров.Количество;Движение.Стоимость = -СтрокаТоваров.Стоимость;Но это решение корректно только при условии, что:
1. партия всегда создается приходной накладной;
2. одна приходная накладная считается одной партией;
3. внутри одной накладной не требуется разделять товар на несколько партий;
4. других источников поступления нет.Если партия определяется именно датой и в один день допускается только одна поставка товара, тогда можно использовать дату, но это уже другая модель. В таком случае измерение
Партиядолжно иметь типДата, а в движении записывалось бы:1С (Код)1Движение.Партия = ДатаПоступления;Для реального учета обычно надежнее хранить ссылку на документ поступления или отдельный элемент справочника
ПартииТоваров, а дату получать из реквизитов партии или документа.31 октября 2026 в 14:03 в ответ на: Как правильно организовать учет услуг в 1С при ведении товароучета? #38937Да, услуги не должны записываться в регистр остатков товаров. В вашем случае в движениях регистра
ОстаткиНоменклатурынужно обрабатывать только строки, у которых вид номенклатуры равенТовар.Лучше использовать не условие «не услуга», а явное условие:
Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.ТоварТак решение будет корректным, даже если позже появятся другие виды номенклатуры: работы, комплекты, тара и так далее.
## 1. Как настроить номенклатуру
В справочнике
Номенклатурадолжен быть реквизит, например:—
ВидНоменклатуры;
— тип:ПеречислениеСсылка.ВидыНоменклатуры.В перечислении:
—
Товар;
—Услуга.Если в каркасной базе уже есть такой реквизит или перечисление, используйте существующие объекты.
## 2. Регистр остатков
Регистр накопления остатков, например
ОстаткиТоваров, должен содержать только товарные остатки.Рекомендуемая структура:
Измерения:
—
Номенклатура;
—Склад;
—Партия.Ресурсы:
—
Количество;
—Сумма.Партией обычно является документ поступления или ссылка на документ прихода. Например:
1С (Код)1Движение.Партия = Ссылка;Услуга не имеет складского остатка, партии и количества на складе. Поэтому движение услуги в этот регистр создавать нельзя.
## 3. Приходная накладная
В приходной накладной нужно:
1. обработать товарные строки;
2. сформировать приход в регистр остатков;
3. строки услуг в регистр остатков не записывать.Например, запрос для получения товарных строк:
|ВЫБРАТЬ
| ПриходнаяНакладная.Товары.Номенклатура КАК Номенклатура,
| СУММА(ПриходнаяНакладная.Товары.Количество) КАК Количество,
| СУММА(ПриходнаяНакладная.Товары.Сумма) КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
|ГДЕ
| ПриходнаяНакладнаяТовары.Ссылка = &Ссылка
| И ПриходнаяНакладнаяТовары.Номенклатура.ВидНоменклатуры =
| &ВидТовара
|СГРУППИРОВАТЬ ПО
| ПриходнаяНакладнаяТовары.НоменклатураВ запросе выше имя источника лучше указать согласованно. Полный вариант:
|ВЫБРАТЬ
| ПриходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
| СУММА(ПриходнаяНакладнаяТовары.Количество) КАК Количество,
| СУММА(ПриходнаяНакладнаяТовары.Сумма) КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
|ГДЕ
| ПриходнаяНакладнаяТовары.Ссылка = &Ссылка
| И ПриходнаяНакладнаяТовары.Номенклатура.ВидНоменклатуры = &ВидТовара
|СГРУППИРОВАТЬ ПО
| ПриходнаяНакладнаяТовары.НоменклатураУстановка параметров:
1С (Код)12345Запрос.УстановитьПараметр("Ссылка", Ссылка);Запрос.УстановитьПараметр("ВидТовара",Перечисления.ВидыНоменклатуры.Товар);Формирование движений:
1С (Код)1234567891011121314151617Движения.ОстаткиТоваров.Записывать = Истина;РезультатЗапроса = Запрос.Выполнить();Выборка = РезультатЗапроса.Выбрать();Пока Выборка.Следующий() ЦиклДвижение = Движения.ОстаткиТоваров.Добавить();Движение.ВидДвижения = ВидДвиженияНакопления.Приход;Движение.Период = Дата;Движение.Номенклатура = Выборка.Номенклатура;Движение.Склад = Склад;Движение.Партия = Ссылка;Движение.Количество = Выборка.Количество;Движение.Сумма = Выборка.Сумма;КонецЦикла;Строка с услугой просто не попадет в выборку и движения по ней не будет.
## 4. Почему не стоит использовать условие
<> УслугаТехнически такой вариант может работать:
|ГДЕ
| Номенклатура.ВидНоменклатуры <> &ВидУслугиНо для экзамена правильнее использовать:
|И Номенклатура.ВидНоменклатуры = &ВидТовара
Причины:
1. В регистр остатков должны попадать только позиции, являющиеся товаром.
2. Если позже появится видРабота, он ошибочно может попасть в остатки при условии<> Услуга.
3. Явное условие проще проверять и объяснять экзаменатору.
4. Услуги могут иметь другие особенности, не сводящиеся к простому исключению.## 5. Расходная накладная
В расходной накладной нужно разделить обработку строк на два вида.
### Товар
Для товара необходимо:
— контролировать остаток;
— подобрать партии;
— списать количество;
— списать себестоимость;
— сформировать расход в регистр остатков;
— использовать FIFO, LIFO или среднюю стоимость.### Услуга
Для услуги не нужно:
— проверять остаток;
— подбирать партию;
— списывать количество со склада;
— формировать движение Расход в регистр остатков;
— рассчитывать себестоимость как для товара.То есть при обработке табличной части расходной накладной нужно либо сразу выбирать только товары, либо в цикле разделять строки:
1С (Код)1234567891011Если Строка.Номенклатура.ВидНоменклатуры =Перечисления.ВидыНоменклатуры.Товар Тогда// Проверка остатков и списание товараИначеЕсли Строка.Номенклатура.ВидНоменклатуры =Перечисления.ВидыНоменклатуры.Услуга Тогда// В регистр ОстаткиТоваров ничего не записываемКонецЕсли;Для экзамена предпочтительнее сначала получить товарные строки отдельным запросом. Тогда в алгоритм FIFO, LIFO или средней стоимости услуги вообще не попадут.
## 6. Что делать с услугами при продаже
Здесь зависит от того, какие отчеты указаны в полном билете.
Если в задаче нужно построить отчет по продажам, в котором должны отображаться и товары, и услуги, тогда нужен отдельный регистр оборотов, например
Продажи.В него можно записывать:
— товар;
— услугу;
— количество;
— сумму продажи;
— себестоимость;
— прибыль.Структура регистра
Продажиможет быть такой:Измерения:
—
Номенклатура;
— при необходимостиСклад;
— при необходимостиКонтрагент.Ресурсы:
—
Количество;
—Выручка;
—Себестоимость;
—Прибыль.Для товара в расходной накладной:
1С (Код)1ДвижениеПродажи.Себестоимость = СебестоимостьПартии;Для услуги:
1С (Код)1ДвижениеПродажи.Себестоимость = 0;или указывается себестоимость услуги, если она предусмотрена условием задачи.
Прибыль услуги в простом варианте будет:
1С (Код)1Прибыль = Выручка - 0 = ВыручкаНо это допустимо только если в условии нет отдельного учета затрат на услуги.
Пример формирования оборота продаж для услуги:
1С (Код)1234567ДвижениеПродажи = Движения.Продажи.Добавить();ДвижениеПродажи.Период = Дата;ДвижениеПродажи.Номенклатура = Строка.Номенклатура;ДвижениеПродажи.Склад = Склад;ДвижениеПродажи.Количество = Строка.Количество;ДвижениеПродажи.Выручка = Строка.Сумма;ДвижениеПродажи.Себестоимость = 0;Главное, чтобы эта запись не дублировалась движением в
ОстаткиТоваров.## 7. Услуги при поступлении
Фраза:
> Услуги могут быть оказаны и при поступлении товаров
означает, что в табличной части приходной накладной могут находиться одновременно:
| Номенклатура | Вид | Количество | Сумма |
|—|—|—:|—:|
| Товар 1 | Товар | 10 | 1 000 |
| Доставка | Услуга | 1 | 300 |В этом случае:
—
Товар 1записывается приходом вОстаткиТоваров;
—ДоставкавОстаткиТоваровне записывается;
— услуга не создает партию;
— услуга не увеличивает количество товаров;
— услуга не влияет на FIFO, LIFO или среднюю себестоимость, если в условии прямо не сказано включать стоимость доставки в стоимость товаров.Это последний момент особенно важен.
### Если доставка является отдельной услугой
Если доставка просто отдельная строка табличной части, то:
1С (Код)12Товар: 10 шт., 1 000 руб.Доставка: 1 услуга, 300 руб.В остатки товара записывается:
1С (Код)12Количество: 10Сумма: 1 000Сумма доставки в стоимость партии товара не включается.
### Если по условию доставка увеличивает себестоимость товара
Тогда в задаче должно быть явно указано, что транспортные или иные дополнительные расходы распределяются на товары. В таком случае требуется отдельный алгоритм:
1. определить товарные строки;
2. определить стоимость услуг;
3. распределить стоимость услуги между товарами;
4. увеличить сумму партий;
5. записать распределенную сумму в регистр остатков.В приведенной формулировке такого требования нет. Поэтому включать услугу в стоимость партии не нужно.
## 8. Что делать с услугой в приходном документе в регистре продаж
Услуга из приходной накладной не является продажей. Поэтому в регистр
Продажиее тоже обычно не записывают.Итого для приходной накладной:
| Строка | Остатки товаров | Продажи |
|—|—:|—:|
| Товар | Приход | Нет |
| Услуга | Нет | Нет |Для расходной накладной:
| Строка | Остатки товаров | Продажи |
|—|—:|—:|
| Товар | Расход | Оборот продажи |
| Услуга | Нет | Оборот продажи |Это наиболее логичная модель для данного условия.
## 9. Как учитывать услуги в проверке отрицательных остатков
Услуги не должны участвовать в запросе контроля остатков.
Запрос контроля должен отбирать только товарные позиции. Например:
|ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ВТТоварыДокумента
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
| И РасходнаяНакладнаяТовары.Номенклатура.ВидНоменклатуры = &ВидТовара
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.НоменклатураЗатем уже по этим позициям получаются остатки по складу.
Нельзя проверять услуги в остатках, потому что система будет либо:
— получать нулевой остаток услуги;
— ошибочно запрещать проведение документа;
— пытаться списывать несуществующую партию услуги.## 10. Как учитывать услуги при подборе партий
Запрос подбора партий также должен содержать только товары:
|ВЫБРАТЬ
| Остатки.Номенклатура,
| Остатки.Склад,
| Остатки.Партия,
| Остатки.КоличествоОстаток,
| Остатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(
| &Момент,
| Номенклатура В
| (ВЫБРАТЬ
| ВТТоварыДокумента.Номенклатура
| ИЗ
| ВТТоварыДокумента КАК ВТТоварыДокумента)
| И Склад = &Склад
| ) КАК Остатки
|ГДЕ
| Остатки.КоличествоОстаток > 0
|УПОРЯДОЧИТЬ ПО
| Остатки.Номенклатура,
| Остатки.Партия.Момент ВОЗРДля LIFO порядок будет обратным:
|УПОРЯДОЧИТЬ ПО
| Остатки.Номенклатура,
| Остатки.Партия.Момент УБЫВНо в реальном решении сортировку нужно строить по дате и ссылке партии либо по периоду регистра, в зависимости от того, как спроектирован регистр. Важно не включать услуги в таблицу товаров, для которых выполняется подбор партий.
## 11. Как быть при переходе с партийного учета на среднюю стоимость
При переходе с партийного учета на среднюю стоимость услуги не участвуют:
— у услуги нет остатка;
— у услуги нет партии;
— ее не нужно перераспределять между партиями;
— ее не нужно переносить в новый способ учета.Изменение учетной политики касается только товарных остатков и алгоритма списания товаров.
Например, если в регистре есть такие остатки:
| Номенклатура | Партия | Количество | Сумма |
|—|—|—:|—:|
| Товар 1 | Приход №1 | 5 | 500 |
| Товар 1 | Приход №2 | 3 | 360 |При переходе на среднюю стоимость можно продолжить хранить партии, но при списании использовать общую среднюю стоимость:
1С (Код)12Средняя стоимость единицы =Общая сумма остатка / Общее количество остаткаУслуги в этот расчет не попадают.
При обратном переходе со средней стоимости на FIFO или LIFO необходимо, чтобы в остатках сохранялась партийная детализация. Именно поэтому не следует при переходе полностью сворачивать партии в одну запись, если последующий переход на FIFO или LIFO должен быть работоспособным.
## 12. Как построить «Корректировку регистров»
Документ
КорректировкаРегистровдолжен позволять пользователю вручную создавать записи в регистрах накопления.Практический вариант:
В документе создать реквизит:
—
Комментарий, тип Строка неограниченной длины.Создать табличную часть, например
Записи:—
РегистрНакопления, тип Строка или перечисление;
—ВидДвижения;
—Период;
—Номенклатура;
—Склад;
—Партия;
—Количество;
—Сумма.Но если требуется произвольная запись в любой созданный регистр накопления, одна универсальная табличная часть с заранее заданными колонками подходит не для всех регистров. У разных регистров будут разные измерения и ресурсы.
На экзамене обычно делают один из двух вариантов:
1. создать табличные части под конкретные регистры;
2. реализовать универсальный механизм черезМетаданные,НаборЗаписейи значения реквизитов.Для текущей задачи, где фактически есть регистр остатков товаров и, возможно, регистр продаж, практичнее создать отдельные табличные части или универсальную табличную часть с достаточным набором полей.
Важно: корректировка регистра должна создавать именно движения с регистратором
КорректировкаРегистров, а не изменять записи напрямую без регистратора.Услуги через этот документ пользователь теоретически может записать в регистр вручную, если сам этого хочет. Но документ по условию не обязан проверять корректность. Поэтому это не противоречит основному алгоритму: автоматическое проведение приходной и расходной накладной услуги в остатки не записывает, а ручная корректировка оставляет пользователю возможность самостоятельно создать произвольную запись.
## Правильная схема для этой задачи
### Приходная накладная
— товар: приход в
ОстаткиТоваров;
— услуга: движений поОстаткиТоваровнет;
— партия создается только для товара;
— услуга не участвует в методе списания.### Расходная накладная
— товар: проверка остатков, списание по партии, FIFO/LIFO/средняя;
— услуга: нет проверки остатков и расхода поОстаткиТоваров;
— товар и услуга могут записываться в обороты продаж, если нужен отчет по продажам.### Учетная политика
— хранится в периодическом регистре сведений;
— периодичность должна позволять изменение в любой день месяца, напримерВ пределах дняилиПо позиции регистра;
— при проведении выбирается значение, действующее на момент документа;
— услуги на выбор метода списания не влияют.Таким образом, в приходной накладной действительно нужно отбирать только товары:
|И Номенклатура.ВидНоменклатуры = &ВидТовара
А строки услуг либо вообще не участвуют в формировании движений, либо записываются только в отдельный регистр оборотов, если этого требуют отчетность и условие задачи.
31 октября 2026 в 13:55 в ответ на: Как подготовить каркасную базу для выполнения экзамена 1С Специалист? #38935Перед выполнением билета каркасную базу лучше подготовить по стандартному чек-листу. Часть действий делается сразу, а часть только после прочтения конкретного задания. Не нужно заранее создавать регистры, документы и реквизиты «на всякий случай».
## 1. Создайте рабочую информационную базу
Если каркас предоставлен в виде файла выгрузки:
1. Создайте новую информационную базу.
2. Загрузите в нее файл каркасной конфигурации.
3. Откройте базу в режиме Конфигуратор.
4. Сразу сохраните конфигурацию.
5. Если экзамен проходит в одной базе по нескольким задачам, не создавайте отдельные базы для ОУ, БУ, расчетов и БП. Все задачи выполняются в одной конфигурации.Перед началом полезно выполнить:
— Конфигурация → Проверить конфигурацию;
— обновить конфигурацию базы данных;
— запустить базу в режиме «Предприятие» и проверить, что каркас запускается без ошибок.Не переименовывайте существующие объекты каркасной конфигурации без необходимости. В заданиях могут использоваться уже предусмотренные документы, справочники и регистры.
—
## 2. Сразу установите управляемый режим блокировок
Откройте свойства корня конфигурации:
Конфигурация → Открыть конфигурацию → Свойства конфигурации
Найдите свойство:
Режим управления блокировкой данных
Установите:
Управляемый
Это важная настройка для экзамена. В коде проведения документов необходимо будет использовать управляемые блокировки, например через объект
БлокировкаДанных.Если оставить автоматический режим, решение может формально работать, но при проверке могут возникнуть замечания по корректности блокировок и параллельной работе.
—
## 3. Настройте режимы запуска
В конфигураторе откройте:
Сервис → Параметры
На закладке, связанной с запуском приложения, установите возможность запуска:
— управляемого приложения;
— обычного приложения.Обычно удобно иметь оба режима:
— управляемое приложение нужно для проверки управляемых форм и основного интерфейса;
— обычное приложение иногда удобно для работы с консолью запросов, отладки отчетов и быстрой проверки данных.Но ориентируйтесь на правила конкретного экзамена. Если разрешен только определенный режим работы, используйте именно его.
—
## 4. Не начинайте с программирования, сначала прочитайте весь билет
Перед изменением конфигурации полностью прочитайте все части задания:
1. настройка интерфейса;
2. оперативный учет;
3. бухгалтерский учет;
4. сложные периодические расчеты;
5. бизнес-процессы или управляемые формы.Особенно внимательно изучите:
— итоговые отчеты;
— таблицы, которые должны быть выведены в отчетах;
— условия проведения документов;
— необходимость перепроведения старых документов;
— возможность ввода документов задним числом;
— требования к оперативному проведению;
— необходимость контроля остатков;
— требования к блокировкам;
— состав субконто бухгалтерского учета;
— требования к перерасчетам в регистрах расчета.В экзаменационных задачах структура итогового отчета фактически подсказывает, какие измерения, ресурсы и регистры нужно создать.
—
## 5. Сначала настройте подсистемы и интерфейс
В каркасной конфигурации обычно уже имеются справочники, документы и другие объекты, но их нужно включить в подсистемы и командный интерфейс в соответствии с заданием.
Проверьте:
— какие подсистемы должны быть видимыми;
— какие объекты входят в каждую подсистему;
— какие команды должны отображаться пользователю;
— какие документы и отчеты должны быть доступны;
— в каком порядке должны отображаться группы команд;
— какие формы должны открываться по умолчанию.В конфигураторе:
1. Откройте объект конфигурации.
2. На закладке Подсистемы включите его в требуемые подсистемы.
3. Проверьте свойства подсистем.
4. Настройте командный интерфейс подсистем.
5. Убедитесь, что команды видны в управляемом приложении.Не оставляйте в интерфейсе лишние объекты, если в задании описан конкретный состав команд. На экзамене проверяют не только наличие объектов, но и доступность требуемых функций пользователю.
—
## 6. Проверьте существующие объекты каркаса
До создания новых объектов изучите дерево конфигурации. В каркасной базе могут уже находиться:
— справочники;
— документы;
— табличные части;
— перечисления;
— регистры накопления;
— регистры сведений;
— регистры бухгалтерии;
— регистры расчета;
— планы видов характеристик;
— общие модули;
— отчеты;
— обработки;
— бизнес-процессы и задачи;
— подсистемы.Особенно важно проверить, нет ли уже похожих документов или регистров.
Например, в экзаменационной базе могут быть два документа для разных видов учета:
— один документ для оперативного учета;
— другой документ для бухгалтерского учета.Не нужно создавать третий документ, если по смыслу задания уже есть подходящий объект. Также не следует использовать один регистр для разных задач, если это нарушает смысл учета.
—
## 7. Согласуйте имена объектов до их создания
Перед добавлением объектов определите единый стиль имен:
—
Справочник.Номенклатура;
—Документ.ПоступлениеТоваров;
—Документ.РеализацияТоваров;
—РегистрНакопления.ТоварыНаСкладах;
—РегистрСведений.ОтветственныеЛица;
—РегистрБухгалтерии.ХозяйственныйУчет;
—РегистрРасчета.Начисления.Имена должны быть понятными. Не используйте временные названия вроде:
—
Документ1;
—РегистрНакопления2;
—ТаблицаДляОтчета;
—НовыйДокумент.На экзамене это замедляет отладку и затрудняет проверку решения.
—
## 8. Настройте константы, перечисления и планы видов характеристик только по заданию
Если в задаче используются:
— виды операций;
— способы оплаты;
— типы цен;
— виды начислений;
— варианты движения;
— статусы документов;
— виды субконто,лучше создать отдельное перечисление или план видов характеристик, если это соответствует условию.
Не следует заменять отдельный бизнес-смысл строковым реквизитом. Например, вместо реквизита
ВидОперациитипа Строка правильнее использовать перечисление, если набор значений фиксирован.Но не создавайте лишние перечисления заранее. Сначала определите, является ли набор значений закрытым или пользователь должен иметь возможность добавлять новые значения.
—
## 9. Подготовьте структуру оперативного учета
В оперативной задаче заранее нужно понять:
— какие остатки контролируются;
— какие обороты нужно получать;
— в каком разрезе хранятся остатки;
— какие ресурсы должны закрываться при списании;
— можно ли продавать или списывать товар в минус;
— нужно ли учитывать склад;
— нужна ли серия, характеристика, срок годности или партия;
— может ли объект принадлежать только одному владельцу.Общие правила проектирования:
### Регистр накопления остатков
Используется, когда нужно хранить состояние на момент времени:
— остаток товара;
— количество материалов;
— задолженность;
— доступный лимит;
— остаток денежных средств.В регистр обычно входят:
— измерения: номенклатура, склад, организация, характеристика и другие разрезы учета;
— ресурсы: количество, сумма;
— движения Приход и Расход.### Регистр накопления оборотов
Используется, когда нужны только обороты:
— продажи;
— закупки;
— начисленные премии;
— объем отгрузок;
— выручка по периодам.Не добавляйте измерение в регистр только потому, что оно есть в документе. Измерение должно требоваться отчетом или логикой учета.
Если в отчете нужно получить остаток в разрезе склада, склад должен быть измерением регистра. Если склад в отчете не нужен и не участвует в контроле, его добавление может быть ошибкой проектирования.
—
## 10. Подготовьте структуру бухгалтерского учета
Для бухгалтерской задачи проверьте:
1. Создан ли регистр бухгалтерии.
2. Указан ли план счетов.
3. Настроены ли виды субконто.
4. Определены ли признаки учета по субконто.
5. Разрешены ли количественный и валютный учет.
6. Есть ли необходимые ресурсы регистра.
7. Нужно ли получать остатки, обороты или корреспонденцию счетов.Если в отчете требуется:
— остаток по счету, нужен остаточный учет;
— оборот за период, нужен оборотный учет;
— корреспонденция дебета и кредита, должны формироваться проводки с правильными счетами;
— количество по одному разрезу, настройка субконто должна позволять получить этот разрез;
— сумма по другому разрезу, признаки учета должны быть установлены соответственно.Важный момент: не все субконто должны обязательно иметь одинаковые признаки учета.
Например, если количество ведется по номенклатуре, а стоимость требуется получать средней по номенклатуре без детализации по сроку годности, то для субконто «Срок годности» может потребоваться отключение суммового или количественного учета, в зависимости от формулировки задачи.
Настройки признаков учета должны определяться итоговым отчетом и способом расчета, а не делаться автоматически для всех субконто.
—
## 11. Подготовьте регистр расчета
В задаче по сложным периодическим расчетам сначала определите:
— период действия;
— период регистрации;
— базовый период;
— ведущие виды расчета;
— вытесняющие виды расчета;
— базовые виды расчета;
— необходимость сторнирования;
— необходимость перерасчета;
— необходимость получения фактически отработанного времени.В регистре расчета проверьте:
— измерения;
— ресурсы;
— реквизиты;
— периодичность;
— связь с регистром сведений;
— график рабочего времени;
— зависимости по базе;
— ведущие виды расчета;
— вытесняющие виды расчета.Частая ошибка: добавлять в регистр расчета измерение, которое может меняться во времени, хотя оно должно храниться в регистре сведений.
Например, если сотрудник может работать только в одном подразделении, подразделение не обязательно должно быть измерением регистра расчета. Связь сотрудника с подразделением может храниться в периодическом регистре сведений, а при расчете значение выбирается на нужную дату.
Если в задаче сказано, что больничный или командировка вводятся задним числом и должны влиять на ранее рассчитанные начисления, необходимо предусмотреть сторнирование и перерасчеты.
Если нужно получить:
— рабочие дни или часы по графику, это обычно связано со значением базового периода действия;
— фактически отработанные часы, их часто нужно хранить отдельным ресурсом регистра расчета.—
## 12. Не забудьте о запрещенных режимах проведения
В некоторых задачах часть документов нельзя проводить оперативно.
Например:
— документ начисления зарплаты обычно проводят неоперативно;
— документ «Операция» может использоваться только для ручных бухгалтерских операций и не должен проводить оперативный учет;
— документы, влияющие на расчетные данные, могут требовать особого режима проведения.Проверьте у каждого документа:
— свойство Оперативное проведение;
— возможность проведения;
— обработчик проведения;
— контроль даты;
— контроль остатков;
— необходимость записи движений только при проведении.Нельзя бездумно разрешать оперативное проведение всем документам.
—
## 13. Настройте нумерацию и даты документов
Проверьте у документов:
— автоматическую нумерацию;
— периодичность нумерации;
— длину номера;
— контроль уникальности;
— проведение по периоду;
— возможность редактирования даты;
— оперативность проведения.Если в задаче говорится о старых документах, которые могут быть перепроведены неоперативно, проведение должно получать правильный момент времени.
Для оперативного режима часто используется момент времени, зависящий от режима проведения документа. Логика должна учитывать, что:
— при оперативном проведении нельзя работать с будущими данными;
— при неоперативном проведении нужно учитывать весь доступный период;
— старые документы должны корректно перепроводиться.—
## 14. Проверьте общие модули и серверный контекст
Если в задаче используется управляемое приложение, серверная логика должна выполняться в серверном общем модуле.
Проверьте свойства общих модулей:
— сервер;
— вызов сервера;
— клиент;
— внешнее соединение;
— глобальный;
— повторное использование возвращаемых значений.Для процедур проведения документов обычно используются серверные процедуры. Код формы, работающий с элементами формы, нельзя переносить в серверный модуль без адаптации.
Типичная ошибка:
— обращение к
ЭлементыФормыилиЭлементыиз серверной процедуры;
— использование клиентского объекта на сервере;
— вызов серверной логики из общего модуля без установленного флажка «Сервер».—
## 15. Подготовьте консоль запросов
Если в каркасной базе уже есть обработка «Консоль запросов», проверьте, что она запускается. Если ее нет, не обязательно создавать сложную универсальную обработку, если это не требуется условиями экзамена.
Для разработки запросов удобно иметь:
— консоль запросов;
— просмотр временных таблиц;
— вывод результата в таблицу;
— возможность выполнять пакетные запросы;
— просмотр схемы базы данных;
— возможность быстро менять параметры.Запросы для отчетов лучше разрабатывать отдельно от кода проведения:
1. сначала получить движения;
2. проверить остатки и обороты;
3. проверить отбор по периоду;
4. проверить разрезы;
5. только потом переносить запрос в отчет или обработку.Для виртуальных таблиц отборы желательно передавать параметрами виртуальной таблицы, а не накладывать после ее получения. Это важно для производительности и корректного использования итогов.
—
## 16. Проверьте интерфейс пользователя в режиме «Предприятие»
После первичной настройки запустите базу и проверьте:
— видны ли подсистемы;
— доступны ли документы;
— открываются ли формы;
— отображаются ли табличные части;
— работают ли команды создания;
— выводятся ли отчеты;
— нет ли лишних команд;
— корректно ли отображаются формы в управляемом приложении.Для каждой задачи нужно проверить не только конфигуратор, но и реальный пользовательский сценарий:
1. создать справочники;
2. создать документ;
3. провести документ;
4. открыть движения;
5. сформировать отчет;
6. изменить документ;
7. перепровести его;
8. проверить результат.—
## 17. Выполните минимальные тестовые данные
До полноценной отладки создайте небольшой набор данных:
— один склад;
— несколько единиц номенклатуры;
— одну организацию;
— одного контрагента;
— один документ поступления;
— один документ списания или реализации;
— один пример корректировки;
— один пример документа задним числом.Для бухгалтерского учета добавьте несколько операций, чтобы проверить:
— дебет и кредит;
— количество;
— сумму;
— остатки;
— обороты;
— аналитику;
— отчет по корреспонденциям.Для расчетов создайте:
— одного сотрудника;
— один график;
— один документ начисления;
— один документ отсутствия или изменения начисления;
— пример перерасчета.Тестовые данные должны быть минимальными. Большой объем данных только замедляет проверку.
—
## 18. Что обычно нужно сделать сразу
Практический порядок действий в начале экзамена:
1. Загрузить каркас.
2. Открыть конфигуратор.
3. Проверить, что база запускается.
4. Установить управляемый режим блокировок.
5. Включить необходимые режимы запуска.
6. Прочитать весь билет.
7. Изучить существующие объекты каркаса.
8. Настроить подсистемы и командный интерфейс.
9. Создать недостающие перечисления, планы видов характеристик и общие объекты.
10. Настроить структуру регистров.
11. Настроить документы и табличные части.
12. Реализовать проведение.
13. Реализовать отчеты.
14. Настроить расчеты или бизнес-процессы.
15. Заполнить минимальные тестовые данные.
16. Проверить каждый сценарий в режиме «Предприятие».
17. Выполнить проверку конфигурации и обновление конфигурации базы данных.
18. Повторно проверить базу после перезапуска.—
## 19. Что не стоит делать заранее
Не рекомендуется до чтения билета:
— создавать произвольные регистры;
— добавлять все возможные измерения;
— создавать универсальные общие модули;
— программировать обработчики всех форм;
— настраивать все виды субконто одинаково;
— включать оперативное проведение у всех документов;
— добавлять склад, организацию и подразделение во все регистры;
— делать один общий регистр для оперативного, бухгалтерского и расчетного учета;
— копировать код из другого решения без проверки условий задачи;
— строить отчет непосредственно по реквизитам документов, если по условию требуется учет через регистр;
— оставлять в конфигурации экспериментальные объекты и тестовые формы.Главный принцип при подготовке каркасной базы: сначала определить модель данных по отчетам и движениям, затем создавать объекты и писать код. Каркас нужно привести в рабочее состояние, но не превращать в заранее заготовленное решение конкретного билета.
Рекомендую перед экзаменом сверить этот порядок с актуальными требованиями 1С:
— Рекомендую посмотреть здесь: https://1c.ru/spec/texts/prepare_exam.htm
— Рекомендую посмотреть здесь: https://1c.ru/spec/questions.htm30 октября 2026 в 15:35 в ответ на: Как программно изменить оформление строк табличной части в 1С:СКАТ Профессионал? #38933У вас уже найден весь необходимый механизм. Внешняя обработка должна сделать то же самое, что делает штатная процедура
ВыполнитьДействие, только вместо коллекции выделенных строк формы списка использовать строки своей табличной части.Предположим:
— табличная часть внешней обработки называется
Номенклатура;
— колонка табличной части также называетсяНоменклатура;
— колонка имеет типСправочникСсылка.Номенклатура;
— кнопка находится в обычной форме внешней обработки.## Код кнопки
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081Процедура УстановитьОформление(Кнопка)Если Объект.Номенклатура.Количество() = 0 ТогдаПредупреждение("В табличной части нет номенклатуры.", 30);Возврат;КонецЕсли;// Открываем штатную форму СКАТ для выбора оформленияФормаОформления = ПолучитьОбщуюФорму("ФормаНастройкаОформления",ЭтаФорма);ФормаОформления.ЭлементыФормы.НадписьСсылкаНаОбъект.Заголовок ="Групповая настройка оформления";// В форме пользователь выбирает цвет фона,// цвет текста, шрифт и другие параметрыНастройкаОформление = ФормаОформления.ОткрытьМодально();// Если пользователь закрыл форму крестиком или отменил действиеЕсли НастройкаОформление = Неопределено ТогдаВозврат;КонецЕсли;// Проверяем, включен ли хотя бы один параметр оформленияЕстьОформление = Ложь;Для Каждого СтрокаНастройки Из НастройкаОформление ЦиклЕсли СтрокаНастройки.Использование ТогдаЕстьОформление = Истина;Прервать;КонецЕсли;КонецЦикла;// Сохраняем одинаковое оформление для всех выбранных элементовХранилищеОформления = Неопределено;Если ЕстьОформление ТогдаХранилищеОформления =Новый ХранилищеЗначения(НастройкаОформление);КонецЕсли;КоличествоЗаписано = 0;Для Каждого СтрокаТабличнойЧасти Из Объект.Номенклатура ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) ТогдаПродолжить;КонецЕсли;НоменклатураОбъект =СтрокаТабличнойЧасти.Номенклатура.ПолучитьОбъект();Если ЕстьОформление ТогдаНоменклатураОбъект.Оформление = ХранилищеОформления;Иначе// Если в форме оформления ничего не используется,// снимаем ранее установленное оформлениеНоменклатураОбъект.Оформление = Неопределено;КонецЕсли;НоменклатураОбъект.Записать();КоличествоЗаписано = КоличествоЗаписано + 1;КонецЦикла;Если КоличествоЗаписано = 0 ТогдаПредупреждение("Не заполнена ни одна номенклатура.", 30);Возврат;КонецЕсли;Сообщить("Оформление установлено для элементов: "+ Строка(КоличествоЗаписано));ОбновитьФормуСписка();КонецПроцедурыГлавное отличие от штатного кода:
1С (Код)1ВыделенныеСтроки = Форма.ЭлементыФормы.Список.ВыделенныеСтроки;у вас будет:
1С (Код)1Для Каждого СтрокаТабличнойЧасти Из Объект.Номенклатура ЦиклА дальше выполняется такая же запись:
1С (Код)1234НоменклатураОбъект.Оформление =Новый ХранилищеЗначения(НастройкаОформление);НоменклатураОбъект.Записать();## Если табличная часть называется не
НоменклатураНапример, табличная часть внешней обработки называется
Товары, а колонка называетсяНоменклатура. Тогда цикл будет таким:1С (Код)123456789101112131415161718Для Каждого СтрокаТабличнойЧасти Из Объект.Товары ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) ТогдаПродолжить;КонецЕсли;НоменклатураОбъект =СтрокаТабличнойЧасти.Номенклатура.ПолучитьОбъект();Если ЕстьОформление ТогдаНоменклатураОбъект.Оформление = ХранилищеОформления;ИначеНоменклатураОбъект.Оформление = Неопределено;КонецЕсли;НоменклатураОбъект.Записать();КонецЦикла;Замените
Объект.Товарына фактическое имя табличной части.## Если реквизит табличной части имеет другое имя
Например, колонка называется
Товар, тогда нужно использовать:1С (Код)123456789101112131415Для Каждого СтрокаТабличнойЧасти Из Объект.Номенклатура ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТабличнойЧасти.Товар) ТогдаПродолжить;КонецЕсли;НоменклатураОбъект =СтрокаТабличнойЧасти.Товар.ПолучитьОбъект();НоменклатураОбъект.Оформление =Новый ХранилищеЗначения(НастройкаОформление);НоменклатураОбъект.Записать();КонецЦикла;## Обновление формы списка
Цвет записывается в справочник, но уже открытая форма списка может не перерисовать строки автоматически. Поэтому после записи нужно обновить список.
Добавьте в обработку процедуру:
1С (Код)1234567891011121314151617181920212223Процедура ОбновитьФормуСписка()Если ВладелецФормы = Неопределено ТогдаВозврат;КонецЕсли;ПопыткаВладелецФормы.ЭлементыФормы.Список.Обновить();Исключение// В конкретной конфигурации табличное поле// может называться тпСписокПопыткаВладелецФормы.ЭлементыФормы.тпСписок.Обновить();Исключение// Список будет обновлен после повторного открытия формыКонецПопытки;КонецПопытки;КонецПроцедурыВ вашем случае по обработчику:
1С (Код)1Процедура тпСписок_ПриПолученииДанных(Элемент, ОформленияСтрок)табличное поле формы списка, скорее всего, называется
тпСписок. Тогда основной вариант должен быть таким:1С (Код)1ВладелецФормы.ЭлементыФормы.тпСписок.Обновить();## Как открыть обработку с владельцем формы списка
Чтобы
ВладелецФормыбыл заполнен, обработку нужно открывать из формы списка примерно так:1С (Код)123456ФормаОбработки = ПолучитьФорму("ВнешняяОбработка.ИмяОбработки.Форма.Форма",ФормаСписка);ФормаОбработки.ВладелецФормы = ФормаСписка;ФормаОбработки.Открыть();Если обработка открывается обычным способом из меню, то владелец может быть не установлен. В этом случае запись оформления все равно выполнится, но текущий список может потребовать закрытия и повторного открытия.
## Если обработка открывается через штатную форму выбора
Можно передать владельца так:
1С (Код)123456ФормаОбработки = ПолучитьФорму("ВнешняяОбработка.ИмяОбработки.Форма.Форма",Форма);ФормаОбработки.ВладелецФормы = Форма;ФормаОбработки.Открыть();Где
Формаэто форма списка номенклатуры.## Снятие оформления у нескольких номенклатур
Если пользователь в форме
ФормаНастройкаОформленияотключит все флагиИспользование, переменная:1С (Код)1ЕстьОформлениеостанется равной
Ложь.Тогда код:
1С (Код)1НоменклатураОбъект.Оформление = Неопределено;удалит ранее сохраненный цвет у всех строк табличной части.
То есть одна кнопка будет выполнять оба действия:
— если выбрали цвет, шрифт или цвет текста, оформление устанавливается;
— если все настройки отключили, оформление удаляется.## Почему цвет будет отображаться в форме списка
В форме списка СКАТ уже есть обработчик:
1С (Код)12345678910111213141516171819202122232425Процедура тпСписок_ПриПолученииДанных(Элемент, ОформленияСтрок)Для каждого ОформлениеСтроки Из ОформленияСтрок ЦиклДанныеОформления =ОформлениеСтроки.ДанныеСтроки.Ссылка.Оформление;Если ЗначениеЗаполнено(ДанныеОформления) ТогдаОформление = ДанныеОформления.Получить();Если Не Оформление = Неопределено ТогдаЕсли Оформление.ЦветФона.Использование ТогдаОформлениеСтроки.ЦветФона =Оформление.ЦветФона.Значение;КонецЕсли;КонецЕсли;КонецЕсли;КонецЦикла;КонецПроцедурыПоэтому во внешней обработке не нужно напрямую работать с
ОформлениеСтроки. Нужно только записать настройку в:1С (Код)1Номенклатура.Оформление## Если нужно не открывать форму выбора, а сразу задавать фиксированный цвет
Тогда можно создать оформление напрямую, но это зависит от внутреннего типа, который возвращает общая форма
ФормаНастройкаОформления. В СКАТ безопаснее использовать штатную форму, потому что она создает объект с правильной структурой:1С (Код)12345ФормаОформления = ПолучитьОбщуюФорму("ФормаНастройкаОформления",ЭтаФорма);НастройкаОформление = ФормаОформления.ОткрытьМодально();Полученный результат можно без изменений записать в
ХранилищеЗначения:1С (Код)12НоменклатураОбъект.Оформление =Новый ХранилищеЗначения(НастройкаОформление);Для вашей задачи основной рабочий код будет именно таким:
1С (Код)123456789101112131415Для Каждого СтрокаТабличнойЧасти Из Объект.Номенклатура ЦиклЕсли Не ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) ТогдаПродолжить;КонецЕсли;НоменклатураОбъект =СтрокаТабличнойЧасти.Номенклатура.ПолучитьОбъект();НоменклатураОбъект.Оформление =Новый ХранилищеЗначения(НастройкаОформление);НоменклатураОбъект.Записать();КонецЦикла;Именно этот цикл нужно использовать вместо цикла по
ВыделенныеСтроки.30 октября 2026 в 15:17 в ответ на: Как изменить цвет фона для элемента справочника в 1С через внешнюю обработку? #38931Теперь причина найдена. В СКАТ оформление хранится не в отдельном регистре, а непосредственно в реквизите справочника:
1С (Код)1Номенклатура.ОформлениеТип этого реквизита, судя по коду, вероятно:
1С (Код)1ХранилищеЗначенияФорма списка при выводе строки читает это хранилище:
1С (Код)1ДанныеОформления = ОформлениеСтроки.ДанныеСтроки.Ссылка.Оформление;Затем получает из него настройки:
1С (Код)1Оформление = ДанныеОформления.Получить();И устанавливает цвет:
1С (Код)1ОформлениеСтроки.ЦветФона = Оформление.ЦветФона.Значение;Поэтому во внешней обработке нужно:
1. выбрать номенклатуру;
2. открыть штатную общую формуФормаНастройкаОформления;
3. выбрать цвет;
4. получить возвращенную настройку;
5. записать ее вНоменклатура.Оформление.## Код кнопки внешней обработки
Для обычной формы внешней обработки добавьте обработчик кнопки:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152Процедура УстановитьОформление(Элемент)Если Не ЗначениеЗаполнено(Номенклатура) ТогдаПредупреждение("Не выбрана номенклатура.");Возврат;КонецЕсли;// Открываем штатную форму настройки оформления СКАТФормаОформления = ПолучитьОбщуюФорму("ФормаНастройкаОформления",ЭтаФорма);ФормаОформления.ЭлементыФормы.НадписьСсылкаНаОбъект.Заголовок ="Настройка оформления номенклатуры";// Форма возвращает коллекцию настроек после нажатия ОКНастройкаОформление = ФормаОформления.ОткрытьМодально();// Пользователь закрыл форму без подтвержденияЕсли НастройкаОформление = Неопределено ТогдаВозврат;КонецЕсли;ЕстьОформление = Ложь;Для Каждого СтрокаНастройки Из НастройкаОформление ЦиклЕсли СтрокаНастройки.Использование ТогдаЕстьОформление = Истина;Прервать;КонецЕсли;КонецЦикла;// Получаем объект справочникаОбъектНоменклатуры = Номенклатура.ПолучитьОбъект();Если ЕстьОформление ТогдаОбъектНоменклатуры.Оформление =Новый ХранилищеЗначения(НастройкаОформление);Иначе// Сброс оформленияОбъектНоменклатуры.Оформление = Неопределено;КонецЕсли;ОбъектНоменклатуры.Записать();Сообщить("Оформление номенклатуры сохранено.");ОбновитьФормуСписка();КонецПроцедурыЗдесь:
—
Номенклатураэто реквизит внешней обработки типаСправочникСсылка.Номенклатура;
—ФормаНастройкаОформленияэто общая форма СКАТ;
—НастройкаОформлениеэто коллекция, которую возвращает форма;
—Оформлениеэто реквизит элемента справочника;
—ХранилищеЗначенияиспользуется точно так же, как в найденной процедуреВыполнитьДействие.## Обновление открытой формы списка
Если внешняя обработка открыта из формы списка и форма списка назначена владельцем обработки, можно добавить процедуру:
1С (Код)12345678910111213Процедура ОбновитьФормуСписка()Если ВладелецФормы = Неопределено ТогдаВозврат;КонецЕсли;ПопыткаВладелецФормы.ЭлементыФормы.Список.Обновить();Исключение// Если обработка запущена не из формы спискаКонецПопытки;КонецПроцедурыНо это сработает только если:
1. внешняя обработка была открыта с владельцем;
2. у формы списка табличное поле действительно называетсяСписок.Если элемент формы списка называется, например,
тпСписок, тогда нужно использовать:1С (Код)1ВладелецФормы.ЭлементыФормы.тпСписок.Обновить();В вашем коде обработчик формы списка называется:
1С (Код)1Процедура тпСписок_ПриПолученииДанных(Элемент, ОформленияСтрок)Это означает, что табличное поле, скорее всего, называется:
1С (Код)1тпСписокПоэтому процедура обновления, вероятно, должна быть такой:
1С (Код)12345678910111213Процедура ОбновитьФормуСписка()Если ВладелецФормы = Неопределено ТогдаВозврат;КонецЕсли;ПопыткаВладелецФормы.ЭлементыФормы.тпСписок.Обновить();Исключение// Внешняя обработка могла быть открыта без владельцаКонецПопытки;КонецПроцедурыЕсли после вызова
Обновить()цвет сразу не появился, можно попробовать переустановить отбор или перезаполнить список, поскольку обработчикПриПолученииДанныхвызывается при повторном получении строк.## Если внешняя обработка открывается из формы списка
Чтобы у обработки был владелец, ее нужно открывать примерно так:
1С (Код)1234567ФормаОбработки = ПолучитьФорму("ВнешняяОбработка.ВашаОбработка.Форма.Форма",ФормаСписка);ФормаОбработки.ВладелецФормы = ФормаСписка;ФормаОбработки.Номенклатура = ВыбраннаяНоменклатура;ФормаОбработки.Открыть();В обычной конфигурации имя внешней обработки и формы нужно заменить на фактические.
Если обработка открывается вручную из меню, владельца формы может не быть. В этом случае оформление все равно сохранится в справочнике, но открытый список обновится только после его закрытия и повторного открытия либо ручного обновления.
## Вариант, когда номенклатура передается при открытии обработки
Если реквизит
Номенклатурадолжен заполняться автоматически, в обычной форме внешней обработки можно использовать процедуру открытия:1С (Код)123456789Процедура ПриОткрытии()Если ЗначениеЗаполнено(ПараметрыОткрытия) ТогдаЕсли ТипЗнч(ПараметрыОткрытия) = Тип("СправочникСсылка.Номенклатура") ТогдаНоменклатура = ПараметрыОткрытия;КонецЕсли;КонецЕсли;КонецПроцедурыНо конкретный способ передачи параметра зависит от того, как именно в СКАТ открываются внешние обработки.
## Если нужно всегда устанавливать один фиксированный цвет
Если не нужно показывать форму выбора цвета, а, например, кнопка всегда должна делать желтый фон, штатную форму можно не открывать. Однако в этом случае нужно создать объект настройки правильной структуры.
Структуру лучше один раз получить штатным способом через
ФормаНастройкаОформления, потому что точный тип возвращаемого значения может зависеть от СКАТ. Вариант с открытием формы надежнее и полностью повторяет штатную обработку F10.Если нужно снять цвет, достаточно записать:
1С (Код)123ОбъектНоменклатуры = Номенклатура.ПолучитьОбъект();ОбъектНоменклатуры.Оформление = Неопределено;ОбъектНоменклатуры.Записать();После этого обработчик формы списка:
1С (Код)1Если ЗначениеЗаполнено(ДанныеОформления) Тогдане будет применять оформление к строке.
## Важное замечание по вашему найденному коду
В штатной процедуре:
1С (Код)12345678Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки ЦиклтекОбъект = СтрокаТабличнойЧасти.Ссылка.ПолучитьОбъект();текОбъект.Оформление =?(ЕстьОформление,Новый ХранилищеЗначения(НастройкаОформление),Неопределено);текОбъект.Записать();КонецЦикла;записывается одна и та же настройка оформления для каждой выделенной номенклатуры.
В вашей внешней обработке эта часть заменяется на работу с одним реквизитом:
1С (Код)1234ОбъектНоменклатуры = Номенклатура.ПолучитьОбъект();ОбъектНоменклатуры.Оформление =Новый ХранилищеЗначения(НастройкаОформление);ОбъектНоменклатуры.Записать();То есть вам не нужно искать регистр или программно менять
ОформлениеСтроки. Это уже делает форма списка. Внешняя обработка должна только правильно записать реквизитОформлениесправочника.30 октября 2026 в 14:49 в ответ на: Как программно изменить цвет фона для элемента справочника в 1С СКАТ-Профессиона #38929Да, программно это сделать можно, но важный момент: цвет строки в списке, скорее всего, не является свойством самого элемента справочника. В «СКАТ-Профессионал» это обычно реализовано отдельным механизмом: обработка по F10 записывает для номенклатуры цвет в регистр сведений или в специальное хранилище, а форма списка при открытии читает эти данные и оформляет строку.
Из внешней обработки нужно не пытаться напрямую изменить цвет открытого списка, а записать цвет тем же способом, которым это делает штатная команда F10.
## 1. Сначала найдите, куда записывается цвет
В конфигураторе выполните глобальный поиск по конфигурации по словам:
1С (Код)1234567ЦветФонОформлениеЦветСтрокиЦветФонаНоменклатураF10Ищите:
— обработчики формы списка номенклатуры;
— команды или процедуры, связанные с F10;
— регистр сведений с названиями вроде:
—ЦветаНоменклатуры;
—ОформлениеНоменклатуры;
—НастройкиНоменклатуры;
—ДополнительныеНастройки;
— общие модули с экспортными процедурами;
— форму, которая открывается после нажатия F10.Если конфигурация на поддержке и исходный код закрыт, можно посмотреть форму через отладчик и поставить точку останова на обработчик команды F10.
## 2. Как понять, что делает F10
Откройте конфигуратор:
1. Найдите форму списка справочника
Номенклатура.
2. Откройте модуль формы.
3. Посмотрите обработчики:
—ОбработкаРасшифровки;
—ОбработкаОжидания;
—Нажатие;
—НачалоВыбора;
—ОбработкаНажатия;
— обработчики команд формы.
4. Найдите код, который открывает форму выбора цвета или выполняет запись.Обычно внутри будет что-то похожее на:
1С (Код)12ФормаЦвета = Обработки.ВыборЦвета.ПолучитьФорму();ФормаЦвета.ОткрытьМодально();или:
1С (Код)1ОбщегоНазначения.УстановитьЦветНоменклатуры(Номенклатура, Цвет);или запись в регистр:
1С (Код)123456789101112НаборЗаписей = РегистрыСведений.ЦветаНоменклатуры.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);НаборЗаписей.Прочитать();НаборЗаписей.Очистить();Запись = НаборЗаписей.Добавить();Запись.Номенклатура = Номенклатура;Запись.Цвет = Цвет;НаборЗаписей.Записать();Точное имя регистра и его измерений зависит от конфигурации «СКАТ-Профессионал».
## 3. Если цвет хранится в регистре сведений
Допустим, в конфигурации найден регистр сведений
ЦветаНоменклатуры, у которого есть измерениеНоменклатураи ресурсЦвет.Тогда обработчик кнопки во внешней обработке может выглядеть так:
1С (Код)123456789101112131415161718192021222324Процедура УстановитьЦвет(Элемент)Если Не ЗначениеЗаполнено(Номенклатура) ТогдаПредупреждение("Не выбрана номенклатура.");Возврат;КонецЕсли;Цвет = Новый Цвет(255, 255, 0);НаборЗаписей = РегистрыСведений.ЦветаНоменклатуры.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);НаборЗаписей.Прочитать();НаборЗаписей.Очистить();Запись = НаборЗаписей.Добавить();Запись.Номенклатура = Номенклатура;Запись.Цвет = Цвет;НаборЗаписей.Записать();Сообщить("Цвет установлен.");КонецПроцедурыНо этот пример заработает только если:
— регистр действительно называется
ЦветаНоменклатуры;
— измерение называетсяНоменклатура;
— ресурс называетсяЦвет;
— тип поля цвета действительноЦвет.Внешняя обработка может обращаться к объектам конфигурации по именам, если у пользователя есть соответствующие права.
## 4. Если цвет хранится в регистре сведений с периодичностью
Возможен вариант, когда регистр имеет периодичность и измерения, например:
—
Пользователь;
—Номенклатура;а ресурс:
—
ЦветФона.Тогда запись будет примерно такой:
1С (Код)123456789101112131415161718192021222324Процедура УстановитьЦвет(Элемент)Если Не ЗначениеЗаполнено(Номенклатура) ТогдаПредупреждение("Не выбрана номенклатура.");Возврат;КонецЕсли;НаборЗаписей = РегистрыСведений.ОформлениеНоменклатуры.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);НаборЗаписей.Отбор.Пользователь.Установить(ПользовательИнформационнойБазы);НаборЗаписей.Прочитать();НаборЗаписей.Очистить();Запись = НаборЗаписей.Добавить();Запись.Период = ТекущаяДата();Запись.Номенклатура = Номенклатура;Запись.Пользователь = ПользовательИнформационнойБазы;Запись.ЦветФона = Новый Цвет(255, 255, 0);НаборЗаписей.Записать();КонецПроцедурыЕсли цвет в СКАТ устанавливается отдельно для каждого пользователя, без измерения
Пользовательзаписи быть не должно. Если цвет общий для всех пользователей, наоборот, пользователь в запись добавлять нельзя.## 5. Если штатная функция находится в общем модуле
Это лучший вариант. Например, в конфигурации может существовать экспортная процедура:
1С (Код)1ОбщегоНазначения.УстановитьЦветНоменклатуры(Номенклатура, Цвет);Тогда внешняя обработка должна вызывать ее:
1С (Код)1234567891011121314Процедура УстановитьЦвет(Элемент)Если Не ЗначениеЗаполнено(Номенклатура) ТогдаПредупреждение("Не выбрана номенклатура.");Возврат;КонецЕсли;Цвет = Новый Цвет(255, 255, 0);ОбщегоНазначения.УстановитьЦветНоменклатуры(Номенклатура, Цвет);Сообщить("Цвет установлен.");КонецПроцедурыНо вызвать можно только процедуру, объявленную с ключевым словом
Экспорт:1С (Код)1Процедура УстановитьЦветНоменклатуры(Номенклатура, Цвет) ЭкспортПроцедуру модуля формы напрямую из внешней обработки вызвать нельзя. Например, такой код сработает только внутри самой формы списка:
1С (Код)1ФормаСписка.ИзменитьЦветСтроки();Внешняя обработка не имеет доступа к закрытым процедурам формы, если форма специально не передала их наружу.
## 6. Если в форме списка используется обработчик оформления строки
В обычных формах цвет обычно устанавливается кодом самой формы списка. Например, в обработчике оформления строки может быть логика вида:
1С (Код)12345678910111213Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)Если ЗначениеЗаполнено(ДанныеСтроки.Номенклатура) ТогдаЦветСтроки = ПолучитьЦветНоменклатуры(ДанныеСтроки.Номенклатура);Если ЗначениеЗаполнено(ЦветСтроки) ТогдаОформлениеСтроки.ЦветФона = ЦветСтроки;КонецЕсли;КонецЕсли;КонецПроцедурыТогда сама внешняя обработка должна только записать цвет в нужное хранилище. После этого список нужно обновить.
Если форма списка уже открыта, после записи можно попробовать обновить ее через команду обновления списка. В обычной форме это может быть:
1С (Код)1ЭлементыФормы.НоменклатураСписок.Обновить();или:
1С (Код)1ЭлементыФормы.Список.Обновить();Но это выполняется в модуле самой формы списка. Из внешней обработки уже открытая форма списка обычно недоступна напрямую.
## 7. Важное ограничение обычных форм
В обычной форме нельзя надежно изменить фон произвольной строки справочника из внешней обработки простым кодом вроде:
1С (Код)1ЭлементыФормы.Список.ЦветФона = Новый Цвет(255, 255, 0);Это изменит оформление элемента формы целиком либо вообще не сработает, но не установит цвет конкретной строки справочника.
Для окраски именно одной строки должны выполняться два условия:
1. форма списка должна поддерживать обработчик оформления строки;
2. обработчик должен получать цвет из регистра, реквизита или другого хранилища.Поэтому нужно повторить штатный механизм F10, а не пытаться красить строку непосредственно из внешней обработки.
## 8. Как быстро проверить правильный способ
Поставьте в отладчике точку останова и выполните штатную операцию:
1. Откройте список номенклатуры.
2. Выделите элемент.
3. НажмитеF10.
4. Установите цвет.
5. Подтвердите.
6. Посмотрите, какая процедура сработала.
7. Найдите в ней:
— имя регистра;
— имя общего модуля;
— процедуру записи;
— параметры процедуры.Если после установки цвета в списке появляется новая запись, то почти наверняка используется регистр сведений. Если записей в регистрах нет, возможно, цвет хранится:
— в настройках пользователя;
— в хранилище настроек формы;
— в таблице значений формы;
— в дополнительном реквизите;
— в отдельной таблице самой конфигурации.Для внешней обработки наиболее правильная схема будет такой:
1С (Код)12345678910111213141516Процедура КнопкаУстановитьЦвет(Элемент)Если Не ЗначениеЗаполнено(Номенклатура) ТогдаПредупреждение("Не выбрана номенклатура.");Возврат;КонецЕсли;// Здесь нужно вызвать штатную экспортную процедуру СКАТ// либо записать данные в найденный регистр сведений.Цвет = Новый Цвет(255, 255, 0);// Пример, имя процедуры нужно заменить на фактическое:// СКАТОбщиеМодули.УстановитьЦветНоменклатуры(Номенклатура, Цвет);КонецПроцедурыЕсли в конфигурации нет экспортной процедуры, переносите в обработку именно код записи из обработчика F10, заменив только источник номенклатуры на реквизит вашей обработки
Номенклатура.30 октября 2026 в 10:55 в ответ на: Каков риск потери данных при добавлении реквизита типа «Строка» в 1С через расши #38927Само по себе добавление реквизита типа Строка через расширение не создает повышенного риска потери данных. Риск связан не с типом «Строка», а с дальнейшими действиями с расширением: его удалением, переименованием, изменением типа или обновлением основной конфигурации.
## Когда данные сохраняются
Данные обычно сохраняются при следующих условиях:
— расширение остается установленным;
— реквизит не переименовывается;
— не меняется его тип;
— не удаляется сам реквизит;
— при обновлении расширения сохраняется тот же объект и тот же реквизит;
— основная конфигурация не удаляет объект, к которому добавлен реквизит;
— база данных корректно обновляется с резервной копией.Например, в расширение добавлен реквизит:
1С (Код)12Документ.ЗаказКлиента.ДополнительныйКомментарийТип: Строка, 500Если в следующей версии расширения этот же реквизит остается
ДополнительныйКомментарийс тем же типом, значения должны сохраниться.## Основные опасные ситуации
### 1. Удаление реквизита из расширения
Если удалить реквизит из расширения, платформа может удалить соответствующее поле структуры данных при обновлении конфигурации базы.
После этого значения могут быть безвозвратно потеряны.
Особенно опасна последовательность:
1. в реквизит записали данные;
2. расширение удалили или отключили с удалением структуры данных;
3. базу обновили;
4. расширение установили снова.После повторной установки это будет уже новый пустой реквизит. Старые значения автоматически не восстановятся.
Само отключение расширения не всегда означает немедленное удаление данных. Но рассчитывать на сохранность после удаления расширения или реструктуризации нельзя.
### 2. Переименование реквизита
Если вместо переименования средствами конфигуратора удалить старый реквизит и добавить новый, платформа может воспринять это как два разных реквизита:
1С (Код)12СтарыйКомментарийНовыйКомментарийВ результате старые данные останутся в старом поле либо будут удалены, а новый реквизит будет пустым.
Особенно это актуально при изменении имени реквизита в расширении вручную. Для платформы важно не только отображаемое имя и синоним, но и внутренний идентификатор объекта метаданных.
Если нужно переименовать реквизит, безопаснее:
1. создать новую версию расширения;
2. временно сохранить старый реквизит;
3. перенести данные в новый реквизит обработкой;
4. проверить результат;
5. только потом удалять старый реквизит отдельным этапом.### 3. Изменение типа реквизита
Например:
1С (Код)1Строка 100изменяется на:
1С (Код)1Число 15.2или:
1С (Код)1ДатаТакое изменение может привести к:
— ошибке реструктуризации;
— невозможности преобразовать старые значения;
— частичной потере данных;
— необходимости ручной конвертации.Надежный вариант при изменении типа:
1. добавить новый реквизит с новым типом;
2. перенести данные программно с проверкой;
3. проверить количество и содержимое перенесенных значений;
4. оставить старый реквизит на период контроля;
5. удалить старый реквизит только после резервного копирования.### 4. Уменьшение длины строки
Увеличение длины строки обычно безопасно:
1С (Код)1Строка 100 -> Строка 500Уменьшение длины опасно:
1С (Код)1Строка 500 -> Строка 100Если в базе уже есть значения длиннее 100 символов, обновление структуры может завершиться ошибкой или потребовать обработки данных.
Перед уменьшением длины нужно проверить максимальную длину значений и заранее обрезать или перенести их в безопасный архивный реквизит.
### 5. Изменение основной конфигурации
Если реквизит добавлен к заимствованному объекту, а при обновлении основной конфигурации этот объект:
— удален;
— заменен другим объектом;
— изменен таким образом, что расширение больше не может его применить;
— перемещен или переименован с потерей связи,то реквизит расширения может стать недоступным.
В этом случае возможны ошибки применения расширения и проблемы со структурой таблицы.
### 6. Несовместимость при отключении расширения
Если расширение добавляет реквизит к объекту основной конфигурации, оно изменяет структуру данных. При отключении расширения платформа может выдать ошибку вида:
> Структура таблицы несовместима с текущими расширениями конфигурации
Это означает, что основная конфигурация и расширение по-разному ожидают структуру таблицы.
В такой ситуации нельзя просто многократно включать и отключать расширение без проверки. Сначала нужно определить, какие объекты и реквизиты изменяют структуру данных.
## Что происходит при обновлении самого расширения
Если новая версия расширения содержит тот же реквизит с тем же типом, данные должны сохраниться:
1С (Код)12ДополнительныйРеквизитСтрока 200Если длина увеличена, это обычно безопасно:
1С (Код)1Строка 200 -> Строка 500Если реквизит удален, переименован или изменен его тип, возможна потеря либо недоступность данных.
Поэтому обновление расширения, особенно с изменением структуры данных, нужно выполнять как обычное обновление конфигурации:
1. сделать резервную копию;
2. проверить расширение на ошибки применения;
3. проверить, изменяет ли оно структуру данных;
4. установить расширение на копии базы;
5. проверить старые значения;
6. только потом устанавливать в рабочую базу.## Важный отдельный риск: обмены
Добавленный через расширение реквизит не всегда автоматически участвует в стандартных обменах.
Например, реквизит добавлен в документ:
1С (Код)1Документ.РеализацияТоваровУслуг.КомментарийДляСкладаЕсли документ передается через:
— РИБ;
— синхронизацию данных;
— EnterpriseData;
— обмен с другой базой;
— внешнюю интеграцию,то новый реквизит может не передаваться, если обмен специально не доработан.
В итоге в одной базе значение будет заполнено, а в другой базе останется пустым. Это не потеря при хранении, но с точки зрения бизнеса данные могут «теряться» при обмене.
Для критичных реквизитов нужно отдельно проверить:
— правила регистрации изменений;
— состав выгружаемых данных;
— правила конвертации;
— обработчики отправки и загрузки;
— обмен между базами с разными версиями расширения.## Риск для строковых данных
Для типа «Строка» есть еще несколько особенностей:
— пустая строка и
Неопределеномогут обрабатываться по-разному;
— ограниченная длина может привести к ошибкам при записи;
— неограниченная строка может увеличивать объем хранения и влиять на производительность отчетов;
— перенос строк и специальные символы могут некорректно обрабатываться внешней системой;
— при выгрузке в XML, JSON или Excel могут действовать дополнительные ограничения;
— если строка используется в поиске и отборе, большие значения могут работать медленнее.Это не означает высокий риск потери, но тип и длину строки нужно выбирать осознанно.
## Как безопасно добавить такой реквизит
Практический порядок:
1. Добавить реквизит в расширение.
2. Задать понятное стабильное имя, которое не придется менять.
3. Выбрать нужную длину строки с запасом.
4. Не использовать имя, которое может совпасть с будущим реквизитом основной конфигурации.
5. Проверить, что реквизит доступен в форме и записывается.
6. Сделать копию рабочей базы.
7. Установить расширение на копию.
8. Заполнить несколько тестовых значений.
9. Закрыть базу и снова открыть ее.
10. Проверить значения после обновления расширения.
11. Проверить отключение и повторное включение расширения на копии.
12. Отдельно проверить обмены, если база участвует в обмене.## Если реквизит уже используется
Для защиты данных перед изменением расширения можно выгрузить значения во временный файл или отдельную таблицу. Например, обработкой записать:
— ссылку на объект;
— значение реквизита;
— дату выгрузки;
— идентификатор версии расширения.После обновления сравнить количество заполненных значений и контрольные суммы.
Удалять реквизит из расширения без предварительной выгрузки не следует.
## Оценка риска
Условно риск можно оценить так:
| Сценарий | Риск |
|—|—:|
| Добавили строковый реквизит и больше не меняете его | Низкий |
| Увеличили длину строки | Низкий |
| Обновили расширение без изменения имени и типа реквизита | Низкий |
| Отключили расширение без реструктуризации | Средний, данные могут быть недоступны |
| Удалили реквизит из расширения | Высокий |
| Переименовали через удаление и повторное добавление | Высокий |
| Изменили тип строки на другой тип | Высокий |
| Уменьшили длину строки | Средний или высокий |
| Не проверили обмены | Средний |
| Изменили расширение без резервной копии | Высокий |Для обычного дополнительного строкового реквизита, который добавлен один раз и не удаляется, риск потери данных небольшой. Основная опасность появляется не при добавлении, а при последующем изменении структуры расширения.
В 1С:БГУ статус «Показатели отсутствуют» обычно означает, что по форме установлена специальная отметка об отсутствии показателей. После этого табличная часть формы блокируется для ручного редактирования.
### Как вернуть форму в редактирование
1. Откройте раздел Отчетность или Регламентированные отчеты.
2. Перейдите в Свод отчетов.
3. Установите нужные:
— организацию;
— отчетный период;
— вид отчетности.
4. Откройте нужную форму двойным щелчком.
5. Нажмите Еще или кнопку с тремя точками.
6. Найдите команду с одним из названий:
— Изменить состояние;
— Снять отметку «Показатели отсутствуют»;
— Отменить состояние «Показатели отсутствуют»;
— Разблокировать форму.
7. Снимите признак Показатели отсутствуют.
8. Нажмите Записать или Записать и закрыть.
9. Откройте форму повторно и выполните Заполнить либо внесите данные вручную.В разных версиях БГУ команда может находиться не в форме отчета, а в списке Свод отчетов: выделите строку отчета, нажмите Еще и выберите Изменить состояние отчета.
### Если команда разблокировки отсутствует
Проверьте состояние самого отчета. Форма может быть заблокирована не только признаком «Показатели отсутствуют», но и потому, что отчет:
— утвержден;
— подписан;
— отправлен;
— включен в свод;
— период подготовки отчетности закрыт;
— закрыт регламентом подготовки отчетности.В этом случае нужно:
1. В списке Свод отчетов выделить отчет.
2. Открыть меню Еще.
3. Выбрать Отменить утверждение, Вернуть на доработку или Изменить состояние.
4. Вернуть отчет в состояние Не заполнен или В работе.
5. После этого открыть форму и снять признак Показатели отсутствуют.Если отчет уже включен в свод или отправлен, сначала нужно отменить его включение в свод либо отменить отправку. Иначе отдельная форма останется заблокированной.
### Если форма заблокирована из-за закрытого периода
Проверьте настройки:
Администрирование → Настройки программы → Настройка отчетности
или
Администрирование → Организация и доступ → Даты запрета изменения данных.Если установлена дата запрета редактирования, пользователь не сможет снять блокировку. Временно изменять дату запрета следует только пользователю с административными правами и с учетом учетной политики организации.
### Если статус не меняется
Скорее всего, не хватает прав. Обычно требуется право на изменение регламентированной отчетности и отмену утверждения отчетов. Администратору нужно проверить профиль пользователя, права на:
— изменение регламентированных отчетов;
— изменение свода отчетов;
— отмену утверждения;
— работу с закрытыми периодами.Не рекомендуется исправлять статус напрямую через базу данных или консоль запросов. В БГУ состояние формы связано с документом свода и этапом подготовки отчетности, поэтому прямое изменение может нарушить контроль отчетности.
На практике чаще всего помогает последовательность:
Свод отчетов → выделить форму → Еще → Изменить состояние → снять «Показатели отсутствуют» → Записать → открыть форму заново.
27 октября 2026 в 12:54 в ответ на: Как выявить и устранить причину непрохождения закрытия месяца в 1С? #38923При проблемах с закрытием месяца я не стал бы сразу повторно запускать все операции или помечать ошибочную операцию выполненной. Сначала определил бы конкретный этап и текст ошибки, затем проверил бы исходные данные, исправил причину и только после этого повторил закрытие.
## 1. Зафиксировать состояние базы
Перед исправлениями:
1. Сделать резервную копию информационной базы.
2. Зафиксировать:
— конфигурацию и релиз;
— закрываемый месяц;
— организацию;
— вид учета: бухгалтерский, налоговый, управленческий;
— название операции, на которой остановилось закрытие;
— полный текст ошибки;
— пользователя, который запускал процедуру;
— время запуска.
3. Проверить, не запущено ли параллельно другое закрытие месяца.В 1С:ERP и 1С:КА процедура закрытия часто выполняется фоновым заданием. Проверить его можно примерно по пути:
НСИ и администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания → Фоновые задания
Если предыдущее задание еще выполняется, повторный запуск может не дать результата. Если задание зависло, его нужно корректно завершить или прервать после проверки, что оно действительно не выполняется.
## 2. Определить, на какой операции произошла ошибка
В форме Закрытие месяца нужно открыть результаты выполнения и посмотреть:
— первую операцию с красным крестом;
— текст ошибки;
— список объектов проблемного состояния учета;
— период и организацию, к которым относится ошибка;
— предыдущую невыполненную операцию.Важен именно первый сбой. Ошибки ниже по списку часто являются следствием первой ошибки.
Например, если не выполнился расчет себестоимости, то последующие операции по закрытию счетов, расчету финансового результата и формированию проводок также могут завершиться ошибками. Исправлять их отдельно в таком случае не нужно.
В 1С:Бухгалтерии обычно используется форма:
Операции → Закрытие месяца
В ERP и КА:
Финансовый результат и контроллинг → Закрытие месяца
Названия разделов могут отличаться в зависимости от интерфейса и релиза.
## 3. Проверить дату закрытия и блокировку периода
Проверяю:
1. Правильно ли выбран месяц.
2. Правильно ли указана организация.
3. Не установлен ли запрет изменения данных раньше нужной даты.
4. Не закрыт ли период для пользователя.
5. Не установлен ли запрет редактирования документов задним числом.
6. Не изменились ли документы уже после выполнения отдельных регламентных операций.В 1С:Бухгалтерии проверяется дата запрета изменения данных:
Администрирование → Настройки пользователей и прав → Даты запрета изменения данных
В ERP и КА дополнительно проверяю:
— закрытие периода по организациям;
— доступ пользователя к регламентным операциям;
— права на проведение документов;
— возможность записи регламентных документов;
— доступ к фоновым заданиям.Если документ закрывающего периода был изменен после выполнения регламентных операций, последующие этапы могут быть признаны неактуальными. В этом случае нужно повторно выполнить закрытие начиная с операции, которая стала неактуальной.
## 4. Проверить документы текущего месяца
До запуска закрытия проверяю, все ли первичные документы введены и проведены:
— поступления товаров и услуг;
— реализации товаров и услуг;
— возвраты;
— перемещения;
— списания;
— оприходования;
— производства;
— выпуск продукции;
— услуги производственного характера;
— банковские документы;
— кассовые документы;
— авансовые отчеты;
— документы по основным средствам и НМА;
— документы по зарплате;
— документы по НДС;
— корректировки поступлений и реализаций.Особое внимание обращаю на документы, введенные задним числом после предыдущего закрытия.
Проверяю:
— непроведенные документы;
— документы с ошибками проведения;
— документы, проведенные в неправильной организации;
— документы без договора;
— документы без счета учета;
— документы без статьи расходов;
— документы без подразделения;
— документы без номенклатурной группы;
— документы с неверным видом запасов;
— документы с пустой аналитикой.Для этого использую стандартные отчеты и списки документов с отборами по периоду, организации и проведению.
## 5. Проверить отрицательные и несоответствующие остатки
Для бухгалтерского и налогового учета формирую оборотно-сальдовую ведомость по основным счетам:
— 10;
— 20;
— 23;
— 25;
— 26;
— 41;
— 43;
— 44;
— 45;
— 60;
— 62;
— 76;
— 90.Проверяю:
— отрицательные остатки;
— остатки без аналитики;
— сумму при нулевом количестве;
— количество при нулевой сумме;
— остатки по неправильной организации;
— остатки по неправильному складу;
— остатки по неправильной номенклатурной группе;
— остатки по закрытым или неиспользуемым видам деятельности;
— незакрытые авансы;
— сальдо по договорам, заказам и расчетным документам.Особенно часто расчет себестоимости не выполняется из-за следующих ситуаций:
— товар реализован раньше, чем поступил;
— есть отрицательный остаток по товару;
— количество списано, но сумма осталась;
— сумма есть, а количества уже нет;
— приход отражен по одной аналитике, а расход по другой;
— остаток относится к одной партии, а списание выполнено по другой;
— производственные затраты не распределены;
— расходы отнесены на номенклатурную группу, по которой нет выпуска или реализации.## 6. Проверить взаиморасчеты и восстановить последовательность
Для УПП, КА и старых решений на базе УПП это один из обязательных этапов.
Проверяю восстановление последовательности расчетов по:
— приобретению;
— реализации;
— авансам;
— оплатам;
— расчетным документам;
— валютным операциям;
— суммовым и курсовым разницам.В УПП используется обработка примерно по пути:
Операции → Обработки → Восстановление состояния расчетов с контрагентами
В некоторых интерфейсах:
Регламентные операции → Восстановление последовательности расчетов
Указываю:
— последний день закрываемого месяца;
— организацию;
— восстановление расчетов по приобретению;
— восстановление расчетов по реализации;
— переоценку валютных остатков, если используются валютные операции.После выполнения операции проверяю ее в списке регламентных операций и только после этого продолжаю закрытие.
В УПП также нужно учитывать, что восстановление последовательности может дописывать движения по курсовым и суммовым разницам. Простое последующее перепроведение отдельных документов может удалить эти движения и снова нарушить последовательность.
## 7. Проверить валютные операции
Если организация работает с валютой, проверяю:
— актуальность курсов валют;
— наличие курса на дату документа;
— валюту договора;
— валюту взаиморасчетов;
— валюту управленческого и регламентированного учета;
— документы переоценки;
— наличие курсовых разниц;
— корректность остатков по валютным счетам;
— выполнение операции «Переоценка валютных средств» или аналогичной операции.При ошибках по валюте нужно сначала восстановить последовательность расчетов, затем повторно выполнить переоценку валютных остатков.
## 8. Проверить регистр учета затрат и себестоимость
Если ошибка возникла на этапе расчета себестоимости, проверяю не только бухгалтерские счета, но и специализированные регистры накопления.
В ERP и КА обычно анализируются:
— регистр себестоимости товаров;
— регистр учета затрат;
— регистр движения партий;
— регистр выпуска продукции;
— регистр распределения расходов;
— регистр себестоимости товаров организаций.В УПП и КА дополнительно проверяю соответствие данных регистра «Учет затрат» бухгалтерским данным.
Для поиска проблемы удобно использовать:
НСИ и администрирование → Печатные формы, отчеты и обработки → Универсальный отчет
В универсальном отчете:
1. Выбираю регистр, указанный в тексте ошибки.
2. Выбираю таблицу «Остатки и обороты».
3. Указываю период до конца закрываемого месяца.
4. Устанавливаю отбор по:
— организации;
— номенклатуре;
— виду запасов;
— партии;
— подразделению;
— статье расходов;
— номенклатурной группе;
— виду деятельности НДС.
5. Сверяю количество и сумму на конец периода.Если ошибка содержит текст вроде:
> обнаружены ненулевые остатки по суммам при нулевом остатке по количеству
то нужно искать расхождение в аналитике. Суммовой остаток и количественный остаток должны относиться к одной и той же комбинации аналитик. Если количество находится по одной партии, а сумма по другой, расчет себестоимости может завершиться ошибкой.
## 9. Проверить распределение расходов
В ERP и КА многие ошибки закрытия связаны не с самой процедурой, а с тем, что не выполнено распределение расходов.
Открываю рабочее место:
Производство → Распределение расходов
либо:
Финансовый результат и контроллинг → Доходы и расходы финансового результата → Распределение расходов
Проверяю состояния:
— требуется сформировать документ;
— требуется ручной ввод документа;
— ошибка распределения;
— не настроено распределение расходов;
— не задан способ распределения;
— не указана база распределения;
— обнаружены расходы, которые невозможно распределить.Проверяю настройки:
— статью расходов;
— вариант распределения;
— базу распределения;
— подразделение;
— организацию;
— направление деятельности;
— аналитику расходов;
— номенклатурную группу;
— правила распределения;
— периодичность распределения.Если программа прямо сообщает, что требуется сформировать документы распределения расходов, сначала формирую их и провожу. Если требуется ручной ввод, создаю документ распределения вручную, а не помечаю операцию выполненной.
## 10. Проверить производство и выпуск продукции
Для производственных организаций проверяю:
— все ли производственные документы проведены;
— закрыты ли заказы на производство;
— отражен ли выпуск;
— отражено ли распределение материалов;
— отражены ли услуги сторонних переработчиков;
— нет ли незавершенного производства;
— заполнены ли подразделение и номенклатурная группа;
— заполнена ли статья затрат;
— не превышает ли списание выпуск;
— не превышает ли выпуск переданные материалы;
— не осталось ли продукции без себестоимости;
— нет ли выпуска без затрат;
— нет ли затрат без выпуска.В УПП при партионном учете отдельно проверяю проведение по партиям:
Учет затрат → Партионный учет → Проведение по партиям
В параметрах указываю дату окончания месяца, организацию и необходимые виды учета. После обработки повторно проверяю регламентную операцию восстановления последовательности партионного учета.
## 11. Проверить амортизацию, РБП, спецодежду и НМА
Если ошибка связана с соответствующей регламентной операцией, проверяю:
### Основные средства
— введен ли объект в эксплуатацию;
— указан ли способ начисления амортизации;
— заполнены ли параметры амортизации;
— задано ли подразделение;
— задана ли статья затрат;
— нет ли даты принятия к учету позже даты закрытия;
— не прекращена ли амортизация;
— нет ли ошибок по начислению за предыдущие месяцы.### Нематериальные активы
— приняты ли НМА к учету;
— задан ли способ начисления амортизации;
— заполнена ли статья затрат;
— корректен ли срок полезного использования;
— нет ли отрицательной остаточной стоимости.### Расходы будущих периодов
— заполнен ли период списания;
— указана ли статья расходов;
— указана ли аналитика расходов;
— не закончился ли период списания;
— нет ли суммы к списанию при отсутствии остатка.### Спецодежда и спецоснастка
— отражена ли передача в эксплуатацию;
— указан ли способ погашения стоимости;
— задан ли срок эксплуатации;
— есть ли остаточная стоимость;
— корректно ли указано подразделение.## 12. Проверить зарплату и страховые взносы
Если ошибка возникает на операции начисления зарплаты или страховых взносов, проверяю:
— проведен ли документ начисления зарплаты;
— закрыт ли расчетный период;
— заполнены ли сотрудники;
— нет ли ошибок расчета;
— корректны ли даты приема и увольнения;
— заполнены ли способы отражения зарплаты в учете;
— корректны ли статьи затрат;
— хватает ли данных для расчета страховых взносов;
— проведены ли документы отражения зарплаты в бухгалтерском учете;
— нет ли непроведенных документов выплаты.После исправления перепровожу зарплатные документы и повторно выполняю регламентную операцию.
## 13. Проверить НДС и книги покупок и продаж
Для ошибок по НДС проверяю:
— проведены ли поступления и реализации;
— заполнены ли счета-фактуры;
— сформированы ли записи книги покупок;
— сформированы ли записи книги продаж;
— отражены ли авансы;
— сопоставлены ли авансы и отгрузки;
— нет ли расхождения между датой документа и датой счета-фактуры;
— заполнены ли виды ценности и виды деятельности НДС;
— нет ли документов с незаполненными реквизитами НДС;
— выполнено ли распределение НДС по косвенным расходам;
— нет ли отрицательных сумм или дублирующих записей.В 1С:Бухгалтерии обычно повторно выполняются операции:
— формирование записей книги покупок;
— формирование записей книги продаж;
— распределение НДС косвенных расходов;
— начисление НДС с авансов;
— восстановление НДС.## 14. Проверить ручные операции и корректировки регистров
Отдельно анализирую документы:
— Операция;
— Корректировка регистров;
— Корректировка стоимости;
— Корректировка поступления;
— Корректировка реализации;
— ручное изменение движений документов.В ERP и КА ручная корректировка регистра может привести к тому, что бухгалтерские данные будут отличаться от данных специализированных регистров. Например, проводка по счету затрат есть, а движения в регистре учета затрат нет.
Поэтому сверяю:
— ОСВ по счету;
— движения документа;
— движения по регистрам накопления;
— данные отчета по учету затрат;
— данные регистра себестоимости.Если документ был изменен вручную, не следует без проверки удалять движения или исправлять их произвольно. Нужно определить, какие движения должны формироваться типовым документом, а какие действительно должны быть внесены корректировкой регистров.
## 15. Перепровести документы правильно
Если установлено, что ошибка связана с некорректными движениями, перепровожу документы в хронологическом порядке.
Обычно порядок такой:
1. Отмена проведения проблемного документа.
2. Запись изменений.
3. Повторное проведение документа.
4. Проверка движений.
5. Повторное проведение связанных документов.
6. Восстановление последовательности расчетов.
7. Повторное выполнение регламентных операций начиная с измененного этапа.Если задействована цепочка документов, перепровожу всю цепочку:
— поступление;
— оплата;
— реализация;
— возврат;
— корректировка;
— регламентные документы.При этом нельзя бездумно перепроводить весь период, особенно в УПП, если уже выполнялось восстановление последовательности расчетов и создавались движения по валютным или суммовым разницам.
## 16. Если ошибка появилась после изменения ранее закрытого месяца
Проверяю:
— не изменился ли документ в уже закрытом периоде;
— не перепроведен ли документ задним числом;
— не удален ли регламентный документ;
— не изменена ли ручная операция закрытия;
— не изменены ли движения документа;
— не появились ли записи о неактуальных регламентных операциях.В этом случае закрытие нужно выполнять не обязательно с начала года, а с первой операции и периода, которые стали неактуальными. Но точку перезапуска необходимо определить по состоянию регламентных операций и зависимостям между ними.
Нельзя просто отметить все последующие операции как выполненные, поскольку это скроет проблему и может привести к неправильному финансовому результату.
## 17. Проверить технологический журнал и журнал регистрации
Если текст ошибки технический, например:
— исключительная ситуация;
— блокировка объекта;
— тайм-аут;
— ошибка записи;
— превышено время ожидания;
— недостаточно памяти;
— ошибка СУБД;
— не удалось выполнить фоновое задание,проверяю:
1. Журнал регистрации за время выполнения операции.
2. Технологический журнал.
3. Состояние сервера 1С.
4. Состояние СУБД.
5. Блокировки пользователей.
6. Свободное место на диске.
7. Потребление памяти.
8. Состояние фоновых и регламентных заданий.
9. Не работает ли одновременно обмен, резервное копирование или массовое проведение документов.При блокировке сначала определяю пользователя или фоновое задание, установившее блокировку. Завершать сеанс пользователя следует только после проверки, что он не выполняет важную операцию.
## 18. Повторно выполнить закрытие
После исправления причины:
1. Обновляю форму закрытия месяца.
2. Проверяю, что проблемная операция имеет статус «не выполнено» или «требует повторного выполнения».
3. Запускаю именно эту операцию.
4. Контролирую результат.
5. Затем выполняю последующие операции.
6. Проверяю отчеты по результатам закрытия.
7. Формирую ОСВ и отчеты по себестоимости.
8. Проверяю, что красных ошибок и невыполненных обязательных операций не осталось.Если операция выполнилась, но ее результаты были изменены вручную, необходимо повторить зависимые операции. В ERP и КА последующие этапы могут автоматически перейти в статус «требует повторного выполнения».
## Типовой порядок диагностики по тексту ошибки
| Текст ошибки | Первое направление проверки |
|—|—|
| Отрицательные остатки | ОСВ, остатки по регистру себестоимости, документы списания и реализации |
| Ненулевые суммы при нулевом количестве | Расхождение аналитики партий, номенклатуры, видов запасов |
| Не удалось распределить расходы | Рабочее место «Распределение расходов», настройки статей расходов |
| Нарушена последовательность расчетов | Восстановление последовательности по приобретению и реализации |
| Не выполнен расчет себестоимости | Затраты, выпуск, партии, производство, распределение расходов |
| Нет данных для начисления амортизации | Документы принятия к учету ОС/НМА и параметры амортизации |
| Не сформированы записи книги покупок | Счета-фактуры, поступления, авансы, НДС |
| Не сформированы записи книги продаж | Реализации, авансы, счета-фактуры, корректировки |
| Ошибка при записи регламентного документа | Права, блокировки, период запрета, уникальность документа |
| Фоновое задание уже выполняется | Список фоновых заданий и регламентных операций |
| Ошибка только по одной организации | Настройки организации, учетная политика, счета учета и документы этой организации |
| Ошибка появилась после перепроведения | Неактуальные регламентные операции и зависимые этапы закрытия |Рекомендую посмотреть здесь:
— [Схема закрытия месяца в УПП 1.3](https://infostart.ru/1c/articles/1378631/)
— [«Секреты» закрытия месяца в 1С:ERP](https://infostart.ru/1c/articles/1183650/)
— [Инструкция по закрытию месяца в 1С:Комплексная автоматизация](https://infostart.ru/1c/articles/293095/)
— [Типичные ошибки регламентных операций в 1С:КА 2 и 1С:ERP 2](https://infostart.ru/1c/articles/2100806/)26 октября 2026 в 11:58 в ответ на: Как получить документы «Чек» с движением по регистру за период? #38921Регистр ТоварыНаСкладах является регистром накопления, поэтому для получения документов, которые сформировали движения, используйте виртуальную таблицу Обороты. Поле
Регистраторсодержит ссылку на документ, создавший движение.### Запрос по документам «Чек» за выбранный период
1С (Код)123456789101112131415161718|ВЫБРАТЬ РАЗЛИЧНЫЕ| Чеки.Ссылка КАК Документ,| Чеки.Номер КАК Номер,| Чеки.Дата КАК Дата|ИЗ| Документ.Чек КАК Чеки| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(| &НачалоПериода,| &КонецПериода,| Регистратор,| ) КАК ДвиженияТоваров| ПО ДвиженияТоваров.Регистратор = Чеки.Ссылка|ГДЕ| Чеки.Дата МЕЖДУ &НачалоПериода И &КонецПериода||УПОРЯДОЧИТЬ ПО| Дата,| НомерПараметры запроса устанавливаются так:
1С (Код)12Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));Ключевое слово
РАЗЛИЧНЫЕнеобходимо, поскольку один документ «Чек» может сформировать несколько движений по регистру, например по нескольким товарам. В результате каждый чек будет выведен только один раз.Если необходимо вывести также склад, номенклатуру и количество, запрос можно дополнить полями регистра:
1С (Код)12345678910111213141516171819202122|ВЫБРАТЬ| Чеки.Ссылка КАК Документ,| Чеки.Номер КАК Номер,| Чеки.Дата КАК Дата,| ДвиженияТоваров.Номенклатура,| ДвиженияТоваров.Склад,| ДвиженияТоваров.КоличествоОборот КАК Количество|ИЗ| Документ.Чек КАК Чеки| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(| &НачалоПериода,| &КонецПериода,| Регистратор,| ) КАК ДвиженияТоваров| ПО ДвиженияТоваров.Регистратор = Чеки.Ссылка|ГДЕ| Чеки.Дата МЕЖДУ &НачалоПериода И &КонецПериода||УПОРЯДОЧИТЬ ПО| Дата,| Номер,| НоменклатураВ этом варианте имена
Номенклатура,СкладиКоличествоОборотдолжны соответствовать структуре регистра. Если в регистре, например, ресурс называетсяКоличество, то в виртуальной таблице оборотов он будет называтьсяКоличествоОборот.Если период нужно отбирать не по дате документа, а именно по периоду движений регистра, условие:
1С (Код)12|ГДЕ| Чеки.Дата МЕЖДУ &НачалоПериода И &КонецПериодаможно убрать, так как период уже задается параметрами виртуальной таблицы
Обороты. Но обычно лучше оставить фильтр по дате документа, чтобы в отчет не попали чеки с датой вне выбранного периода.В этом варианте ошибка с преобразованием в
Числои делением на ноль все еще возможна. Исправление с выборкой детализации сделано правильно:1С (Код)1ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();Но в коде остались несколько проблем.
## 1. Главная ошибка: не проверяется остаток партии
В запросе используется
ЛЕВОЕ СОЕДИНЕНИЕ. Если по номенклатуре нет остатков, запрос все равно вернет строку извтТЧТовары, а поля регистра будут заменены на нули:1С (Код)1ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0)В результате во внутреннем цикле может появиться запись:
1С (Код)123КоличествоОстаток = 0СтоимостьОстаток = 0Партия = НеопределеноА затем выполняется:
1С (Код)1234Себестоимость =Количество/ ВыборкаДетальныеЗаписи.КоличествоОстаток* ВыборкаДетальныеЗаписи.СтоимостьОстаток;То есть происходит деление на ноль.
Добавьте проверку в самое начало внутреннего цикла:
1С (Код)12345678910111213141516Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток <= 0 ТогдаПродолжить;КонецЕсли;Количество = Мин(КоличествоСписать,ВыборкаДетальныеЗаписи.КоличествоОстаток);Если Количество <= 0 ТогдаПрервать;КонецЕсли;// дальнейший кодЭто обязательная проверка.
## 2. Исправленный внутренний цикл
Ваш внутренний цикл лучше записать так:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий()И КоличествоСписать > 0 ЦиклКоличествоОстаток =ВыборкаДетальныеЗаписи.КоличествоОстаток;СтоимостьОстаток =ВыборкаДетальныеЗаписи.СтоимостьОстаток;// Пропускаем строку, сформированную левым соединением// при отсутствии остатковЕсли КоличествоОстаток <= 0 ТогдаПродолжить;КонецЕсли;КоличествоСписатьИзПартии =Мин(КоличествоСписать, КоличествоОстаток);Если КоличествоСписатьИзПартии <= 0 ТогдаПрервать;КонецЕсли;Если КоличествоСписатьИзПартии = КоличествоОстаток ТогдаСебестоимость = СтоимостьОстаток;ИначеСебестоимость =КоличествоСписатьИзПартии/ КоличествоОстаток* СтоимостьОстаток;КонецЕсли;Движение = Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =ВидДвиженияНакопления.Расход;Движение.Период = Дата;Движение.Номенклатура =ВыборкаДетальныеЗаписи.Номенклатура;Движение.Партия =ВыборкаДетальныеЗаписи.Партия;Движение.Количество =КоличествоСписатьИзПартии;Движение.Стоимость =Себестоимость;КоличествоСписать =КоличествоСписать- КоличествоСписатьИзПартии;КонецЦикла;Здесь сразу исправлены три момента:
1. Нет деления на ноль.
2. Не создается движение с нулевым количеством.
3. Цикл автоматически прекращается, когда весь товар списан.## 3. Ошибка с переменной
ОтказСейчас у вас:
1С (Код)12345678910111213141516171819Если ВыборкаНоменклатура.Количество >ВыборкаНоменклатура.КоличествоОстаток ТогдаОтказ = Истина;Сообщение = Новый СообщениеПользователю;Сообщение.Текст = СтрШаблон("Недостаточно товара %1 в количестве %2",ВыборкаНоменклатура.НоменклатураПредставление,ВыборкаНоменклатура.Количество -ВыборкаНоменклатура.КоличествоОстаток);Сообщение.Сообщить();КонецЕсли;Если Отказ ТогдаПродолжить;КонецЕсли;После того как
ОтказсталИстина, он уже не сбрасывается. Поэтому все последующие товары будут пропускаться.Формально движения в таком случае не должны записаться, потому что проведение будет отменено. Но логика неудачная. Если нужно прекратить проведение сразу, используйте:
1С (Код)1234567891011121314151617Если ВыборкаНоменклатура.Количество >ВыборкаНоменклатура.КоличествоОстаток ТогдаОтказ = Истина;Сообщение = Новый СообщениеПользователю;Сообщение.Текст = СтрШаблон("Недостаточно товара %1 в количестве %2",ВыборкаНоменклатура.НоменклатураПредставление,ВыборкаНоменклатура.Количество -ВыборкаНоменклатура.КоличествоОстаток);Сообщение.Сообщить();Возврат;КонецЕсли;Но тогда пользователю будет показана только первая ошибка. Для экзамена обычно лучше делать две фазы:
1. Сначала проверить остатки по всем товарам.
2. Только если ошибок нет, формировать движения.## 4. Нельзя полностью полагаться на проверку группового остатка
Проверка:
1С (Код)12Если ВыборкаНоменклатура.Количество >ВыборкаНоменклатура.КоличествоОстаток Тогдаправильная по смыслу. Но надо понимать, что
КоличествоОстатокрассчитывается запросом через:1С (Код)1СУММА(КоличествоОстаток)Если в регистре есть отрицательные остатки по партиям, общая сумма может быть некорректной для списания по партиям. Для нормального учета отрицательных остатков быть не должно, но в учебной базе это иногда встречается из-за неправильных движений.
## 5. Проверьте ресурс регистра
В регистре накопления
ОстаткиНоменклатурыдолжны быть примерно такие поля:1С (Код)1234567Измерения:НоменклатураПартияРесурсы:Количество, тип ЧислоСтоимость, тип ЧислоОсобенно проверьте
Стоимость.В конфигураторе откройте:
1С (Код)1234Регистры накопленияОстаткиНоменклатурыРесурсыСтоимостьТип должен быть:
1С (Код)1ЧислоНапример:
1С (Код)12Длина: 15Точность: 2Если
Стоимостьимеет типСтрока, выражение не будет работать:1С (Код)1Количество / КоличествоОстаток * СтоимостьОстатокРесурс
Количествотакже должен быть числом.## 6. Проблема с партией при отсутствии остатков
Из-за
ЛЕВОЕ СОЕДИНЕНИЕв строке без остатков будет:1С (Код)1ВыборкаДетальныеЗаписи.Партияравно
Неопределеноили пустая ссылка. Если не поставить проверку остатка, вы можете создать движение:1С (Код)12Движение.Партия =ВыборкаДетальныеЗаписи.Партия;с пустой партией.
Проверка:
1С (Код)123Если ВыборкаДетальныеЗаписи.КоличествоОстаток <= 0 ТогдаПродолжить;КонецЕсли;одновременно предотвращает и деление на ноль, и создание движения без партии.
## 7. Можно изменить запрос и убрать фиктивные строки
Вместо
ЛЕВОЕ СОЕДИНЕНИЕможно использовать внутреннее соединение для получения партий с остатками:1С (Код)12345678910111213141516171819202122|ВЫБРАТЬ| втТЧТовары.Номенклатура КАК Номенклатура,| втТЧТовары.Номенклатура.Представление КАК НоменклатураПредставление,| втТЧТовары.Количество КАК Количество,| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,| ОстаткиНоменклатурыОстатки.СтоимостьОстаток КАК СтоимостьОстаток,| ОстаткиНоменклатурыОстатки.Партия КАК Партия|ИЗ| втТЧТовары КАК втТЧТовары| ВНУТРЕННЕЕ СОЕДИНЕНИЕ| РегистрНакопления.ОстаткиНоменклатуры.Остатки(| &МоментВремени,| Номенклатура В| (ВЫБРАТЬ| втТЧТовары.Номенклатура| ИЗ| втТЧТовары КАК втТЧТовары)| ) КАК ОстаткиНоменклатурыОстатки| ПО втТЧТовары.Номенклатура =| ОстаткиНоменклатурыОстатки.Номенклатура|ГДЕ| ОстаткиНоменклатурыОстатки.КоличествоОстаток > 0Но для проверки недостатка товара
ЛЕВОЕ СОЕДИНЕНИЕудобнее, потому что товар без остатка все равно попадет в результат и его можно показать пользователю. Поэтому лучше оставить левое соединение, но обязательно проверятьКоличествоОстаток.## 8. Блокировка может быть неполной
Сейчас блокируется только измерение:
1С (Код)1234ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");Если в регистре есть другие измерения, например:
1С (Код)12345СкладОрганизацияПодразделениеХарактеристикаСериято их тоже нужно учитывать в блокировке. Иначе два документа могут одновременно списывать один и тот же товар по разным складам или организациям.
Например, если в документе есть
Склад, а в регистре есть измерениеСклад, блокировка должна быть настроена также по складу. Конкретная запись зависит от структуры регистра и табличной части.## 9. Не учитываются характеристики, серии или склады
В запросе остатки отбираются только по:
1С (Код)1НоменклатураЕсли учет ведется по характеристикам, сериям или складам, списание будет неправильным. Нужно добавить соответствующие измерения в:
1. временную таблицу;
2. условие соединения;
3. параметры виртуальной таблицы остатков;
4. блокировку данных;
5. движения регистра.Например, нельзя списывать остаток одной характеристики номенклатуры за счет другой, даже если сама номенклатура совпадает.
## 10. FIFO у вас реализован, но только при правильном порядке партий
Сейчас:
1С (Код)12|УПОРЯДОЧИТЬ ПО| ОстаткиНоменклатурыОстатки.Партия.МоментВремениЭто порядок от старых партий к новым, то есть FIFO.
Для LIFO нужен обратный порядок:
1С (Код)12|УПОРЯДОЧИТЬ ПО| ОстаткиНоменклатурыОстатки.Партия.МоментВремени УБЫВЕсли по заданию экзамена метод списания должен настраиваться через регистр сведений, порядок нужно формировать в зависимости от выбранного метода.
## 11. Рекомендуемый минимально исправленный вариант
В вашем коде достаточно заменить внутреннюю часть на следующую:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556КоличествоСписать = ВыборкаНоменклатура.Количество;ВыборкаДетальныеЗаписи =ВыборкаНоменклатура.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий()И КоличествоСписать > 0 ЦиклЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток <= 0 ТогдаПродолжить;КонецЕсли;КоличествоСписатьИзПартии =Мин(КоличествоСписать,ВыборкаДетальныеЗаписи.КоличествоОстаток);Если КоличествоСписатьИзПартии <= 0 ТогдаПрервать;КонецЕсли;Если КоличествоСписатьИзПартии =ВыборкаДетальныеЗаписи.КоличествоОстаток ТогдаСебестоимость =ВыборкаДетальныеЗаписи.СтоимостьОстаток;ИначеСебестоимость =КоличествоСписатьИзПартии/ ВыборкаДетальныеЗаписи.КоличествоОстаток* ВыборкаДетальныеЗаписи.СтоимостьОстаток;КонецЕсли;Движение =Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =ВидДвиженияНакопления.Расход;Движение.Период = Дата;Движение.Номенклатура =ВыборкаДетальныеЗаписи.Номенклатура;Движение.Партия =ВыборкаДетальныеЗаписи.Партия;Движение.Количество =КоличествоСписатьИзПартии;Движение.Стоимость =Себестоимость;КоличествоСписать =КоличествоСписать- КоличествоСписатьИзПартии;КонецЦикла;И исправить обработку недостатка:
1С (Код)1234567891011121314151617Если ВыборкаНоменклатура.Количество >ВыборкаНоменклатура.КоличествоОстаток ТогдаОтказ = Истина;Сообщение = Новый СообщениеПользователю;Сообщение.Текст = СтрШаблон("Недостаточно товара %1 в количестве %2",ВыборкаНоменклатура.НоменклатураПредставление,ВыборкаНоменклатура.Количество -ВыборкаНоменклатура.КоличествоОстаток);Сообщение.Сообщить();Продолжить;КонецЕсли;Главная оставшаяся ошибка в вашем варианте:
1С (Код)12345Количество =Мин(КоличествоСписать,ВыборкаДетальныеЗаписи.КоличествоОстаток);после чего сразу идет расчет стоимости без проверки:
1С (Код)12Количество /ВыборкаДетальныеЗаписи.КоличествоОстатокПри
КоличествоОстаток = 0этот код все еще падает. Поэтому проверка нулевого остатка должна находиться до расчетаКоличествои до расчета себестоимости.23 октября 2026 в 18:18 в ответ на: Как исправить ошибку «Для объекта не определена форма по умолчанию» в 1C? #38917Ошибка «Для объекта не определена форма по умолчанию» означает, что 1С пытается открыть обработку или объект конфигурации, но у него не указана основная форма.
Для экзамена обычно не нужно встраивать консоль запросов в каркасную конфигурацию. Проще и надежнее запускать ее как внешнюю обработку.
## Вариант 1. Запуск внешней консоли запросов
1. Запустите каркасную конфигурацию в режиме Предприятие.
2. Откройте меню:1С (Код)1Файл → Открыть3. Выберите файл консоли запросов с расширением:
1С (Код)1.epf4. Обработка должна открыться отдельным окном.
Не следует запускать файл
.epfдвойным щелчком из проводника Windows. Открывайте его именно из режима 1С через Файл → Открыть.Если в конфигурации используется управляемое приложение, выбирайте консоль запросов, поддерживающую управляемое приложение.
## Если ошибка появляется при открытии файла
.epfСкорее всего, в самой внешней обработке отсутствует форма по умолчанию либо обработка предназначена для обычного приложения.
Проверьте:
1. Откройте файл обработки в Конфигураторе.
2. В дереве конфигурации найдите внешнюю обработку.
3. Откройте раздел Формы.
4. Проверьте, есть ли управляемая форма.
5. Если формы нет, создайте форму.
6. Укажите ее как основную форму обработки.Для управляемого приложения форма должна быть именно управляемой, а не обычной.
Если у обработки есть две формы:
1С (Код)12ФормаФормаОбычногоПриложениято при запуске в тонком клиенте должна использоваться управляемая форма.
## Вариант 2. Консоль добавлена в саму каркасную конфигурацию
Если вы добавляли консоль запросов как объект конфигурации, например обработку
КонсольЗапросов, нужно настроить форму внутри конфигурации.В конфигураторе:
1. Откройте ветку:
1С (Код)1Обработки2. Найдите обработку
КонсольЗапросов.
3. Откройте ее узел Формы.
4. Создайте управляемую форму.
5. В мастере создания формы укажите:
— владельца формы, обработкуКонсольЗапросов;
— управляемый тип формы;
— реквизиты и элементы, если они нужны.
6. В свойствах обработки укажите эту форму как основную.
7. Обновите конфигурацию базы данных.
8. Запустите режим «Предприятие».Но для экзамена это обычно лишняя работа. Внешняя обработка удобнее, поскольку не изменяет экзаменационную конфигурацию.
## Если вы открываете консоль через команду
Например, в коде может быть вызов:
1С (Код)1ОткрытьФорму("Обработка.КонсольЗапросов.Форма.Форма");Такая команда сработает только при наличии формы с точным именем
Форма.Если форма называется иначе, например
ОсновнаяФорма, нужно указывать ее имя:1С (Код)1ОткрытьФорму("Обработка.КонсольЗапросов.Форма.ОсновнаяФорма");Либо можно открывать основную форму обработки без явного имени формы:
1С (Код)1ОткрытьФорму("Обработка.КонсольЗапросов.Форма");Но это сработает только тогда, когда для обработки действительно назначена форма по умолчанию.
## Если консоль опубликована как дополнительная обработка
Если консоль зарегистрирована в каркасной конфигурации через механизм дополнительных отчетов и обработок, проверьте:
1. В обработке существует управляемая форма.
2. Форма назначена основной.
3. Обработка имеет правильный вид:
— дополнительная обработка;
— дополнительный отчет, если это отчет.
4. В настройках подключения указана именно управляемая форма.
5. Версия внешней обработки совместима с версией платформы.После исправления нужно удалить старую регистрацию обработки и добавить ее заново, поскольку в сведениях о подключенной обработке могла сохраниться ссылка на несуществующую форму.
## Самый быстрый способ для экзамена
Рекомендую следующий вариант:
1. Не добавлять консоль запросов в каркасную конфигурацию.
2. Запустить каркас в режиме «Предприятие».
3. Использовать:1С (Код)1Файл → Открыть → КонсольЗапросов.epf4. Работать с запросами во внешней обработке.
5. Запросы, которые проверены в консоли, переносить в модуль объекта или модуль отчета.Если при открытии
.epfвсе равно возникает эта ошибка, используйте другую версию консоли, предназначенную для управляемого приложения, либо откройте обработку в конфигураторе и назначьте управляемую форму основной.23 октября 2026 в 17:18 в ответ на: Как настроить выбор товаров и услуг в 1С без программирования? #38915Да, можно. Для этого в форме документа на колонке табличной части нужно настроить Параметры выбора.
Отдельный справочник
Услугидля этого не требуется. В справочникеНоменклатурадолжен быть реквизит, например:1С (Код)1ВидНоменклатурыТип реквизита:
1С (Код)1ПеречислениеСсылка.ВидыНоменклатурыЗначения перечисления:
1С (Код)12ТоварУслуга## Настройка для табличной части «Товары»
1. Откройте управляемую форму расходной накладной.
2. В дереве элементов формы найдите табличное полеТовары.
3. Раскройте его колонки.
4. Выберите колонкуНоменклатура.
5. В свойствах колонки найдите свойство Параметры выбора.
6. Откройте настройку параметров выбора.
7. Добавьте параметр:1С (Код)12Имя параметра: Отбор.ВидНоменклатурыЗначение: Перечисления.ВидыНоменклатуры.ТоварВ некоторых версиях конфигуратора параметр отображается примерно так:
1С (Код)1Отбор.ВидНоменклатуры = ТоварПосле этого при выборе номенклатуры из этой колонки пользователю будут показываться только элементы, у которых:
1С (Код)1ВидНоменклатуры = Товар## Настройка для табличной части «Услуги»
Аналогично:
1. Выберите табличное поле
Услуги.
2. Раскройте его колонки.
3. Выберите колонкуНоменклатура.
4. Откройте Параметры выбора.
5. Добавьте параметр:1С (Код)12Имя параметра: Отбор.ВидНоменклатурыЗначение: Перечисления.ВидыНоменклатуры.УслугаВ результате настройки будут такими:
| Табличная часть | Параметр отбора | Значение |
|—|—|—|
| Товары |Отбор.ВидНоменклатуры|Товар|
| Услуги |Отбор.ВидНоменклатуры|Услуга|## Как это выглядит программно
Код писать не нужно, но для понимания платформа фактически устанавливает примерно такие параметры:
1С (Код)123456789Элементы.ТоварыНоменклатура.ПараметрыВыбора.Добавить("Отбор.ВидНоменклатуры",Перечисления.ВидыНоменклатуры.Товар);Элементы.УслугиНоменклатура.ПараметрыВыбора.Добавить("Отбор.ВидНоменклатуры",Перечисления.ВидыНоменклатуры.Услуга);В конфигураторе эти же настройки задаются интерактивно через свойство Параметры выбора.
## Важное условие
Реквизит
ВидНоменклатурыдолжен быть доступен для отбора при выборе элемента справочника.Например, если у справочника
Номенклатураесть реквизит:1С (Код)1ВидНоменклатурыто параметр:
1С (Код)1Отбор.ВидНоменклатурыдолжен применяться к этому реквизиту справочника.
Если реквизит называется иначе, например
ТипНоменклатуры, параметр должен быть:1С (Код)1Отбор.ТипНоменклатурыИмя после
Отбор.должно совпадать с именем реквизита справочника.## Если используется иерархия
Можно отбирать товары и услуги по группам, например:
1С (Код)12Группа «Товары»Группа «Услуги»Для этого у колонки можно установить параметр выбора по группе. Но для экзамена это менее надежный вариант.
Недостаток фильтрации по группе:
— элемент можно переместить в другую группу;
— может быть несколько вложенных групп;
— тип позиции определяется структурой справочника, а не ее свойством;
— проверка становится зависимой от конкретных ссылок на группы.Лучше использовать:
1С (Код)1Отбор.ВидНоменклатуры = Товари:
1С (Код)1Отбор.ВидНоменклатуры = УслугаА иерархию оставить только для удобной навигации:
1С (Код)1234567ТоварыКанцелярияХозяйственные товарыУслугиДоставкаМонтаж## Что нужно учесть на экзамене
Параметры выбора фильтруют список при интерактивном подборе. То есть пользователь, открывая форму выбора из колонки
Товары.Номенклатура, увидит товары, а изУслуги.Номенклатура, услуги.Но параметры выбора не являются полноценным контролем целостности данных. Некорректное значение может попасть в табличную часть:
— через программное заполнение;
— через обмен;
— через обработку;
— при изменении структуры конфигурации;
— иногда через нестандартный способ выбора значения.Поэтому практический вариант для экзамена такой:
1. Параметры выбора настроить обязательно, чтобы пользователю было удобно выбирать правильные позиции.
2. При проведении сделать проверку вида номенклатуры, если задание требует надежного контроля данных.Если в условии экзамена прямо сказано «не писать код для ограничения выбора», достаточно настроить параметры выбора. Если требуется гарантировать, что в табличной части никогда не окажется неправильный вид номенклатуры, одних параметров выбора недостаточно.
Для вашей задачи оптимальная настройка формы:
1С (Код)1234567РасходнаяНакладная.Товары.НоменклатураПараметры выбора:Отбор.ВидНоменклатуры = ТоварРасходнаяНакладная.Услуги.НоменклатураПараметры выбора:Отбор.ВидНоменклатуры = УслугаПри этом приходная накладная может использовать ту же номенклатуру, но для ее колонки
Номенклатураследует установить:1С (Код)1Отбор.ВидНоменклатуры = ТоварТак услуги не будут доступны ни в приходной накладной, ни в складском учете, а в расходной накладной будут доступны только в отдельной табличной части
Услуги.23 октября 2026 в 16:14 в ответ на: Как учитывать услуги в справочнике для экзамена Специалист? #38913Для экзамена «Специалист» лучше использовать один справочник
Номенклатура, в котором будут храниться и товары, и услуги. Разделение выполнять не только визуально, а через отдельный реквизит, напримерВидНоменклатуры.Отдельный справочник
Услугив этой задаче создавать не нужно, если в условии прямо не сказано, что услуги должны иметь самостоятельный справочник.## Рекомендуемая структура
### Справочник
НоменклатураРеквизиты:
1С (Код)12НаименованиеВидНоменклатурыРеквизит
ВидНоменклатурыможно сделать перечислением:1С (Код)12ТоварУслугаСам справочник можно сделать иерархическим, но иерархия нужна прежде всего для удобства работы:
1С (Код)12345678ТоварыКанцелярские товарыХозяйственные товарыУслугиДоставкаМонтажКонсультацияОднако для алгоритмов проведения нельзя полагаться только на группы
ТоварыиУслуги. Для проверки типа нужно использовать реквизитВидНоменклатуры.## Почему не стоит создавать отдельный справочник
УслугиЕсли сделать два справочника:
1С (Код)12НоменклатураУслугито появятся лишние сложности:
— в разных табличных частях будут реквизиты разных типов;
— придется отдельно получать наименование товара и услуги;
— усложнятся отчеты по номенклатуре;
— сложнее будет хранить общие характеристики;
— появится риск дублирования логики;
— при необходимости общего отчета товары и услуги придется объединять;
— код документов станет менее универсальным.Например, табличная часть
Товарыбудет содержать:1С (Код)1234НоменклатураТовараКоличествоЦенаСуммаА табличная часть
Услуги:1С (Код)1234УслугаКоличествоЦенаСуммаЭто возможно, но для учебной экзаменационной конфигурации обычно является неоправданным усложнением.
## Почему услуги могут находиться в справочнике, даже если их нет в приходной накладной
Справочник описывает не только то, что закупается. Он содержит все позиции, которые используются в учете:
— товары закупаются и продаются;
— услуги могут оказываться клиентам;
— услуги могут отсутствовать в складском учете;
— услуги могут использоваться только в расходной накладной.Например:
1С (Код)1234Ручка ТоварБумага ТоварДоставка УслугаМонтаж оборудования УслугаПриходная накладная будет использовать только элементы с видом
Товар.Расходная накладная будет иметь две табличные части:
1С (Код)12ТоварыУслугиВ табличной части
Товарывыбираются товары, а в табличной частиУслугивыбираются услуги.## Структура расходной накладной
### Табличная часть
ТоварыРеквизиты:
1С (Код)1234НоменклатураКоличествоЦенаСумма### Табличная часть
УслугиРеквизиты:
1С (Код)1234НоменклатураКоличествоЦенаСуммаОбе колонки
Номенклатурамогут иметь один и тот же тип:1С (Код)1СправочникСсылка.НоменклатураОтличие будет в назначении табличной части:
— из
Товарыдолжны выбираться элементы с видомТовар;
— изУслугидолжны выбираться элементы с видомУслуга.## Как ограничить выбор товаров и услуг
Для экзамена можно сделать проверку в обработчиках изменения строки или при проведении документа.
Например, при проведении расходной накладной:
1С (Код)12345678910111213141516171819202122232425262728293031323334Для Каждого ТекСтрокаТовары Из Товары ЦиклЕсли ТекСтрокаТовары.Номенклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Товар ТогдаСообщить("В табличной части ""Товары"" указана не товарная позиция: "+ Строка(ТекСтрокаТовары.Номенклатура));Отказ = Истина;Продолжить;КонецЕсли;КонецЦикла;Для Каждого ТекСтрокаУслуги Из Услуги ЦиклЕсли ТекСтрокаУслуги.Номенклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Услуга ТогдаСообщить("В табличной части ""Услуги"" указана не услуга: "+ Строка(ТекСтрокаУслуги.Номенклатура));Отказ = Истина;Продолжить;КонецЕсли;КонецЦикла;Если реквизит называется иначе, например
ТипНоменклатуры, в коде нужно использовать фактическое имя реквизита.## Проведение приходной накладной
Приходная накладная содержит только табличную часть
Товары.Поэтому при проведении записываются движения в регистр
ОстаткиНоменклатуры:1С (Код)1234567891011121314151617181920212223242526272829303132Процедура ОбработкаПроведения(Отказ, Режим)Движения.ОстаткиНоменклатуры.Записывать = Истина;Для Каждого ТекСтрока Из Товары ЦиклЕсли ТекСтрока.Номенклатура.ВидНоменклатуры<> Перечисления.ВидыНоменклатуры.Товар ТогдаОтказ = Истина;Сообщить("В приходной накладной можно указывать только товары: "+ Строка(ТекСтрока.Номенклатура));Продолжить;КонецЕсли;Движение = Движения.ОстаткиНоменклатуры.Добавить();Движение.ВидДвижения =ВидДвиженияНакопления.Приход;Движение.Период = Дата;Движение.Номенклатура = ТекСтрока.Номенклатура;Движение.Партия = Ссылка;Движение.Количество = ТекСтрока.Количество;Движение.Стоимость = ТекСтрока.Сумма;КонецЦикла;КонецПроцедурыЕсли в приходной накладной физически существует только табличная часть
Товары, проверку вида номенклатуры можно оставить как контроль целостности.## Проведение расходной накладной
По табличной части
Товарывыполняется списание из регистра остатков.По табличной части
Услугидвижения в регистрОстаткиНоменклатурыне формируются:1С (Код)12345678910Для Каждого ТекСтрокаТовары Из Товары Цикл// Списание товара из регистра остатков// Здесь применяется алгоритм FIFOКонецЦикла;// Табличная часть Услуги не обрабатывается// в регистре складских остатков.Услуги могут участвовать в других регистрах или отчетах, например в регистре продаж:
1С (Код)12345ПродажиНоменклатураКоличествоВыручкаВидНоменклатурыНо в регистр складских остатков услуги записывать не нужно.
## Нужно ли делать иерархический справочник
Иерархический справочник сделать можно. Для экзамена это выглядит нормально, особенно если в условии требуется классификация номенклатуры.
Например:
1С (Код)123456789ТоварыРучкиКарандашиБумагаУслугиДоставкаМонтажРемонтНо иерархия не заменяет реквизит
ВидНоменклатуры.Нежелательный вариант:
1С (Код)123Если Номенклатура.Родитель = ГруппаУслуг Тогда// это услугаКонецЕсли;Проблемы такого подхода:
— элемент можно переместить в другую группу;
— группа может иметь несколько уровней вложенности;
— проверка становится зависимой от структуры справочника;
— бизнес-тип позиции определяется косвенно.Правильнее:
1С (Код)123456Если Номенклатура.ВидНоменклатуры =Перечисления.ВидыНоменклатуры.Услуга Тогда// это услугаКонецЕсли;Группы тогда используются только для навигации и удобства пользователя.
## Что лучше выбрать именно для экзамена
Оптимальный вариант:
1С (Код)12345Справочник НоменклатураИерархический: да, если нужна группировкаРеквизит ВидНоменклатуры:ТоварУслугаДокументы:
1С (Код)123456ПриходнаяНакладнаяТоварыРасходнаяНакладнаяТоварыУслугиРегистр:
1С (Код)12345ОстаткиНоменклатурыИзмерение НоменклатураИзмерение ПартияРесурс КоличествоРесурс СтоимостьЛогика:
1С (Код)123456Приходная накладная:движения только по товарамРасходная накладная:товары списываются из остатков по FIFOуслуги в складском регистре не отражаютсяОтдельный справочник
Услугиимеет смысл только в том случае, если по условию услуги являются самостоятельным объектом учета и должны иметь собственные реквизиты, формы, регистры или документы. В описанной ситуации для экзамена это будет лишняя сущность. -
АвторЗаписи