Skip to content

Instantly share code, notes, and snippets.

@marinat
Created January 27, 2026 10:56
Show Gist options
  • Select an option

  • Save marinat/d735853fa8ffbc3eb253a9caa8f5c01b to your computer and use it in GitHub Desktop.

Select an option

Save marinat/d735853fa8ffbc3eb253a9caa8f5c01b to your computer and use it in GitHub Desktop.
накидай базовую конфигурацию для 1с, код какой-нибудь
13:52
Вот базовая структура конфигурации 1С на встроенном языке:
Справочник "Номенклатура"
bsl
// Модуль объекта справочника Номенклатура
Процедура ПередЗаписью(Отказ)
// Проверка заполнения обязательных полей
Если ПустаяСтрока(Наименование) Тогда
Сообщить("Не заполнено наименование номенклатуры!");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
Код = "";
КонецПроцедуры
Документ "РеализацияТоваров"
bsl
// Модуль объекта документа РеализацияТоваров
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Регистрация движений
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
// Обход табличной части
Для Каждого ТекСтрока Из Товары Цикл
// Движение по остаткам (расход)
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрока.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрока.Количество;
// Движение по продажам
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.Номенклатура = ТекСтрока.Номенклатура;
Движение.Количество = ТекСтрока.Количество;
Движение.Сумма = ТекСтрока.Сумма;
КонецЦикла;
// Проведение по регистру бухгалтерии
Движение = Движения.Хозрасчетный.Добавить();
Движение.Период = Дата;
Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01");
Движение.Сумма = Товары.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Не ЗначениеЗаполнено(Контрагент) Тогда
Сообщить("Не указан контрагент!");
Отказ = Истина;
КонецЕсли;
Если Товары.Количество() = 0 Тогда
Сообщить("Не заполнена табличная часть!");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Обработка "ЗагрузкаДанных"
bsl
// Модуль обработки
Процедура ЗагрузитьИзФайла(ПутьКФайлу) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПутьКФайлу, КодировкаТекста.UTF8);
Для НомерСтроки = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
СтрокаТекста = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
МассивЗначений = СтрРазделить(СтрокаТекста, ";");
Если МассивЗначений.Количество() < 3 Тогда
Продолжить;
КонецЕсли;
// Создание элемента справочника
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяНоменклатура.Наименование = МассивЗначений[0];
НоваяНоменклатура.Артикул = МассивЗначений[1];
НоваяНоменклатура.Цена = Число(МассивЗначений[2]);
Попытка
НоваяНоменклатура.Записать();
Исключение
Сообщить("Ошибка записи: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Сообщить("Загрузка завершена");
КонецПроцедуры
Общий модуль "ОбщегоНазначения"
bsl
// Серверные общие процедуры
Функция ПолучитьТекущуюДату() Экспорт
Возврат ТекущаяДата();
КонецФункции
Функция ПолучитьОстатокНоменклатуры(Номенклатура, Склад, НаДату = Неопределено) Экспорт
Если НаДату = Неопределено Тогда
НаДату = ТекущаяДата();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваровОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Номенклатура = &Номенклатура И Склад = &Склад) КАК ОстаткиТоваровОстатки";
Запрос.УстановитьПараметр("МоментВремени", НаДату);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Остаток;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Процедура ВывестиСообщениеПользователю(ТекстСообщения, Поле = "") Экспорт
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстСообщения;
Если Не ПустаяСтрока(Поле) Тогда
Сообщение.Поле = Поле;
КонецЕсли;
Сообщение.Сообщить();
КонецПроцедуры
Отчет "ОстаткиТоваров"
bsl
// Модуль отчета
Процедура СформироватьОтчет() Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Основной");
// Шапка
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ДатаОтчета = Формат(НаДату, "ДЛФ=DD");
ТабличныйДокумент.Вывести(ОбластьШапка);
// Запрос остатков
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
| ОстаткиТоваровОстатки.Склад КАК Склад,
| ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, ) КАК ОстаткиТоваровОстатки
|ГДЕ
| ОстаткиТоваровОстатки.КоличествоОстаток > 0
|УПОРЯДОЧИТЬ ПО
| Номенклатура";
Запрос.УстановитьПараметр("МоментВремени", НаДату);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Пока Выборка.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(Выборка);
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
КонецПроцедуры
Это базовая структура. Нужны какие-то конкретные элементы конфигурации или примеры работы с API 1С?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment