Ответы в темах
-
АвторСообщения
-
4 августа 2026 в 11:47 в ответ на: Почему ошибка «Элемент не выбран» при вызове ПолучитьОбъект()? #38303
Ошибка «Элемент не выбран!» возникает потому, что метод
Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина)не нашёл элемент справочника и вернул пустое значение (Неопределено). А дальше вы пытаетесь вызватьПолучитьОбъект()у пустого значения, что и даёт ошибку.Как исправить:
1. Проверьте, что
Контрагент.Коддействительно существует и корректен.
2. Добавьте проверку результата поиска перед вызовомПолучитьОбъект().Пример исправленного кода:
1С (Код)12345678910111213141516Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);СправКонтр = Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина);Если ЗначениеЗаполнено(СправКонтр) ТогдаЗанКонтр = СправКонтр.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Контрагент с кодом " + Строка(Контрагент.Код) + " не найден!");КонецЕсли;КонецЕсли;КонецЕсли;Если
Контрагент— это ссылка на элемент справочника, то лучше не искать по коду, а использовать ссылку напрямую:1С (Код)123456789101112131415Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);Если ЗначениеЗаполнено(Контрагент) ТогдаЗанКонтр = Контрагент.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Ссылка на контрагента не заполнена!");КонецЕсли;КонецЕсли;КонецЕсли;Итого: ошибка возникает из-за того, что
НайтиПоКодуне нашёл элемент, и нужно проверить результат перед использованием.4 августа 2026 в 11:38 в ответ на: Как отфильтровать повторяющиеся почты и телефоны в табличной части обработки в « #38301Вот пример, как в вашей обработке во внешней обработке (Альфа-Авто) пройтись по табличной части и отфильтровать повторяющиеся почты и телефоны для каждого контрагента, используя массивы для контроля уникальности:
1С (Код)12345678910111213141516171819202122232425262728293031323334Таблица = Объект.ТабличнаяЧасть.Выгрузить();МассивПочт = Новый Массив;МассивТелефонов = Новый Массив;Для Каждого Строчка Из Таблица ЦиклКонтрагент = Строчка.Контрагент;Почта = Строчка.Почта;Телефон = Строчка.НомерТелефона;// Проверяем почтуЕсли ЗначениеЗаполнено(Почта) Тогда// Формируем уникальный ключ по контрагенту и почтеКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);// Здесь заносим Почту в контактную информацию// Например: ДобавитьПочту(Контрагент, Почта);КонецЕсли;КонецЕсли;// Проверяем телефонЕсли ЗначениеЗаполнено(Телефон) ТогдаКлючТелефона = Строка(Контрагент) + "|" + Телефон;Если МассивТелефонов.Найти(КлючТелефона) = Неопределено ТогдаМассивТелефонов.Добавить(КлючТелефона);// Здесь заносим Телефон в контактную информацию// Например: ДобавитьТелефон(Контрагент, Телефон);КонецЕсли;КонецЕсли;// Если нужно, можно вывести для отладки// Сообщить("Контрагент: " + Строка(Контрагент) + ", Почта: " + Почта + ", Телефон: " + Телефон);КонецЦикла;Объяснение:
— Для почты и телефона создаются отдельные массивы, в которые добавляются уникальные пары «Контрагент|Почта» и «Контрагент|Телефон».
— Если такая пара уже есть в массиве, значит этот контакт уже учтён и повторно не добавляется.
— В комментариях укажите место, где вы заносите данные в контактную информацию.
— ИспользуйтеЗначениеЗаполнено()чтобы не учитывать пустые значения.Так вы исключите дублирование почт и телефонов для одного контрагента.
4 августа 2026 в 10:43 в ответ на: Почему в управляемой форме возникает ошибка «не видно получить макет»? #38299В управляемой форме ошибка «не видно получить макет» при вызове
ПолучитьМакет("Макет")возникает потому, что метод ПолучитьМакет() доступен только в модуле объекта (серверной части) или в модуле обработки, а в модуле управляемой формы (клиентской части) его напрямую вызвать нельзя.В управляемом интерфейсе получить макет нужно через объект, например:
1. В модуле объекта (сервере) создайте функцию, которая вернёт макет:
1С (Код)1234&НаСервереФункция ПолучитьМакетДляФормы()Возврат ЭтотОбъект.ПолучитьМакет("Макет");КонецФункции2. В модуле формы (клиенте) вызовите эту функцию через объект:
1С (Код)12345678910111213141516171819202122&НаКлиентеПроцедура СохранитьНеНайденное(Команда)ТабЧасть = ПроверкаТабЧасти();ТабДок = Новый ТабличныйДокумент;Макет = Объект.ПолучитьМакетДляФормы();ОбластьШапки = Макет.ПолучитьОбласть("Шапка");ОбластьТчасти = Макет.ПолучитьОбласть("Тчасть");ТабДок.Вывести(ОбластьШапки);// Заполнение табличного документа данными из ТабЧастьДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедурыИли, если макет лежит в общем модуле или внешней обработке, вызовите его через соответствующий объект.
Если макет — это файл в ресурсах обработки, то можно получить его так:
1С (Код)1234&НаСервереФункция ПолучитьМакет()Возврат ПолучитьМакет("Макет");КонецФункциии вызвать эту функцию с клиента через объект.
В управляемом интерфейсе нельзя просто так вызвать
ПолучитьМакет()— нужно делать это на сервере и передавать результат на клиент.Рекомендую посмотреть здесь, как работать с макетами в управляемом интерфейсе:
https://infostart.ru/public/394727/
https://infostart.ru/public/704948/Ошибка «Несоответствие типов (параметр номер ‘1’)» при вызове ТабДок.Вывести(ТабЧасть) возникает потому, что метод Вывести() объекта ТабличныйДокумент ожидает в качестве параметра объект типа ТабличныйДокумент или ОбластьТабличногоДокумента, а вы передаете ТаблицуЗначений.
Метод Вывести() не умеет напрямую принимать ТаблицуЗначений.
Как правильно сохранить табличную часть в Excel:
1. Получить ТаблицуЗначений из табличной части (вы это делаете).
2. Создать ТабличныйДокумент.
3. Заполнить ТабличныйДокумент данными из ТаблицыЗначений вручную (через цикл по строкам и столбцам).
4. Сохранить ТабличныйДокумент в файл.Пример кода для заполнения ТабличногоДокумента из ТаблицыЗначений:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839&НаКлиентеПроцедура СохранитьНеНайденное(Команда)// Получаем ТаблицуЗначений с даннымиТабЧасть = ПроверкаТабЧасти();// Создаем ТабличныйДокументТабДок = Новый ТабличныйДокумент;// Заполняем заголовкиДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклТабДок.Область(1, НомерКолонки + 1).Текст = ТабЧасть.Колонки[НомерКолонки].Имя;КонецЦикла;// Заполняем данныеДля НомерСтроки = 0 По ТабЧасть.Количество() - 1 ЦиклДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклЗначение = ТабЧасть[НомерСтроки][НомерКолонки];ТабДок.Область(НомерСтроки + 2, НомерКолонки + 1).Текст = ?(Значение = Неопределено, "", Строка(Значение));КонецЦикла;КонецЦикла;// Диалог выбора файлаДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедуры&НаСервереФункция ПроверкаТабЧасти()Возврат Объект.НеТабличнаяЧасть.Выгрузить();КонецФункцииОбъяснение:
— Метод Вывести() не подходит для ТаблицыЗначений.
— Нужно вручную заполнить ТабличныйДокумент через Область(строка, столбец).Текст.
— Заголовки берутся из имен колонок ТаблицыЗначений.
— Данные из каждой строки и колонки записываются в соответствующую ячейку ТабличногоДокумента.
— После заполнения вызывается Записать() для сохранения в файл Excel.Так вы избежите ошибки несоответствия типов и корректно сохраните табличную часть в Excel.
4 августа 2026 в 7:10 в ответ на: Как добавить столбец «Дата поступления» в таблицу подбора материалов в 1С? #38295Чтобы добавить в форму подбора номенклатуры в документе «Перемещение ТМЗ» дополнительный столбец с датой поступления товара, нужно сделать следующее:
1. Определить, откуда брать дату поступления
В таблице подбора сейчас отображаются остатки номенклатуры, скорее всего, данные берутся из регистра остатков или из документа поступления товаров. Дату поступления нужно получить из соответствующего документа или регистра, где хранится дата прихода товара на склад.2. Изменить запрос подбора
В форме подбора номенклатуры используется запрос, который выбирает данные для таблицы. Нужно добавить в этот запрос поле с датой поступления. Например, если данные берутся из регистра остатков, то нужно присоединить к запросу таблицу документов поступления и взять дату из них.3. Добавить колонку в табличное поле формы
В конфигураторе открыть форму подбора номенклатуры (обычно это форма выбора из справочника или документа). В табличном поле добавить новый столбец «Дата поступления».4. Привязать новый столбец к полю из запроса
В свойствах столбца указать, что он отображает поле с датой поступления из запроса.5. Обновить форму и протестировать
—
### Примерный алгоритм действий в конфигураторе
1. Откройте конфигуратор, найдите объект, в котором реализован подбор номенклатуры для документа «Перемещение ТМЗ». Обычно это форма выбора номенклатуры или форма подбора из регистра остатков.
2. Найдите запрос, который формирует данные для таблицы подбора. Он может выглядеть примерно так:
|ВЫБРАТЬ
| Остатки.Номенклатура,
| Остатки.Количество,
| Остатки.Цена,
| Остатки.Склад,
| … — другие поля
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК Остатки
|ГДЕ
| Остатки.Склад = &Склад3. Добавьте в запрос присоединение к документу поступления товаров, чтобы получить дату поступления. Например:
|ВЫБРАТЬ
| Остатки.Номенклатура,
| Остатки.Количество,
| Остатки.Цена,
| Остатки.Склад,
| Поступления.Дата КАК ДатаПоступления
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Поступления
| ПО Остатки.Номенклатура = Поступления.Номенклатура
| И Остатки.Склад = Поступления.Склад
|ГДЕ
| Остатки.Склад = &Склад(Тут нужно уточнить логику, как именно связать остатки с датой поступления, возможно, по партии или по другому признаку.)
4. В форме подбора добавьте новый столбец в табличное поле, укажите в качестве источника данных поле «ДатаПоступления».
5. Сохраните изменения, обновите конфигурацию, протестируйте.
—
### Важные моменты
— Если в базе нет прямой связи между остатками и датой поступления, возможно, придется использовать регистр партий или другой регистр, где хранится дата прихода каждой партии.
— Если используется стандартный механизм подбора из остатков, то для отображения даты поступления может потребоваться доработка механизма подбора, чтобы он учитывал партии.
— В некоторых случаях проще сделать отдельный справочник партий с датой поступления и подбирать номенклатуру именно из партий.
—
Если нужна конкретная помощь с запросом или формой — приложите код запроса подбора или форму, тогда помогу точнее.
4 августа 2026 в 5:08 в ответ на: Почему при отладке 1С не появляются точки останова и не срабатывают обработчики? #38293Если при запуске отладки в 1С «ничего нет» (нет точек останова, не срабатывают обработчики), проверь следующие моменты:
1. Код действительно выполняется?
— Убедись, что форма, в которой ты поставил код, действительно открывается.
— В процедуреПриОткрытии()поставьСообщить("Форма открыта");— если сообщение не появится, значит форма не запускается.2. Обработчики событий привязаны правильно?
— Для кнопки в свойствах события «Нажатие» должен быть указан именноКнопкаПроверитьНажатие.
— Проверь, что имя процедуры совпадает с тем, что в модуле формы.3. Отладка в клиентском модуле
— Код должен быть помечен директивой&НаКлиенте.
— Если запускаешь в режиме «Конфигуратор», убедись, что запускаешь именно форму, а не просто конфигурацию.4. Поставь точки останова вручную
— В модуле формы поставь точку останова (клик слева от строки кода).
— Запусти отладку и проверь, останавливается ли выполнение.5. Запуск формы
— Если запускаешь обработку из Конфигуратора, открой форму через меню «Формы» → «Открыть» или вызови её программно:1С (Код)1ОткрытьФорму("ИмяФормы", ЭтотОбъект);— Если форма не открывается, код не будет выполняться.
6. Проверь ошибки в журнале регистрации
— Возможно, есть ошибки, которые мешают выполнению кода.7. Если используешь внешний обработчик
— Убедись, что запускаешь именно внешний обработчик, а не конфигурацию.—
Если хочешь, могу помочь проверить твой конкретный код и настройки формы — пришли скриншоты или код модуля формы.
4 августа 2026 в 5:06 в ответ на: Как создать интерфейс игры «Угадай число» в 1С:Предприятие 8.3? #38291Вот полный пример с кодом для кнопок и элементов формы для игры «Угадай число» в 1С:Предприятие 8.3.
—
## 1. Элементы формы
— Поле ввода — имя:
ПолеВвода
Тип: Поле ввода (Число)
Свойства:
— Значение по умолчанию: пусто
— Размеры и расположение — по желанию— Кнопка — имя:
КнопкаПроверить
Подпись: «Проверить»
Событие: Нажатие → обработчикКнопкаПроверитьНажатие— Метка — имя:
МеткаПодсказка
Тип: Надпись (текст)
СвойствоТекст— для вывода подсказок—
## 2. Код модуля формы
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738&НаКлиентеПерем ЗагаданноеЧисло;Перем Попытки;&НаКлиентеПроцедура ПриОткрытии()ЗагаданноеЧисло = СлучайноеЧисло(1, 100);Попытки = 0;ЭлементыФормы.ПолеВвода.Значение = Неопределено;ЭлементыФормы.МеткаПодсказка.Текст = "Игра 'Угадай число'! Введите число от 1 до 100 и нажмите 'Проверить'.";КонецПроцедуры&НаКлиентеПроцедура КнопкаПроверитьНажатие(Кнопка)Попытки = Попытки + 1;Введенное = ЭлементыФормы.ПолеВвода.Значение;Если ТипЗнч(Введенное) <> Тип("Число") ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Введите, пожалуйста, число!";Возврат;КонецЕсли;Если Введенное < 1 Или Введенное > 100 ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Число должно быть от 1 до 100!";Возврат;КонецЕсли;Если Введенное = ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Поздравляем! Вы угадали число за " + Строка(Попытки) + " попыток.";ИначеЕсли Введенное < ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число больше.";ИначеЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число меньше.";КонецЕсли;ЭлементыФормы.ПолеВвода.Значение = Неопределено;ЭлементыФормы.ПолеВвода.УстановитьФокус();КонецПроцедуры—
## 3. Как связать код с кнопкой
— В Конфигураторе откройте форму.
— Выделите кнопкуКнопкаПроверить.
— В свойствах найдите событие «Нажатие».
— Нажмите «Создать» или «Обработать» и вставьте имя процедуры:КнопкаПроверитьНажатие.
— Код процедуры должен быть именно таким, как в примере.—
## 4. Итог
— При открытии формы запускается
ПриОткрытии(), генерируется число.
— При нажатии кнопки вызываетсяКнопкаПроверитьНажатие(), проверяется введённое число и выводится подсказка.—
Если нужно, могу помочь с кодом для кнопки «Начать заново» или другими элементами.
Вот простой пример игры «Угадай число» в 1С:Предприятие 8.3 с полным описанием, что и как сделать.
—
## Шаг 1. Создайте внешнюю обработку
1. Откройте Конфигуратор 1С.
2. Создайте новую внешнюю обработку:
Файл → Новый → Внешняя обработка.
3. Сохраните её под именем, например, «ИграУгадайЧисло».—
## Шаг 2. Создайте форму обработки
1. В дереве объектов обработки откройте раздел «Формы».
2. Создайте новую форму (если её нет).
3. На форму добавьте следующие элементы управления:
— Поле ввода (назовите егоПолеВвода)
— Кнопка (назовите еёКнопкаПроверить, подпись «Проверить»)
— Текстовое поле или метка для вывода подсказок (назовитеМеткаПодсказка)—
## Шаг 3. Настройте форму
— Для кнопки
КнопкаПроверитьсоздайте обработчик события «Нажатие».
— Для формы создайте обработчик события «ПриОткрытии».—
## Шаг 4. Код модуля формы
Откройте модуль формы и вставьте следующий код:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738&НаКлиентеПерем ЗагаданноеЧисло;Перем Попытки;&НаКлиентеПроцедура ПриОткрытии()ЗагаданноеЧисло = СлучайноеЧисло(1, 100);Попытки = 0;ЭлементыФормы.ПолеВвода.Значение = "";ЭлементыФормы.МеткаПодсказка.Текст = "Игра 'Угадай число'! Введите число от 1 до 100 и нажмите 'Проверить'.";КонецПроцедуры&НаКлиентеПроцедура КнопкаПроверитьНажатие(Кнопка)Попытки = Попытки + 1;Введенное = ЭлементыФормы.ПолеВвода.Значение;Если ТипЗнч(Введенное) <> Тип("Число") ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Введите, пожалуйста, число!";Возврат;КонецЕсли;Если Введенное < 1 Или Введенное > 100 ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Число должно быть от 1 до 100!";Возврат;КонецЕсли;Если Введенное = ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Поздравляем! Вы угадали число за " + Строка(Попытки) + " попыток.";ИначеЕсли Введенное < ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число больше.";ИначеЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число меньше.";КонецЕсли;ЭлементыФормы.ПолеВвода.Значение = "";ЭлементыФормы.ПолеВвода.УстановитьФокус();КонецПроцедуры—
## Шаг 5. Запуск игры
1. Сохраните обработку.
2. Запустите её в режиме «1С:Предприятие» (кнопка «Запустить» в конфигураторе).
3. В появившейся форме введите число и нажмите «Проверить».
4. Следуйте подсказкам.—
## Что происходит в коде
— При открытии формы генерируется случайное число от 1 до 100.
— Пользователь вводит число и нажимает кнопку.
— Проверяется корректность ввода.
— Выводится подсказка: больше, меньше или угадал.
— Считается количество попыток.—
## Можно улучшить
— Добавить кнопку «Начать заново» для перезапуска игры.
— Добавить ограничение по количеству попыток.
— Добавить звуки или простую анимацию (через смену картинок).
— Сделать игру в виде внешнего отчёта или расширения.—
Если нужно, могу помочь с расширением функционала или с другими типами игр.
Создать игру в 1С:Предприятие 8 можно, используя возможности платформы по работе с формами, обработчиками событий и графикой (ограниченно). Вот пошаговый план и рекомендации:
1. Выбор типа игры
В 1С лучше делать простые игры с интерфейсом на формах: викторины, головоломки, текстовые квесты, простые аркады с использованием элементов управления (кнопки, картинки, табличные части).2. Создание новой внешней обработки
— В Конфигураторе создайте новую внешнюю обработку (Файл → Новый → Внешняя обработка).
— В модуле обработки будет основной код игры.3. Создание формы
— Создайте форму обработки.
— Добавьте элементы управления: кнопки, картинки, табличные части, поля ввода и т.п.
— Для динамики можно использовать таймер (через обработчик события Таймер).4. Программирование логики игры
— В модуле формы опишите обработчики событий (нажатия кнопок, таймеры).
— Используйте переменные для хранения состояния игры.
— Для вывода графики можно использовать элемент «Картинка» и менять ее источник динамически.
— Для простых анимаций — менять изображения по таймеру.5. Пример простой игры «Угадай число»
— При запуске генерируется случайное число.
— Пользователь вводит число в поле ввода и нажимает кнопку «Проверить».
— Выводится подсказка «Больше», «Меньше» или «Угадал».
— Можно вести счет попыток.6. Использование возможностей 1С
— Сообщить() — для вывода сообщений.
— Таймер формы — для анимаций или ограничений по времени.
— Табличные части — для отображения списков, рекордов и т.п.7. Ограничения
— 1С не предназначена для сложной графики и быстрого рендеринга.
— Нет поддержки OpenGL/DirectX.
— Можно использовать ActiveX или внешние компоненты для расширения, но это усложняет.8. Пример кода для «Угадай число» (модуль формы)
1С (Код)123456789101112131415161718192021Перем ЗагаданноеЧисло;Перем Попытки;Процедура ПриОткрытии()ЗагаданноеЧисло = СлучайноеЧисло(1,100);Попытки = 0;ЭлементыФормы.ПолеВвода.Значение = "";Сообщить("Игра 'Угадай число' началась! Введите число от 1 до 100.");КонецПроцедурыПроцедура КнопкаПроверитьНажатие(Кнопка)Попытки = Попытки + 1;Введенное = ЭлементыФормы.ПолеВвода.Значение;Если Введенное = ЗагаданноеЧисло ТогдаСообщить("Поздравляем! Вы угадали число за " + Строка(Попытки) + " попыток.");ИначеЕсли Введенное < ЗагаданноеЧисло ТогдаСообщить("Загаданное число больше.");ИначеСообщить("Загаданное число меньше.");КонецЕсли;КонецПроцедуры9. Запуск и тестирование
— Запустите обработку в режиме 1С:Предприятие.
— Проверьте логику, интерфейс.10. Рекомендации
— Для обучения и экспериментов — отличный вариант.
— Для более сложных игр лучше использовать специализированные движки.Рекомендую посмотреть уроки по созданию простых приложений и обработок в 1С, например:
https://infostart.ru/public/115188/ — пошаговые уроки по 1С, где можно адаптировать под игру.4 августа 2026 в 4:35 в ответ на: Какие подсистемы и справочники нужны для конфигурации 1С магазина? #38285Для создания конфигурации 1С для продуктового магазина с продажей табака и алкоголя нужно спроектировать структуру с учётом основных бизнес-процессов и специфики алкогольной продукции (ЕГАИС, акцизные марки).
### Основные подсистемы конфигурации
1. Справочники
— Номенклатура (товары)
— Реквизиты: наименование, артикул, единица измерения, группа, вид номенклатуры (алкоголь, табак, прочее)
— Дополнительные реквизиты для алкоголя: код акцизной марки, сведения для ЕГАИС
— Группы номенклатуры (категории товаров)
— Контрагенты (поставщики, покупатели)
— Склады (торговый зал, склад)
— Единицы измерения
— Сотрудники (кассиры, кладовщики)
— Типы цен (розничная, оптовая, специальные)
— Причины списания (для актов списания)
— Лицензии (для контроля продажи алкоголя и табака)2. Документы
— Поступление товаров (приход товара от поставщика, с контролем акцизных марок)
— Реализация товаров (продажа через кассу)
— Возврат товаров от покупателя
— Перемещение товаров (между складами и торговыми залами)
— Списание товаров (брак, просрочка)
— Заказ поставщику (опционально)
— Инвентаризация3. Регистры
— Остатки товаров по складам
— Цены номенклатуры
— Движения алкогольной продукции (для ЕГАИС)
— Продажи по кассам
— Регистр сведений для хранения данных по акцизным маркам и ЕГАИС4. Подсистемы
— Управление товарами и складом
— Продажи и касса
— Закупки и поставщики
— Учет алкогольной продукции (ЕГАИС)
— Отчеты и аналитика
— Администрирование и безопасность (права пользователей, лицензии)5. Обработки и отчеты
— Выгрузка данных в ЕГАИС
— Отчеты по остаткам и продажам алкоголя и табака
— Контроль возрастных ограничений
— Отчеты по движению товаров и инвентаризациям### Рекомендации по реализации
— Используй типовую конфигурацию 1С:Розница или 1С:Управление торговлей как основу — там уже есть много готовых механизмов по учету товаров, продажам, остаткам.
— Для алкоголя и табака добавь отдельные реквизиты и регистры для работы с акцизными марками и ЕГАИС.
— Реализуй подсистему обмена с ЕГАИС (через УТМ) — это обязательное требование для продажи алкоголя.
— Настрой права доступа, чтобы ограничить работу с алкогольной продукцией только уполномоченным сотрудникам.
— Для табака можно вести отдельный журнал продаж, если это требуется законодательством.### Пример структуры справочников (упрощённо)
| Подсистема | Справочник / Документ | Основные реквизиты / особенности |
|————————|——————————-|——————————————————|
| Товары и склад | Номенклатура | Наименование, группа, артикул, вид (алкоголь/табак) |
| | Группы номенклатуры | Иерархия категорий |
| | Склады | Торговый зал, склад |
| | Единицы измерения | |
| Закупки | Контрагенты | Поставщики |
| | Поступление товаров | Акцизные марки, ЕГАИС |
| Продажи | Реализация товаров | Кассовый чек, возраст покупателя |
| | Возврат товаров | |
| | Перемещение товаров | |
| Учет алкогольной продукции | Регистр движения алкоголя | Для ЕГАИС |
| | Лицензии | Данные лицензий на продажу алкоголя и табака |Если нужна помощь с конкретным примером кода или шаблоном конфигурации — могу помочь.
Рекомендую посмотреть примеры и методички по 1С:Розница и ЕГАИС, например:
https://infostart.ru/public/98526/
https://infostart.ru/public/1472601/4 августа 2026 в 4:10 в ответ на: Какие бизнес-процессы важны для магазина с табаком и алкоголем? #38283Привет! Вот основные бизнес-процессы в продуктовом магазине с продажей табака и алкоголя, с учётом специфики этих категорий:
1. Закупка товаров
— Заказ и получение товаров от поставщиков.
— Приёмка с проверкой соответствия накладных, акцизных марок (для алкоголя и табака).
— Ввод поступлений в учет (в 1С — документ Поступление товаров).2. Учет алкогольной и табачной продукции
— Сопоставление номенклатуры с данными ЕГАИС (для алкоголя).
— Контроль акцизных марок и штрихкодов.
— Ведение регистров ЕГАИС (остатки, движения).
— Постановка на баланс в ЕГАИС.
— Списание по актам списания (например, просрочка, брак).3. Хранение и складской учет
— Размещение товаров по складам и торговым залам.
— Контроль остатков, в том числе по алкогольной продукции с учетом требований ЕГАИС.
— Перемещение между складами и торговыми залами.4. Розничная продажа
— Оформление продаж через кассовое оборудование (РМК).
— Пробитие чеков с учетом требований ФЗ-54 и ЕГАИС.
— Проверка возраста покупателя (для алкоголя и табака).
— Автоматический контроль остатков и списание товаров.
— Формирование отчетов по продажам.5. Работа с возвратами и рекламациями
— Возврат товаров от покупателей.
— Возврат поставщикам.
— Корректировка остатков и документов.6. Ведение отчетности
— Формирование отчетов по продажам, остаткам, движениям.
— Отчеты для ЕГАИС (передача данных о продажах алкоголя).
— Отчеты для налоговой и контролирующих органов.7. Управление персоналом
— Назначение прав доступа (кассиры, кладовщики).
— Контроль работы кассиров (смены, отчеты).
— Обучение и контроль соблюдения законодательства (продажа алкоголя и табака).8. Контроль соблюдения законодательства
— Проверка лицензий на продажу алкоголя и табака.
— Контроль возрастных ограничений.
— Ведение журнала продаж табачной продукции (если требуется).
— Ведение журнала кассовых операций.9. Инвентаризация
— Проведение инвентаризаций по всем товарам, с особым вниманием к алкоголю и табаку.
— Сверка остатков с данными ЕГАИС.
— Оформление документов на излишки и недостачи.10. Обслуживание торгового оборудования
— Подключение и настройка фискальных регистраторов.
— Подключение к ЕГАИС через УТМ.
— Обслуживание сканеров, принтеров чеков.Если нужна конкретика по настройке этих процессов в 1С — могу помочь с примерами и ссылками. Рекомендую посмотреть подробные инструкции по ЕГАИС и работе с алкогольной продукцией в 1С Розница, например, здесь: https://infostart.ru/1c/articles/98526/ и https://master1c8.ru/dokumentatsiya-po-1s/roznitsa-8/929/
3 августа 2026 в 15:28 в ответ на: Как создать запрос в конструктора 1С:Розница 2.2 для подсчёта чеков за месяц? #38281Пошагово, как сделать запрос через Конструктор запросов в 1С:Розница 2.2 для подсчёта количества чеков по магазинам за месяц:
1. Открыть Конструктор запросов
— В режиме конфигуратора или в режиме пользователя (если есть доступ) откройте обработку или отчет, где хотите создать запрос.
— В модуле нажмите правой кнопкой мыши и выберите «Конструктор запросов».2. Добавить таблицу-источник
— В окне конструктора нажмите «Добавить таблицу».
— Найдите и выберите таблицу «Документ.ЧекККМ» (или аналогичный документ чеков).
— Нажмите «Добавить» и «Закрыть».3. Выбрать поля для выборки
— В списке полей документа найдите поле, которое отвечает за магазин (обычно «Магазин»). Отметьте его.
— Отметьте поле «Ссылка» (оно понадобится для подсчёта количества чеков).4. Добавить условие по дате
— Перейдите на вкладку «Условия».
— Нажмите «Добавить».
— В поле выберите «Дата» (поле документа ЧекККМ).
— В условии выберите «Между».
— Введите параметры:
— &ДатаНачала
— &ДатаКонца
— Эти параметры будут задаваться при выполнении запроса.5. Настроить группировку
— Перейдите на вкладку «Группировка».
— Добавьте группировку по полю «Магазин».6. Добавить вычисляемое поле для подсчёта
— Перейдите на вкладку «Поля».
— Добавьте новое поле.
— В выражении напишите:
КОЛИЧЕСТВО(Ссылка)
— Дайте этому полю имя, например, «КоличествоЧеков».7. Если хотите вывести название магазина
— Добавьте таблицу «Справочник.Магазины» (или как у вас называется справочник магазинов).
— Свяжите поле «Магазин» из документа с полем «Ссылка» справочника.
— В выборке вместо поля «Магазин» из документа выберите поле «Наименование» из справочника.
— В группировке тоже укажите группировку по «Наименование» из справочника.8. Сохранить и проверить запрос
— Нажмите «ОК» — конструктор сформирует текст запроса.
— Запустите запрос с параметрами даты, чтобы проверить результат.9. Пример параметров для месяца
— &ДатаНачала = ‘2026-08-01’
— &ДатаКонца = ‘2026-08-31 23:59:59’Так вы получите количество чеков по каждому магазину за выбранный месяц.
Если что-то не получается, можно открыть сформированный текст запроса и подкорректировать вручную.
3 августа 2026 в 15:00 в ответ на: Как настроить обмен данными в 1С:Розница 2.2 для нескольких магазинов? #38279Если у вас 1С:Розница 2.2 и несколько магазинов, то для организации обмена данными между магазинами и центральным узлом (например, для синхронизации остатков, цен, документов продаж) используется механизм РИБ (Распределённая Информационная База).
Что важно знать и сделать:
1. Настройка обмена по магазинам
— В конфигурации 2.2 обмен между магазинами и центральным узлом настраивается через РИБ.
— Для каждого магазина создаётся отдельная информационная база (обычно на отдельном сервере или компьютере).
— Центральный узел — это база, где собираются все данные и откуда раздаются обновления.
— В настройках обмена указываются параметры подключения, расписание обмена, фильтры данных.2. Типы обмена
— Обмен по кассе (если магазины используют кассовые места с РМК).
— Обмен по магазину (полный обмен между магазинами и центральным узлом).
— Можно настроить как однонаправленный, так и двунаправленный обмен.3. Что синхронизируется
— Справочники (Номенклатура, Контрагенты, Цены).
— Документы (Продажи, Возвраты, Приходы).
— Остатки товаров.
— Финансовые данные (если нужно).4. Рекомендации по настройке
— Используйте стандартные механизмы обмена, встроенные в конфигурацию.
— Для настройки обмена используйте обработку «Настройка обмена данными» в конфигурации.
— Убедитесь, что у всех баз совпадают версии конфигурации.
— Настройте расписание обмена, чтобы не было конфликтов и перегрузок.
— При большом количестве магазинов и данных подумайте о выделенном сервере для центрального узла.5. Полезные ссылки и документация
— Рекомендую посмотреть методичку по обмену в 1С:Розница 2.2:
https://its.1c.ru/db/metod81#content:4352:hdoc
— Статья с примерами и рекомендациями по обмену между магазинами:
https://master1c8.ru/integratsiya-i-obmen-dannmi/627/Если нужна помощь с конкретной настройкой обмена, настройкой расписания или решением ошибок обмена — уточните, что именно требуется.
3 августа 2026 в 10:31 в ответ на: Как устранить ошибку «неоднозначное поле Номенклатура.Ссылка» в 1С? #38277Ошибка «неоднозначное поле Номенклатура.Ссылка» возникает из-за того, что в запросе несколько таблиц содержат поле с именем «Ссылка» и при обращении к «Номенклатура.Ссылка» система не может однозначно определить, к какой таблице относится это поле.
В вашем запросе:
|ВЫБРАТЬ
| СебестоимостьТоваров.Стоимость КАК Стоимость,
| Номенклатура.Ссылка КАК Номенклатура,
| ВидыЦен.Ссылка КАК ВидЦены,
| ЦеныНоменклатуры.Цена КАК Цена,
| Себестоимость.СтоимостьОстаток / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ КАК Себестоимость,
| ((ЦеныНоменклатуры.Цена — (Себестоимость.СтоимостьОстаток / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ)) / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ) * 100 КАК ПроцентНадбавки
|ИЗ
| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров,
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
| ПО ЦеныНоменклатуры.ВидЦены = ВидыЦен.СсылкаПроблема в том, что в части FROM у вас:
— РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
— РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
— Левое соединение с Номенклатурой и ВидамиЦенНо при этом нет явного соединения между СебестоимостьТоваров и остальными таблицами, и в выборке вы используете поле «Номенклатура.Ссылка», которое встречается и в других таблицах.
—
Как исправить:
1. Явно укажите соединения между таблицами, чтобы не было неоднозначности.
2. Везде, где используете поле «Ссылка», указывайте таблицу, к которой оно относится.
3. В запросе лучше использовать явные JOIN, а не перечислять таблицы через запятую.
—
Пример исправленного запроса с явными соединениями и правильными алиасами:
|ВЫБРАТЬ
| СебестоимостьТоваров.Стоимость КАК Стоимость,
| Номенклатура.Ссылка КАК Номенклатура,
| ВидыЦен.Ссылка КАК ВидЦены,
| ЦеныНоменклатуры.Цена КАК Цена,
| СебестоимостьТоваров.СтоимостьОстаток / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ КАК Себестоимость,
| ((ЦеныНоменклатуры.Цена — (СебестоимостьТоваров.СтоимостьОстаток / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ)) / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ) * 100 КАК ПроцентНадбавки
|ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(&Дата, ) КАК СебестоимостьТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО СебестоимостьТоваров.Номенклатура = ЦеныНоменклатуры.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
| ПО ЦеныНоменклатуры.ВидЦены = ВидыЦен.Ссылка
|ГДЕ
| ВидыЦен.Ссылка = &ВидЦены
| И СебестоимостьТоваров.КоличествоОстаток > 0—
Обратите внимание:
— Используйте Остатки регистра накопления, чтобы получить актуальные остатки и стоимость.
— Явно соединяйте таблицы по ключам.
— Везде указывайте алиасы и поля с алиасами.
—
Если хотите, могу помочь составить запрос под вашу задачу, укажите, что именно хотите получить и из каких регистров.
3 августа 2026 в 9:40 в ответ на: Как очистка диска может устранить ошибку СУБД при обновлении 1С? #38275Ошибка СУБД при обновлении 1С может быть связана с нехваткой места на диске, особенно если речь идёт о сервере баз данных (например, MS SQL Server) и журнале транзакций, который переполняется.
Если на диске, где расположены файлы базы данных или журнал транзакций, мало свободного места, то операции записи в журнал могут завершаться с ошибкой. В таком случае очистка диска и освобождение места действительно может помочь устранить ошибку.
Но важно понимать, что просто очистить диск — это не всегда достаточно. Нужно:
1. Проверить свободное место на диске, где расположены файлы базы 1С и SQL Server (особенно лог транзакций).
2. Если журнал транзакций переполнен, выполнить его усечение (shrink) и сменить режим восстановления базы на SIMPLE, если это допустимо для вашей задачи, чтобы уменьшить размер лога.
3. Очистить временные файлы, кеш 1С, старые логи и неиспользуемые обновления Windows, чтобы освободить место.
4. Перезапустить службы 1С и SQL Server после очистки.Пример SQL-команд для уменьшения лога (где acc_main — имя вашей базы):
|USE acc_main
|ALTER DATABASE acc_main SET RECOVERY SIMPLE
|DBCC SHRINKFILE (acc_main_log, 50)
|ALTER DATABASE acc_main SET RECOVERY FULLЕсли ошибка связана именно с переполнением лога или нехваткой места, то после очистки диска и выполнения этих действий ошибка уйдёт.
Рекомендую также проверить логи 1С и SQL Server для точного определения причины ошибки.
Если нужна помощь с конкретными командами или проверкой — могу подсказать.
-
АвторСообщения